FIX: Ams road display

jira: [Ams road display]

Change-Id: I1669bb588c969fe1cee7149d0d900cda3758deb3
This commit is contained in:
hang.xu 2024-07-22 16:54:48 +08:00 committed by lane.wei
parent f722334f3b
commit 3e8fe435e3
4 changed files with 180 additions and 143 deletions

View File

@ -2935,7 +2935,7 @@ AMSControl::AMSControl(wxWindow *parent, wxWindowID id, const wxPoint &pos, cons
m_Humidity_tip_popup.Position(popup_pos, wxSize(0, 0)); m_Humidity_tip_popup.Position(popup_pos, wxSize(0, 0));
if (m_ams_info.size() > 0) { if (m_ams_info.size() > 0) {
for (auto i = 0; i < m_ams_info.size(); i++) { for (auto i = 0; i < m_ams_info.size(); i++) {
if (m_ams_info[i].ams_id == m_current_show_ams) { if (m_ams_info[i].ams_id == m_current_show_ams_left || m_ams_info[i].ams_id == m_current_show_ams_right) {
m_Humidity_tip_popup.set_humidity_level(m_ams_info[i].ams_humidity); m_Humidity_tip_popup.set_humidity_level(m_ams_info[i].ams_humidity);
} }
} }
@ -2968,8 +2968,22 @@ AMSControl::~AMSControl() {
m_simplebook_ams_right->DeleteAllPages();*/ m_simplebook_ams_right->DeleteAllPages();*/
} }
std::string AMSControl::GetCurentAms() { return m_current_ams; } std::string AMSControl::GetCurentAms(bool right_panel) {
std::string AMSControl::GetCurentShowAms() { return m_current_show_ams; } if (right_panel){
return m_current_ams_right;
}
else{
return m_current_ams_left;
}
}
std::string AMSControl::GetCurentShowAms(bool right_panel) {
if (right_panel){
return m_current_show_ams_right;
}
else{
return m_current_show_ams_left;
}
}
std::string AMSControl::GetCurrentCan(std::string amsid) std::string AMSControl::GetCurrentCan(std::string amsid)
{ {
@ -2984,6 +2998,24 @@ std::string AMSControl::GetCurrentCan(std::string amsid)
return current_can; return current_can;
} }
bool AMSControl::IsAmsInRightPanel(std::string ams_id) {
if (m_nozzle_num == 2){
if (m_ams_item_list[ams_id]->m_info.nozzle_id == 0){
return true;
}
else{
return false;
}
}
else{
for (auto id : m_item_ids[1]){
if (id == ams_id){
return true;
}
}
return false;
}
}
wxColour AMSControl::GetCanColour(std::string amsid, std::string canid) wxColour AMSControl::GetCanColour(std::string amsid, std::string canid)
{ {
@ -3429,6 +3461,9 @@ void AMSControl::CreateAmsNew()
m_down_road->UpdateRight(2, right_init_mode); m_down_road->UpdateRight(2, right_init_mode);
} }
m_extruder->update(2); m_extruder->update(2);
auto it = m_ams_item_list.begin();
m_down_road->UpdatePassRoad(0, true, -1, it->second->m_info, AMSPassRoadSTEP::AMS_ROAD_STEP_NONE);
m_down_road->UpdatePassRoad(0, false, -1, (++it)->second->m_info, AMSPassRoadSTEP::AMS_ROAD_STEP_NONE);
//Refresh(); //Refresh();
//Freeze(); //Freeze();
Thaw(); Thaw();
@ -3560,6 +3595,12 @@ void AMSControl::CreateAmsSingleNozzle()
m_down_road->UpdateRight(1, right_init_mode); m_down_road->UpdateRight(1, right_init_mode);
} }
m_extruder->update(1); m_extruder->update(1);
auto it = m_ams_item_list.begin();
m_down_road->UpdatePassRoad("0", true, -1, it->second->m_info, AMSPassRoadSTEP::AMS_ROAD_STEP_NONE);
if ((++it) != m_ams_item_list.end()){
m_down_road->UpdatePassRoad("0", false, -1, it->second->m_info, AMSPassRoadSTEP::AMS_ROAD_STEP_NONE);
}
//Refresh(); //Refresh();
Thaw(); Thaw();
} }
@ -3619,7 +3660,7 @@ void AMSControl::show_vams(bool show)
//m_panel_virtual->Show(show); //m_panel_virtual->Show(show);
//m_vams_sizer->Show(show); //m_vams_sizer->Show(show);
//m_vams_extra_road->Show(show); //m_vams_extra_road->Show(show);
m_extruder->has_ams(show); /*m_extruder->has_ams(show);
show_vams_kn_value(show); show_vams_kn_value(show);
Layout(); Layout();
@ -3629,7 +3670,7 @@ void AMSControl::show_vams(bool show)
event.SetEventObject(m_vams_lib); event.SetEventObject(m_vams_lib);
wxPostEvent(m_vams_lib, event); wxPostEvent(m_vams_lib, event);
} }
} }*/
} }
void AMSControl::show_vams_kn_value(bool show) void AMSControl::show_vams_kn_value(bool show)
@ -3710,8 +3751,8 @@ void AMSControl::ReadExtInfo(MachineObject* obj) {
void AMSControl::UpdateAms(std::vector<AMSinfo> ams_info, std::vector<AMSinfo>ext_info, std::string dev_id, bool is_reset, bool test) void AMSControl::UpdateAms(std::vector<AMSinfo> ams_info, std::vector<AMSinfo>ext_info, std::string dev_id, bool is_reset, bool test)
{ {
if (!test){ if (!test){
std::string curr_ams_id = GetCurentAms(); /*std::string curr_ams_id = GetCurentAms();
std::string curr_can_id = GetCurrentCan(curr_ams_id); std::string curr_can_id = GetCurrentCan(curr_ams_id);*/
int nozzle_num = ext_info.size(); int nozzle_num = ext_info.size();
@ -3784,11 +3825,11 @@ void AMSControl::UpdateAms(std::vector<AMSinfo> ams_info, std::vector<AMSinfo>ex
} }
} }
if (m_current_show_ams.empty() && !is_reset) { /*if (m_current_show_ams.empty() && !is_reset) {
if (ext_info.size() > 0) { if (ext_info.size() > 0) {
SwitchAms(ext_info[0].ams_id); SwitchAms(ext_info[0].ams_id);
} }
} }*/
//m_simplebook_ams_left->SetSelection(m_simplebook_ams_left->m_first); //m_simplebook_ams_left->SetSelection(m_simplebook_ams_left->m_first);
} }
@ -3909,11 +3950,11 @@ void AMSControl::UpdateAms(std::vector<AMSinfo> ams_info, std::vector<AMSinfo>ex
} }
} }
if (m_current_show_ams.empty() && !is_reset) { /*if (m_current_show_ams.empty() && !is_reset) {
if (ams_info.size() > 0) { if (ams_info.size() > 0) {
SwitchAms(ams_info[0].ams_id); SwitchAms(ams_info[0].ams_id);
} }
} }*/
} }
@ -4226,23 +4267,25 @@ void AMSControl::AddAmsPreview(std::vector<AMSinfo>single_info) {
void AMSControl::SwitchAms(std::string ams_id) void AMSControl::SwitchAms(std::string ams_id)
{ {
if(ams_id == m_current_show_ams){return;} if(ams_id == m_current_show_ams_left || ams_id == m_current_show_ams_right){return;}
if (m_current_show_ams != ams_id) { bool is_in_right = IsAmsInRightPanel(ams_id);
m_current_show_ams = ams_id; if (is_in_right){
m_extruder->OnAmsLoading(false); if (m_current_show_ams_right != ams_id) {
} m_current_show_ams_right = ams_id;
/*if (ams_id != std::to_string(VIRTUAL_TRAY_MAIN_ID)) {
if (m_current_show_ams != ams_id) {
m_current_show_ams = ams_id;
m_extruder->OnAmsLoading(false); m_extruder->OnAmsLoading(false);
} }
}*/ }
else{
m_current_show_ams_left = ams_id;
m_extruder->OnAmsLoading(false);
if (m_nozzle_num > 1) m_extruder->OnAmsLoading(false, 1);
}
for (auto prv_it : m_ams_preview_list) { for (auto prv_it : m_ams_preview_list) {
AMSPreview* prv = prv_it.second; AMSPreview* prv = prv_it.second;
if (prv->m_amsinfo.ams_id == m_current_show_ams) { if (prv->m_amsinfo.ams_id == m_current_show_ams_left || prv->m_amsinfo.ams_id == m_current_show_ams_right) {
prv->OnSelected(); prv->OnSelected();
m_current_select = ams_id; m_current_select = ams_id;
@ -4258,16 +4301,12 @@ void AMSControl::SwitchAms(std::string ams_id)
} }
} }
} }
if (is_in_right){
//if (!ready_selected) { m_current_ams_right = ams_id;
// m_current_ams = std::to_string(VIRTUAL_TRAY_MAIN_ID); }
// //m_vams_lib->OnSelected(); else{
//} m_current_ams_left = ams_id;
//else { }
// m_current_ams = ams_id;
// //m_vams_lib->UnSelected();
//}
m_current_ams = ams_id;
} else { } else {
prv->UnSelected(); prv->UnSelected();
@ -4288,130 +4327,106 @@ void AMSControl::SwitchAms(std::string ams_id)
for (auto ams_item : m_ams_item_list) { for (auto ams_item : m_ams_item_list) {
AmsItem* item = ams_item.second; AmsItem* item = ams_item.second;
if (item->m_info.ams_id == ams_id) { if (item->m_info.ams_id == ams_id) {
/*if (m_ams_model == AMSModel::GENERIC_AMS) {
if (item->m_info.nozzle_id == 1)
{
m_simplebook_ams_left->SetSelection(item->m_selection);
}
else if (item->m_info.nozzle_id == 0)
{
m_simplebook_ams_right->SetSelection(item->m_selection);
}
}*/
if (m_nozzle_num == 2) { if (m_nozzle_num == 2) {
if (item->m_info.nozzle_id == 1) if (item->m_info.nozzle_id == 1){
{
m_simplebook_ams_left->SetSelection(item->m_selection); m_simplebook_ams_left->SetSelection(item->m_selection);
if (item->m_info.cans.size() == 4) if (item->m_info.cans.size() == 4){
{
m_down_road->UpdateLeft(m_nozzle_num, AMSRoadShowMode::AMS_ROAD_MODE_FOUR); m_down_road->UpdateLeft(m_nozzle_num, AMSRoadShowMode::AMS_ROAD_MODE_FOUR);
} }
else { else {
AMSRoadShowMode mode = AMSRoadShowMode::AMS_ROAD_MODE_SINGLE; AMSRoadShowMode mode = AMSRoadShowMode::AMS_ROAD_MODE_SINGLE;
for (auto it : pair_id) for (auto it : pair_id){
{ if (it.first == ams_id || it.second == ams_id){
if (it.first == ams_id || it.second == ams_id)
{
mode = AMSRoadShowMode::AMS_ROAD_MODE_DOUBLE; mode = AMSRoadShowMode::AMS_ROAD_MODE_DOUBLE;
break; break;
} }
} }
m_down_road->UpdateLeft(m_nozzle_num, mode); m_down_road->UpdateLeft(m_nozzle_num, mode);
m_down_road->UpdatePassRoad(item->m_info.current_can_id, true, -1, item->m_info, AMSPassRoadSTEP::AMS_ROAD_STEP_NONE);
} }
} }
else if (item->m_info.nozzle_id == 0) else if (item->m_info.nozzle_id == 0){
{
m_simplebook_ams_right->SetSelection(item->m_selection); m_simplebook_ams_right->SetSelection(item->m_selection);
if (item->m_info.cans.size() == 4) if (item->m_info.cans.size() == 4){
{
m_down_road->UpdateRight(m_nozzle_num, AMSRoadShowMode::AMS_ROAD_MODE_FOUR); m_down_road->UpdateRight(m_nozzle_num, AMSRoadShowMode::AMS_ROAD_MODE_FOUR);
} }
else { else {
AMSRoadShowMode mode = AMSRoadShowMode::AMS_ROAD_MODE_SINGLE; AMSRoadShowMode mode = AMSRoadShowMode::AMS_ROAD_MODE_SINGLE;
for (auto it : pair_id) for (auto it : pair_id){
{ if (it.first == ams_id || it.second == ams_id){
if (it.first == ams_id || it.second == ams_id)
{
mode = AMSRoadShowMode::AMS_ROAD_MODE_DOUBLE; mode = AMSRoadShowMode::AMS_ROAD_MODE_DOUBLE;
break; break;
} }
} }
m_down_road->UpdateRight(m_nozzle_num, mode); m_down_road->UpdateRight(m_nozzle_num, mode);
m_down_road->UpdatePassRoad(item->m_info.current_can_id, false, -1, item->m_info, AMSPassRoadSTEP::AMS_ROAD_STEP_NONE);
} }
} }
} }
else if (m_nozzle_num == 1) { else if (m_nozzle_num == 1) {
for (auto id : m_item_ids[0]) for (auto id : m_item_ids[0]){
{ if (id == item->m_info.ams_id){
if (id == item->m_info.ams_id)
{
m_simplebook_ams_left->SetSelection(item->m_selection); m_simplebook_ams_left->SetSelection(item->m_selection);
if (item->m_info.cans.size() == 4) if (item->m_info.cans.size() == 4){
{
m_down_road->UpdateLeft(m_nozzle_num, AMSRoadShowMode::AMS_ROAD_MODE_FOUR); m_down_road->UpdateLeft(m_nozzle_num, AMSRoadShowMode::AMS_ROAD_MODE_FOUR);
} }
else { else {
AMSRoadShowMode mode = AMSRoadShowMode::AMS_ROAD_MODE_SINGLE; AMSRoadShowMode mode = AMSRoadShowMode::AMS_ROAD_MODE_SINGLE;
for (auto it : pair_id) for (auto it : pair_id){
{ if (it.first == ams_id || it.second == ams_id){
if (it.first == ams_id || it.second == ams_id)
{
mode = AMSRoadShowMode::AMS_ROAD_MODE_DOUBLE; mode = AMSRoadShowMode::AMS_ROAD_MODE_DOUBLE;
break; break;
} }
} }
m_down_road->UpdateLeft(m_nozzle_num, mode); m_down_road->UpdateLeft(m_nozzle_num, mode);
m_down_road->UpdatePassRoad(item->m_info.current_can_id, true, -1, item->m_info, AMSPassRoadSTEP::AMS_ROAD_STEP_NONE);
} }
} }
} }
for (auto id : m_item_ids[1]) for (auto id : m_item_ids[1])
{ {
if (id == item->m_info.ams_id) if (id == item->m_info.ams_id){
{
m_simplebook_ams_right->SetSelection(item->m_selection); m_simplebook_ams_right->SetSelection(item->m_selection);
if (item->m_info.cans.size() == 4){
if (item->m_info.cans.size() == 4)
{
m_down_road->UpdateRight(m_nozzle_num, AMSRoadShowMode::AMS_ROAD_MODE_FOUR); m_down_road->UpdateRight(m_nozzle_num, AMSRoadShowMode::AMS_ROAD_MODE_FOUR);
} }
else { else {
AMSRoadShowMode mode = AMSRoadShowMode::AMS_ROAD_MODE_SINGLE; AMSRoadShowMode mode = AMSRoadShowMode::AMS_ROAD_MODE_SINGLE;
for (auto it : pair_id) for (auto it : pair_id)
{ {
if (it.first == ams_id || it.second == ams_id) if (it.first == ams_id || it.second == ams_id){
{
mode = AMSRoadShowMode::AMS_ROAD_MODE_DOUBLE; mode = AMSRoadShowMode::AMS_ROAD_MODE_DOUBLE;
break; break;
} }
} }
m_down_road->UpdateRight(m_nozzle_num, mode); m_down_road->UpdateRight(m_nozzle_num, mode);
m_down_road->UpdatePassRoad(item->m_info.current_can_id, false, -1, item->m_info, AMSPassRoadSTEP::AMS_ROAD_STEP_NONE);
} }
} }
} }
} }
} }
} }
//update extruder //update extruder
for (auto i = 0; i < m_ams_info.size(); i++) { for (auto i = 0; i < m_ams_info.size(); i++) {
if (m_ams_info[i].ams_id == m_current_ams) { if (m_ams_info[i].ams_id == ams_id) {
switch (m_ams_info[i].current_step) { switch (m_ams_info[i].current_step) {
case AMSPassRoadSTEP::AMS_ROAD_STEP_NONE: m_extruder->TurnOff(); break; case AMSPassRoadSTEP::AMS_ROAD_STEP_NONE: m_extruder->TurnOff(); break;
case AMSPassRoadSTEP::AMS_ROAD_STEP_COMBO_LOAD_STEP1: m_extruder->TurnOff(); break; case AMSPassRoadSTEP::AMS_ROAD_STEP_COMBO_LOAD_STEP1: m_extruder->TurnOff(); break;
case AMSPassRoadSTEP::AMS_ROAD_STEP_COMBO_LOAD_STEP2: m_extruder->TurnOn(GetCanColour(m_current_ams, m_ams_info[i].current_can_id)); break; case AMSPassRoadSTEP::AMS_ROAD_STEP_COMBO_LOAD_STEP2: m_extruder->TurnOn(GetCanColour(ams_id, m_ams_info[i].current_can_id)); break;
case AMSPassRoadSTEP::AMS_ROAD_STEP_COMBO_LOAD_STEP3: m_extruder->TurnOn(GetCanColour(m_current_ams, m_ams_info[i].current_can_id)); break; case AMSPassRoadSTEP::AMS_ROAD_STEP_COMBO_LOAD_STEP3: m_extruder->TurnOn(GetCanColour(ams_id, m_ams_info[i].current_can_id)); break;
} }
SetAmsStep(ams_id, m_ams_info[i].current_can_id, AMSPassRoadType::AMS_ROAD_TYPE_LOAD, m_ams_info[i].current_step);
}
}
for (auto i = 0; i < m_ext_info.size(); i++) {
if (m_ext_info[i].ams_id == ams_id) {
SetAmsStep(ams_id, "0", AMSPassRoadType::AMS_ROAD_TYPE_LOAD, m_ext_info[i].current_step);
} }
} }
} }
@ -4660,7 +4675,6 @@ void AMSControl::SetAmsStep(std::string ams_id, std::string canid, AMSPassRoadTy
auto amsit = m_ams_item_list.find(ams_id); auto amsit = m_ams_item_list.find(ams_id);
bool notfound = false; bool notfound = false;
if (amsit != m_ams_item_list.end()) { if (amsit != m_ams_item_list.end()) {
ams = amsit->second; ams = amsit->second;
} }
@ -4684,15 +4698,9 @@ void AMSControl::SetAmsStep(std::string ams_id, std::string canid, AMSPassRoadTy
m_last_tray_id = canid; m_last_tray_id = canid;
auto model = AMSModel::EXTRA_AMS; auto model = AMSModel::EXTRA_AMS;
bool left = false; bool left = !IsAmsInRightPanel(ams_id);
for (auto id : m_item_ids[0]){
if (id == ams_id){
left = true;
break;
}
}
int length = -1;
int length = -1;
if (ams->m_info.cans.size() == 4){ if (ams->m_info.cans.size() == 4){
length = left ? 135 : 149; length = left ? 135 : 149;
@ -4719,26 +4727,24 @@ void AMSControl::SetAmsStep(std::string ams_id, std::string canid, AMSPassRoadTy
if (model == AMSModel::GENERIC_AMS || model == AMSModel::N3F_AMS || model == AMSModel::EXTRA_AMS) { if (model == AMSModel::GENERIC_AMS || model == AMSModel::N3F_AMS || model == AMSModel::EXTRA_AMS) {
if (step == AMSPassRoadSTEP::AMS_ROAD_STEP_NONE) { if (step == AMSPassRoadSTEP::AMS_ROAD_STEP_NONE) {
//cans->SetAmsStep(canid, type, AMSPassRoadSTEP::AMS_ROAD_STEP_NONE); //cans->SetAmsStep(canid, type, AMSPassRoadSTEP::AMS_ROAD_STEP_NONE);
m_down_road->UpdatePassRoad(canid, true, -1, ams->m_info, AMSPassRoadSTEP::AMS_ROAD_STEP_NONE); m_down_road->UpdatePassRoad(canid, left, -1, ams->m_info, AMSPassRoadSTEP::AMS_ROAD_STEP_NONE);
m_down_road->UpdatePassRoad(canid, false, -1, ams->m_info, AMSPassRoadSTEP::AMS_ROAD_STEP_NONE);
ams->SetAmsStep(ams_id, canid, type, AMSPassRoadSTEP::AMS_ROAD_STEP_NONE); ams->SetAmsStep(ams_id, canid, type, AMSPassRoadSTEP::AMS_ROAD_STEP_NONE);
m_extruder->OnAmsLoading(false); m_extruder->OnAmsLoading(false, ams->m_info.nozzle_id);
} }
if (step == AMSPassRoadSTEP::AMS_ROAD_STEP_COMBO_LOAD_STEP1) { if (step == AMSPassRoadSTEP::AMS_ROAD_STEP_COMBO_LOAD_STEP1) {
m_down_road->UpdatePassRoad(canid, left, length, ams->m_info, AMSPassRoadSTEP::AMS_ROAD_STEP_1); m_down_road->UpdatePassRoad(canid, left, length, ams->m_info, AMSPassRoadSTEP::AMS_ROAD_STEP_1);
ams->SetAmsStep(ams_id, canid, type, AMSPassRoadSTEP::AMS_ROAD_STEP_1); ams->SetAmsStep(ams_id, canid, type, AMSPassRoadSTEP::AMS_ROAD_STEP_1);
m_extruder->OnAmsLoading(false); m_extruder->OnAmsLoading(false, ams->m_info.nozzle_id);
} }
if (step == AMSPassRoadSTEP::AMS_ROAD_STEP_COMBO_LOAD_STEP2) { if (step == AMSPassRoadSTEP::AMS_ROAD_STEP_COMBO_LOAD_STEP2) {
m_down_road->UpdatePassRoad(canid, left, length, ams->m_info, AMSPassRoadSTEP::AMS_ROAD_STEP_2); m_down_road->UpdatePassRoad(canid, left, length, ams->m_info, AMSPassRoadSTEP::AMS_ROAD_STEP_2);
ams->SetAmsStep(ams_id, canid, type, AMSPassRoadSTEP::AMS_ROAD_STEP_2); ams->SetAmsStep(ams_id, canid, type, AMSPassRoadSTEP::AMS_ROAD_STEP_2);
if (m_current_show_ams == ams_id) { if (m_current_show_ams_left == ams_id || m_current_show_ams_right == ams_id) {
m_extruder->OnAmsLoading(true, ams->m_info.nozzle_id, ams->GetTagColr(canid)); m_extruder->OnAmsLoading(true, ams->m_info.nozzle_id, ams->GetTagColr(canid));
} }
} }
if (step == AMSPassRoadSTEP::AMS_ROAD_STEP_COMBO_LOAD_STEP3) { if (step == AMSPassRoadSTEP::AMS_ROAD_STEP_COMBO_LOAD_STEP3) {
m_down_road->UpdatePassRoad(canid, left, length, ams->m_info, AMSPassRoadSTEP::AMS_ROAD_STEP_3); m_down_road->UpdatePassRoad(canid, left, length, ams->m_info, AMSPassRoadSTEP::AMS_ROAD_STEP_3);
ams->SetAmsStep(ams_id, canid, type, AMSPassRoadSTEP::AMS_ROAD_STEP_3); ams->SetAmsStep(ams_id, canid, type, AMSPassRoadSTEP::AMS_ROAD_STEP_3);
@ -4748,8 +4754,7 @@ void AMSControl::SetAmsStep(std::string ams_id, std::string canid, AMSPassRoadTy
else if(model == AMSModel::NO_AMS || model == AMSModel::SINGLE_AMS) { else if(model == AMSModel::NO_AMS || model == AMSModel::SINGLE_AMS) {
if (step == AMSPassRoadSTEP::AMS_ROAD_STEP_NONE) { if (step == AMSPassRoadSTEP::AMS_ROAD_STEP_NONE) {
//cans->SetAmsStep(canid, type, AMSPassRoadSTEP::AMS_ROAD_STEP_NONE); //cans->SetAmsStep(canid, type, AMSPassRoadSTEP::AMS_ROAD_STEP_NONE);
m_down_road->UpdatePassRoad(canid, true, -1, ams->m_info, AMSPassRoadSTEP::AMS_ROAD_STEP_NONE); m_down_road->UpdatePassRoad(canid, left, -1, ams->m_info, AMSPassRoadSTEP::AMS_ROAD_STEP_NONE);
m_down_road->UpdatePassRoad(canid, false, -1, ams->m_info, AMSPassRoadSTEP::AMS_ROAD_STEP_NONE);
ams->SetAmsStep(ams_id, canid, type, AMSPassRoadSTEP::AMS_ROAD_STEP_NONE); ams->SetAmsStep(ams_id, canid, type, AMSPassRoadSTEP::AMS_ROAD_STEP_NONE);
m_extruder->OnAmsLoading(false); m_extruder->OnAmsLoading(false);
} }
@ -4763,7 +4768,7 @@ void AMSControl::SetAmsStep(std::string ams_id, std::string canid, AMSPassRoadTy
if (step == AMSPassRoadSTEP::AMS_ROAD_STEP_COMBO_LOAD_STEP2) { if (step == AMSPassRoadSTEP::AMS_ROAD_STEP_COMBO_LOAD_STEP2) {
m_down_road->UpdatePassRoad(canid, left, length, ams->m_info, AMSPassRoadSTEP::AMS_ROAD_STEP_2); m_down_road->UpdatePassRoad(canid, left, length, ams->m_info, AMSPassRoadSTEP::AMS_ROAD_STEP_2);
ams->SetAmsStep(ams_id, canid, type, AMSPassRoadSTEP::AMS_ROAD_STEP_2); ams->SetAmsStep(ams_id, canid, type, AMSPassRoadSTEP::AMS_ROAD_STEP_2);
if (m_current_show_ams == ams_id) { if (m_current_show_ams_left == ams_id || m_current_show_ams_right == ams_id) {
m_extruder->OnAmsLoading(true, ams->m_info.nozzle_id, ams->GetTagColr(canid)); m_extruder->OnAmsLoading(true, ams->m_info.nozzle_id, ams->GetTagColr(canid));
} }
} }
@ -4819,13 +4824,19 @@ void AMSControl::SetAmsStep(std::string ams_id, std::string canid, AMSPassRoadTy
m_ams_info[i].current_can_id = canid; m_ams_info[i].current_can_id = canid;
} }
} }
for (auto i = 0; i < m_ext_info.size(); i++) {
if (m_ext_info[i].ams_id == ams_id) {
m_ext_info[i].current_step = step;
m_ext_info[i].current_can_id = canid;
}
}
} }
void AMSControl::on_filament_load(wxCommandEvent &event) void AMSControl::on_filament_load(wxCommandEvent &event)
{ {
m_button_extruder_back->Disable(); m_button_extruder_back->Disable();
for (auto i = 0; i < m_ams_info.size(); i++) { for (auto i = 0; i < m_ams_info.size(); i++) {
if (m_ams_info[i].ams_id == m_current_ams) { m_ams_info[i].current_action = AMSAction::AMS_ACTION_LOAD; } if (m_ams_info[i].ams_id == m_current_ams_left || m_ams_info[i].ams_id == m_current_ams_right) { m_ams_info[i].current_action = AMSAction::AMS_ACTION_LOAD; }
} }
post_event(SimpleEvent(EVT_AMS_LOAD)); post_event(SimpleEvent(EVT_AMS_LOAD));
} }
@ -4833,7 +4844,7 @@ void AMSControl::on_filament_load(wxCommandEvent &event)
void AMSControl::on_extrusion_cali(wxCommandEvent &event) void AMSControl::on_extrusion_cali(wxCommandEvent &event)
{ {
for (auto i = 0; i < m_ams_info.size(); i++) { for (auto i = 0; i < m_ams_info.size(); i++) {
if (m_ams_info[i].ams_id == m_current_ams) { m_ams_info[i].current_action = AMSAction::AMS_ACTION_CALI; } if (m_ams_info[i].ams_id == m_current_ams_left || m_ams_info[i].ams_id == m_current_ams_right) { m_ams_info[i].current_action = AMSAction::AMS_ACTION_CALI; }
} }
post_event(SimpleEvent(EVT_AMS_EXTRUSION_CALI)); post_event(SimpleEvent(EVT_AMS_EXTRUSION_CALI));
} }
@ -4842,7 +4853,7 @@ void AMSControl::on_filament_unload(wxCommandEvent &event)
{ {
m_button_extruder_feed->Disable(); m_button_extruder_feed->Disable();
for (auto i = 0; i < m_ams_info.size(); i++) { for (auto i = 0; i < m_ams_info.size(); i++) {
if (m_ams_info[i].ams_id == m_current_ams) { m_ams_info[i].current_action = AMSAction::AMS_ACTION_UNLOAD; } if (m_ams_info[i].ams_id == m_current_ams_left || m_ams_info[i].ams_id == m_current_ams_right) { m_ams_info[i].current_action = AMSAction::AMS_ACTION_UNLOAD; }
} }
post_event(SimpleEvent(EVT_AMS_UNLOAD)); post_event(SimpleEvent(EVT_AMS_UNLOAD));
} }
@ -4855,7 +4866,7 @@ void AMSControl::auto_refill(wxCommandEvent& event)
void AMSControl::on_ams_setting_click(wxMouseEvent &event) void AMSControl::on_ams_setting_click(wxMouseEvent &event)
{ {
for (auto i = 0; i < m_ams_info.size(); i++) { for (auto i = 0; i < m_ams_info.size(); i++) {
if (m_ams_info[i].ams_id == m_current_ams) { m_ams_info[i].current_action = AMSAction::AMS_ACTION_CALI; } if (m_ams_info[i].ams_id == m_current_ams_left || m_ams_info[i].ams_id == m_current_ams_right) { m_ams_info[i].current_action = AMSAction::AMS_ACTION_CALI; }
} }
post_event(SimpleEvent(EVT_AMS_SETTINGS)); post_event(SimpleEvent(EVT_AMS_SETTINGS));
} }

View File

@ -26,9 +26,12 @@ public:
void on_retry(); void on_retry();
protected: protected:
std::string m_current_ams; std::string m_current_ams_left;
std::string m_current_slot; std::string m_current_ams_right;
std::string m_current_show_ams; std::string m_current_slot_left;
std::string m_current_slot_right;
std::string m_current_show_ams_left;
std::string m_current_show_ams_right;
std::map<std::string, int> m_ams_selection; std::map<std::string, int> m_ams_selection;
std::map<std::string, AMSPreview*> m_ams_preview_list; std::map<std::string, AMSPreview*> m_ams_preview_list;
@ -127,9 +130,10 @@ protected:
std::string m_last_tray_id = "-1"; std::string m_last_tray_id = "-1";
public: public:
std::string GetCurentAms(); std::string GetCurentAms(bool right_panel = true);
std::string GetCurentShowAms(); std::string GetCurentShowAms(bool right_panel = true);
std::string GetCurrentCan(std::string amsid); std::string GetCurrentCan(std::string amsid);
bool IsAmsInRightPanel(std::string ams_id);
wxColour GetCanColour(std::string amsid, std::string canid); wxColour GetCanColour(std::string amsid, std::string canid);
AMSModel m_ams_model{AMSModel::NO_AMS}; AMSModel m_ams_model{AMSModel::NO_AMS};

View File

@ -600,14 +600,13 @@ void AMSextruder::OnVamsLoading(bool load, wxColour col)
void AMSextruder::OnAmsLoading(bool load, int nozzle_id, wxColour col /*= AMS_CONTROL_GRAY500*/) void AMSextruder::OnAmsLoading(bool load, int nozzle_id, wxColour col /*= AMS_CONTROL_GRAY500*/)
{ {
m_ams_loading = load; m_ams_loading = load;
if (load)m_current_colur = col;
if (nozzle_id == 0){ if (nozzle_id == 0){
m_left_extruder->OnAmsLoading(load, col); m_left_extruder->OnAmsLoading(load, col);
m_right_extruder->OnAmsLoading(false, col); if (load) m_current_colur = col;
} }
else{ else{
m_right_extruder->OnAmsLoading(load, col); m_right_extruder->OnAmsLoading(load, col);
m_left_extruder->OnAmsLoading(false, col); if (load) m_current_colur_deputy = col;
} }
Refresh(); Refresh();
} }
@ -631,6 +630,7 @@ void AMSextruder::render(wxDC& dc)
wxGCDC dc2(memdc); wxGCDC dc2(memdc);
//doRender(dc2); //doRender(dc2);
} }
m_left_extruder->update(true);
if (m_nozzle_num >= 2) { if (m_nozzle_num >= 2) {
m_right_extruder->update(true); m_right_extruder->update(true);
} }
@ -1301,9 +1301,10 @@ void AMSLib::render_generic_lib(wxDC &dc)
// selected // selected
if (m_selected) { if (m_selected) {
dc.SetPen(wxPen(tmp_lib_colour, 2, wxSOLID)); dc.SetPen(wxPen(AMS_CONTROL_BRAND_COLOUR, 3, wxSOLID));
//dc.SetPen(wxPen(tmp_lib_colour, 2, wxSOLID));
if (tmp_lib_colour.Alpha() == 0) { if (tmp_lib_colour.Alpha() == 0) {
dc.SetPen(wxPen(wxColour(tmp_lib_colour.Red(), tmp_lib_colour.Green(), tmp_lib_colour.Blue(), 128), 2, wxSOLID)); dc.SetPen(wxPen(wxColour(tmp_lib_colour.Red(), tmp_lib_colour.Green(), tmp_lib_colour.Blue(), 128), 3, wxSOLID));
} }
dc.SetBrush(wxBrush(*wxTRANSPARENT_BRUSH)); dc.SetBrush(wxBrush(*wxTRANSPARENT_BRUSH));
if (m_radius == 0) { if (m_radius == 0) {
@ -1500,9 +1501,10 @@ void AMSLib::render_generic_lib(wxDC &dc)
#endif #endif
if (m_selected) { if (m_selected) {
dc.SetPen(wxPen(tmp_lib_colour, 2, wxSOLID)); dc.SetPen(wxPen(AMS_CONTROL_BRAND_COLOUR, 3, wxSOLID));
//dc.SetPen(wxPen(tmp_lib_colour, 3, wxSOLID));
if (tmp_lib_colour.Alpha() == 0) { if (tmp_lib_colour.Alpha() == 0) {
dc.SetPen(wxPen(wxColour(tmp_lib_colour.Red(), tmp_lib_colour.Green(), tmp_lib_colour.Blue(), 128), 2, wxSOLID)); dc.SetPen(wxPen(wxColour(tmp_lib_colour.Red(), tmp_lib_colour.Green(), tmp_lib_colour.Blue(), 128), 3, wxSOLID));
} }
dc.SetBrush(wxBrush(*wxTRANSPARENT_BRUSH)); dc.SetBrush(wxBrush(*wxTRANSPARENT_BRUSH));
if (m_radius == 0) { if (m_radius == 0) {
@ -1517,7 +1519,7 @@ void AMSLib::render_generic_lib(wxDC &dc)
} }
if (!m_selected && m_hover) { if (!m_selected && m_hover) {
dc.SetPen(wxPen(AMS_CONTROL_BRAND_COLOUR, 2, wxSOLID)); dc.SetPen(wxPen(AMS_CONTROL_BRAND_COLOUR, 3, wxSOLID));
dc.SetBrush(wxBrush(*wxTRANSPARENT_BRUSH)); dc.SetBrush(wxBrush(*wxTRANSPARENT_BRUSH));
if (m_radius == 0) { if (m_radius == 0) {
dc.DrawRectangle(0, 0, size.x, size.y); dc.DrawRectangle(0, 0, size.x, size.y);
@ -2225,42 +2227,60 @@ void AMSRoadDownPart::doRender(wxDC& dc)
dc.DrawLine(left_nozzle_pos.x, left_nozzle_pos.y, FromDIP(left_nozzle_pos.x + 30), left_nozzle_pos.y); dc.DrawLine(left_nozzle_pos.x, left_nozzle_pos.y, FromDIP(left_nozzle_pos.x + 30), left_nozzle_pos.y);
}*/ }*/
//dc.SetBrush(wxBrush(*wxBLUE)); //dc.SetBrush(wxBrush(*wxBLUE));
if (m_pass_road_step == AMSPassRoadSTEP::AMS_ROAD_STEP_2 || m_pass_road_step == AMSPassRoadSTEP::AMS_ROAD_STEP_3){ if (m_pass_road_left_step == AMSPassRoadSTEP::AMS_ROAD_STEP_2 || m_pass_road_left_step == AMSPassRoadSTEP::AMS_ROAD_STEP_3){
dc.SetPen(wxPen(m_amsinfo.cans[m_canindex].material_colour, 4, wxSOLID)); dc.SetPen(wxPen(m_amsinfo.cans[m_canindex].material_colour, 4, wxSOLID));
if (m_left_road_length > 0){ if (m_left_road_length > 0){
dc.DrawLine((FromDIP(left_nozzle_pos.x - m_left_road_length)), FromDIP(size.y / 2), FromDIP(left_nozzle_pos.x), FromDIP(size.y / 2)); dc.DrawLine((FromDIP(left_nozzle_pos.x - m_left_road_length)), FromDIP(size.y / 2), FromDIP(left_nozzle_pos.x), FromDIP(size.y / 2));
dc.DrawLine(FromDIP(left_nozzle_pos.x), FromDIP(size.y / 2), FromDIP(left_nozzle_pos.x), FromDIP(size.y)); dc.DrawLine(FromDIP(left_nozzle_pos.x), FromDIP(size.y / 2), FromDIP(left_nozzle_pos.x), FromDIP(size.y));
dc.DrawLine(FromDIP(left_nozzle_pos.x - m_left_road_length), FromDIP(0), FromDIP(left_nozzle_pos.x - m_left_road_length), FromDIP(size.y / 2)); dc.DrawLine(FromDIP(left_nozzle_pos.x - m_left_road_length), FromDIP(0), FromDIP(left_nozzle_pos.x - m_left_road_length), FromDIP(size.y / 2));
} }
else if (m_right_road_length > 0){ }
dc.DrawLine((FromDIP(left_nozzle_pos.x)), FromDIP(size.y / 2), FromDIP(left_nozzle_pos.x + m_right_road_length), FromDIP(size.y / 2));
dc.DrawLine(FromDIP(left_nozzle_pos.x + m_right_road_length), FromDIP(0), FromDIP(left_nozzle_pos.x + m_right_road_length), FromDIP(size.y / 2)); if (m_pass_road_right_step == AMSPassRoadSTEP::AMS_ROAD_STEP_2 || m_pass_road_right_step == AMSPassRoadSTEP::AMS_ROAD_STEP_3) {
if (m_nozzle_num == 1){ dc.SetPen(wxPen(m_amsinfo.cans[m_canindex].material_colour, 4, wxSOLID));
dc.DrawLine(FromDIP(left_nozzle_pos.x), FromDIP(size.y / 2), FromDIP(right_nozzle_pos.x), FromDIP(size.y / 2)); if (m_right_road_length > 0) {
dc.DrawLine(FromDIP(left_nozzle_pos.x), FromDIP(size.y / 2), FromDIP(left_nozzle_pos.x), FromDIP(size.y)); int x = left_nozzle_pos.x;
} int len = m_right_road_length;
else{ if (m_nozzle_num == 2){
dc.DrawLine(FromDIP(right_nozzle_pos.x), FromDIP(size.y / 2), FromDIP(right_nozzle_pos.x), FromDIP(size.y)); x = right_nozzle_pos.x;
len = len - 14;
} }
dc.DrawLine((FromDIP(x)), FromDIP(size.y / 2), FromDIP(x + len), FromDIP(size.y / 2));
dc.DrawLine(FromDIP(x + len), FromDIP(0), FromDIP(left_nozzle_pos.x + len), FromDIP(size.y / 2));
dc.DrawLine(FromDIP(x), FromDIP(size.y / 2), FromDIP(x), FromDIP(size.y));
} }
} }
} }
void AMSRoadDownPart::UpdatePassRoad(string can_id, bool left, int len, AMSinfo info, AMSPassRoadSTEP step) { void AMSRoadDownPart::UpdatePassRoad(string can_id, bool left, int len, AMSinfo info, AMSPassRoadSTEP step) {
m_pass_road_step = step; if (m_nozzle_num >= 2){
if (len == -1){ if (left) {
m_left_road_length = -1; m_left_road_length = len;
m_right_road_length = -1; m_pass_road_left_step = step;
return; }
else {
m_right_road_length = len;
m_pass_road_right_step = step;
}
} }
else{
if (left) {
m_left_road_length = len;
m_right_road_length = -1;
m_pass_road_left_step = step;
}
else {
m_right_road_length = len;
m_left_road_length = -1;
m_pass_road_right_step = step;
}
}
m_canindex = atoi(can_id.c_str()); m_canindex = atoi(can_id.c_str());
if (m_canindex == -1){ if (m_canindex == -1){
return; return;
} }
m_amsinfo = info; m_amsinfo = info;
m_left_road_length = left ? len : -1;
m_right_road_length = left ? -1 : len;
m_pass_road_step = step;
} }
@ -2851,9 +2871,9 @@ void AmsItem::Update(AMSinfo info)
} }
i = 0; i = 0;
for (auto lib_it : m_can_lib_list) { for (int i = 0; i < m_can_lib_list.size(); i++) {
AMSLib* lib = lib_it.second; AMSLib* lib = m_can_lib_list[std::to_string(i)];
if (i < m_can_count) { if (i < m_can_count && lib != nullptr) {
lib->Update(info.cans[i], info.ams_id); lib->Update(info.cans[i], info.ams_id);
lib->Show(); lib->Show();
} }

View File

@ -173,7 +173,7 @@ public:
std::vector<Caninfo> cans; std::vector<Caninfo> cans;
int nozzle_id = 0; int nozzle_id = 0;
std::string current_can_id; std::string current_can_id;
AMSPassRoadSTEP current_step; AMSPassRoadSTEP current_step = AMSPassRoadSTEP::AMS_ROAD_STEP_NONE;
AMSAction current_action; AMSAction current_action;
int curreent_filamentstep; int curreent_filamentstep;
int ams_humidity = 0; int ams_humidity = 0;
@ -313,6 +313,7 @@ public:
bool m_vams_loading{false}; bool m_vams_loading{false};
bool m_ams_loading{false}; bool m_ams_loading{false};
wxColour m_current_colur; wxColour m_current_colur;
wxColour m_current_colur_deputy;
int m_nozzle_num{ 1 }; int m_nozzle_num{ 1 };
wxBoxSizer * m_bitmap_sizer{nullptr}; wxBoxSizer * m_bitmap_sizer{nullptr};
@ -543,7 +544,8 @@ public:
double m_radius = { 4 }; double m_radius = { 4 };
wxColour m_road_def_color; wxColour m_road_def_color;
AMSPassRoadType m_pass_road_type = { AMSPassRoadType::AMS_ROAD_TYPE_NONE }; AMSPassRoadType m_pass_road_type = { AMSPassRoadType::AMS_ROAD_TYPE_NONE };
AMSPassRoadSTEP m_pass_road_step = { AMSPassRoadSTEP::AMS_ROAD_STEP_NONE }; AMSPassRoadSTEP m_pass_road_left_step = { AMSPassRoadSTEP::AMS_ROAD_STEP_NONE };
AMSPassRoadSTEP m_pass_road_right_step = { AMSPassRoadSTEP::AMS_ROAD_STEP_NONE };
wxColour m_road_color; wxColour m_road_color;
//void Update(AMSRoadDownPartMode nozzle, AMSRoadShowMode left_mode, AMSRoadShowMode right_mode, int left_len, int right_len); //void Update(AMSRoadDownPartMode nozzle, AMSRoadShowMode left_mode, AMSRoadShowMode right_mode, int left_len, int right_len);