LRESULT BacnetScreen::Fresh_Screen_Item(WPARAM wParam,LPARAM lParam) { int Changed_Item = (int)wParam; int Changed_SubItem = (int)lParam; CString temp_task_info; CString New_CString = m_screen_list.GetItemText(Changed_Item,Changed_SubItem); CString cstemp_value; memcpy_s(&m_temp_screen_data[Changed_Item],sizeof(Control_group_point),&m_screen_data.at(Changed_Item),sizeof(Control_group_point)); if(Changed_SubItem == SCREEN_DESCRIPTION) { CString cs_temp = m_screen_list.GetItemText(Changed_Item,Changed_SubItem); if(cs_temp.GetLength()>= STR_SCREEN_DESCRIPTION_LENGTH) //长度不能大于结构体定义的长度; { MessageBox(_T("Warning"),_T("Length can not higher than 20")); PostMessage(WM_REFRESH_BAC_SCREEN_LIST,NULL,NULL); return 0; } if(Check_FullLabel_Exsit(cs_temp)) { PostMessage(WM_REFRESH_BAC_SCREEN_LIST,Changed_Item,REFRESH_ON_ITEM); return 0; } char cTemp1[255]; memset(cTemp1,0,255); WideCharToMultiByte( CP_ACP, 0, cs_temp.GetBuffer(), -1, cTemp1, 255, NULL, NULL ); memcpy_s(m_screen_data.at(Changed_Item).description,STR_SCREEN_DESCRIPTION_LENGTH,cTemp1,STR_SCREEN_DESCRIPTION_LENGTH); } else if(Changed_SubItem == SCREEN_LABEL) { CString cs_temp = m_screen_list.GetItemText(Changed_Item,Changed_SubItem); if(cs_temp.GetLength()>= STR_SCREEN_LABLE_LENGTH) //长度不能大于结构体定义的长度; { MessageBox(_T("Length can not higher than 8"),_T("Warning")); PostMessage(WM_REFRESH_BAC_SCREEN_LIST,NULL,NULL); return 0; } cs_temp.MakeUpper(); if(Check_Label_Exsit(cs_temp)) { PostMessage(WM_REFRESH_BAC_SCREEN_LIST,Changed_Item,REFRESH_ON_ITEM); return 0; } char cTemp1[255]; memset(cTemp1,0,255); WideCharToMultiByte( CP_ACP, 0, cs_temp.GetBuffer(), -1, cTemp1, 255, NULL, NULL ); memcpy_s(m_screen_data.at(Changed_Item).label,STR_SCREEN_LABLE_LENGTH,cTemp1,STR_SCREEN_LABLE_LENGTH); } else if(Changed_SubItem == SCREEN_PIC_FILE) { //CString cs_temp = m_screen_list.GetItemText(Changed_Item,Changed_SubItem); //CFileFind temp_find; //bool find_full_name = false; //bool find_relatice_path = false; //find_full_name = temp_find.FindFile(cs_temp); //if(find_full_name) //{ //} //else //{ // CString folder_temp_file; // folder_temp_file = g_strBuildingFolder + _T("\\image\\") + cs_temp; // CFileFind find_relatice_file; // find_relatice_path = find_relatice_file.FindFile(folder_temp_file); // if(find_relatice_path == false) // { // MessageBox(_T("Please input an valid path or double click to select file.")); // m_screen_list.SetItemText(Changed_Item,Changed_SubItem,_T("")); // return 0; // } //} } else if (Changed_SubItem == SCREEN_ELEMENT_COUNT) { int temp_value; if((New_CString.GetLength()>=4) || (_wtoi(New_CString)>255)) { MessageBox(_T("Please input a value between 0 - 255"),_T("Warning"),MB_OK | MB_ICONINFORMATION); PostMessage(WM_REFRESH_BAC_SCREEN_LIST,NULL,NULL);//restore the list. return 0; } temp_value = _wtoi(New_CString); m_screen_data.at(Changed_Item).update = temp_value; } int cmp_ret = memcmp(&m_temp_screen_data[Changed_Item],&m_screen_data.at(Changed_Item),sizeof(Control_group_point)); if(cmp_ret!=0) { m_screen_list.SetItemBkColor(Changed_Item,Changed_SubItem,LIST_ITEM_CHANGED_BKCOLOR); temp_task_info.Format(_T("Write Screen List Item%d .Changed to \"%s\" "),Changed_Item + 1,New_CString); Post_Write_Message(g_bac_instance,WRITESCREEN_T3000,Changed_Item,Changed_Item,sizeof(Control_group_point),m_screen_dlg_hwnd ,temp_task_info,Changed_Item,Changed_SubItem); } return 0; }
LRESULT CBacnetVariable::Fresh_Variable_Item(WPARAM wParam,LPARAM lParam) { int cmp_ret ;//compare if match it will 0; int Changed_Item = (int)wParam; int Changed_SubItem = (int)lParam; CString temp_task_info; CString New_CString = m_variable_list.GetItemText(Changed_Item,Changed_SubItem); CString cstemp_value; memcpy_s(&m_temp_variable_data[Changed_Item],sizeof(Str_variable_point),&m_Variable_data.at(Changed_Item),sizeof(Str_variable_point)); if(Changed_SubItem == VARIABLE_LABLE) { CString cs_temp = m_variable_list.GetItemText(Changed_Item,Changed_SubItem); if(cs_temp.GetLength()>= STR_VARIABLE_LABEL) //长度不能大于结构体定义的长度; { MessageBox(_T("Length can not higher than 9"),_T("Warning")); #pragma region note_what_do //如下所做的事 达到 ,在弹窗后 继续选中客户输入的部分 ,毛总的要求; CRect list_rect,win_rect; m_variable_list.GetWindowRect(list_rect); ScreenToClient(&list_rect); ::GetWindowRect(m_variable_dlg_hwnd,win_rect); m_variable_list.Set_My_WindowRect(win_rect); m_variable_list.Set_My_ListRect(list_rect); m_variable_list.Get_clicked_mouse_position(); #pragma endregion note_what_do PostMessage(WM_REFRESH_BAC_VARIABLE_LIST,NULL,NULL); return 0; } cs_temp.Replace(_T("-"),_T("_")); cs_temp.MakeUpper(); if(Check_Label_Exsit(cs_temp)) { PostMessage(WM_REFRESH_BAC_VARIABLE_LIST,Changed_Item,REFRESH_ON_ITEM); return 0; } char cTemp1[255]; memset(cTemp1,0,255); WideCharToMultiByte( CP_ACP, 0, cs_temp.GetBuffer(), -1, cTemp1, 255, NULL, NULL ); memcpy_s(m_Variable_data.at(Changed_Item).label,STR_VARIABLE_LABEL,cTemp1,STR_VARIABLE_LABEL); } if(Changed_SubItem == VARIABLE_FULL_LABLE) { CString cs_temp = m_variable_list.GetItemText(Changed_Item,Changed_SubItem); if(cs_temp.GetLength()>= STR_VARIABLE_DESCRIPTION_LENGTH) //长度不能大于结构体定义的长度; { MessageBox(_T("Length can not higher than 20"),_T("Warning")); #pragma region note_what_do //如下所做的事 达到 ,在弹窗后 继续选中客户输入的部分 ,毛总的要求; CRect list_rect,win_rect; m_variable_list.GetWindowRect(list_rect); ScreenToClient(&list_rect); ::GetWindowRect(m_variable_dlg_hwnd,win_rect); m_variable_list.Set_My_WindowRect(win_rect); m_variable_list.Set_My_ListRect(list_rect); m_variable_list.Get_clicked_mouse_position(); #pragma endregion note_what_do PostMessage(WM_REFRESH_BAC_VARIABLE_LIST,NULL,NULL); return 0; } if(Check_FullLabel_Exsit(cs_temp)) { PostMessage(WM_REFRESH_BAC_VARIABLE_LIST,Changed_Item,REFRESH_ON_ITEM); return 0; } char cTemp1[255]; memset(cTemp1,0,255); WideCharToMultiByte( CP_ACP, 0, cs_temp.GetBuffer(), -1, cTemp1, 255, NULL, NULL ); memcpy_s(m_Variable_data.at(Changed_Item).description,STR_VARIABLE_DESCRIPTION_LENGTH,cTemp1,STR_VARIABLE_DESCRIPTION_LENGTH); } if(Changed_SubItem == VARIABLE_AUTO_MANUAL) { CString temp_cs = m_variable_list.GetItemText(Changed_Item,Changed_SubItem); if(temp_cs.CompareNoCase(_T("Auto"))==0) { //m_variable_list.SetCellEnabled(Changed_Item,VARIABLE_VALUE,0); m_Variable_data.at(Changed_Item).auto_manual = BAC_AUTO; } else { //m_variable_list.SetCellEnabled(Changed_Item,VARIABLE_VALUE,1); m_Variable_data.at(Changed_Item).auto_manual = BAC_MANUAL; } } if(Changed_SubItem == VARIABLE_VALUE)//这里只用处理 ANALOG 的值就看要了, DIGITAL 的值在Click 事件中处理过了; { CString temp_cs = m_variable_list.GetItemText(Changed_Item,Changed_SubItem); int temp_int = (int)(_wtof(temp_cs) * 1000); m_Variable_data.at(Changed_Item).value = temp_int; } cmp_ret = memcmp(&m_temp_variable_data[Changed_Item],&m_Variable_data.at(Changed_Item),sizeof(Str_variable_point)); if(cmp_ret!=0) { m_variable_list.SetItemBkColor(Changed_Item,Changed_SubItem,LIST_ITEM_CHANGED_BKCOLOR); temp_task_info.Format(_T("Write Variable List Item%d .Changed to \"%s\" "),Changed_Item + 1,New_CString); Post_Write_Message(g_bac_instance,WRITEVARIABLE_T3000,Changed_Item,Changed_Item,sizeof(Str_variable_point),m_variable_dlg_hwnd ,temp_task_info,Changed_Item,Changed_SubItem); } return 0; }
LRESULT CBacnetProgram::Fresh_Program_Item(WPARAM wParam,LPARAM lParam) { int cmp_ret ;//compare if match it will 0; int Changed_Item = (int)wParam; int Changed_SubItem = (int)lParam; memcpy_s(&m_temp_program_data[Changed_Item],sizeof(Str_program_point),&m_Program_data.at(Changed_Item),sizeof(Str_program_point)); CString temp_task_info; CString New_CString = m_program_list.GetItemText(Changed_Item,Changed_SubItem); if(Changed_SubItem == PROGRAM_LABEL) { CString cs_temp = m_program_list.GetItemText(Changed_Item,Changed_SubItem); if(cs_temp.GetLength()>= STR_PROGRAM_LABEL_LENGTH) //长度不能大于结构体定义的长度; { MessageBox(_T("Length can not higher than 8"),_T("Warning"),MB_OK | MB_ICONINFORMATION); PostMessage(WM_REFRESH_BAC_PROGRAM_LIST,NULL,NULL); return 0; } cs_temp.MakeUpper(); if(Check_Label_Exsit(cs_temp)) { PostMessage(WM_REFRESH_BAC_PROGRAM_LIST,Changed_Item,REFRESH_ON_ITEM); return 0; } char cTemp1[255]; memset(cTemp1,0,255); WideCharToMultiByte( CP_ACP, 0, cs_temp.GetBuffer(), -1, cTemp1, 255, NULL, NULL ); memcpy_s(m_Program_data.at(Changed_Item).label,STR_PROGRAM_LABEL_LENGTH,cTemp1,STR_PROGRAM_LABEL_LENGTH); } if(Changed_SubItem == PROGRAM_FULL_LABLE) { CString cs_temp = m_program_list.GetItemText(Changed_Item,Changed_SubItem); if(cs_temp.GetLength()>= STR_PROGRAM_DESCRIPTION_LENGTH) //长度不能大于结构体定义的长度; { MessageBox(_T("Length can not higher than 20"),_T("Warning"),MB_OK | MB_ICONINFORMATION); PostMessage(WM_REFRESH_BAC_PROGRAM_LIST,NULL,NULL); return 0; } if(Check_FullLabel_Exsit(cs_temp)) { PostMessage(WM_REFRESH_BAC_PROGRAM_LIST,Changed_Item,REFRESH_ON_ITEM); return 0; } char cTemp1[255]; memset(cTemp1,0,255); WideCharToMultiByte( CP_ACP, 0, cs_temp.GetBuffer(), -1, cTemp1, 255, NULL, NULL ); memcpy_s(m_Program_data.at(Changed_Item).description,STR_PROGRAM_DESCRIPTION_LENGTH,cTemp1,STR_PROGRAM_DESCRIPTION_LENGTH); } if(Changed_SubItem == PROGRAM_STATUS) { CString cs_temp=m_program_list.GetItemText(Changed_Item,PROGRAM_STATUS); if(cs_temp.CompareNoCase(_T("OFF"))==0) { m_Program_data.at(Changed_Item).on_off=0; } else { m_Program_data.at(Changed_Item).on_off=1; } } if(Changed_SubItem == PROGRAM_AUTO_MANUAL) { CString cs_temp=m_program_list.GetItemText(Changed_Item,PROGRAM_AUTO_MANUAL); if(cs_temp.CompareNoCase(_T("Auto"))==0) { m_Program_data.at(Changed_Item).auto_manual=0; } else { m_Program_data.at(Changed_Item).auto_manual=1; } } cmp_ret = memcmp(&m_temp_program_data[Changed_Item],&m_Program_data.at(Changed_Item),sizeof(Str_program_point)); if(cmp_ret!=0) { m_program_list.SetItemBkColor(Changed_Item,Changed_SubItem,LIST_ITEM_CHANGED_BKCOLOR); temp_task_info.Format(_T("Write Program List Item%d .Changed to \"%s\" "),Changed_Item + 1,New_CString); Post_Write_Message(g_bac_instance,WRITEPROGRAM_T3000,Changed_Item,Changed_Item,sizeof(Str_program_point),m_pragram_dlg_hwnd ,temp_task_info,Changed_Item,Changed_SubItem); } return 0; }
LRESULT CBacnetInput::Fresh_Input_Item(WPARAM wParam,LPARAM lParam) { int cmp_ret ;//compare if match it will 0; int Changed_Item = (int)wParam; int Changed_SubItem = (int)lParam; memcpy_s(&m_temp_Input_data[Changed_Item],sizeof(Str_in_point),&m_Input_data.at(Changed_Item),sizeof(Str_in_point)); CString temp_task_info; CString New_CString = m_input_list.GetItemText(Changed_Item,Changed_SubItem); CString cstemp_value; if(Changed_SubItem == INPUT_LABLE) { CString cs_temp = m_input_list.GetItemText(Changed_Item,Changed_SubItem); if(cs_temp.GetLength()>= STR_IN_LABEL) //长度不能大于结构体定义的长度; { MessageBox(_T("Length can not greater than 8"),_T("Warning")); PostMessage(WM_REFRESH_BAC_INPUT_LIST,NULL,NULL); return 0; } cs_temp.Replace(_T("-"),_T("_")); cs_temp.MakeUpper(); if(Check_Label_Exsit(cs_temp)) { PostMessage(WM_REFRESH_BAC_INPUT_LIST,Changed_Item,REFRESH_ON_ITEM); return 0; } char cTemp1[255]; memset(cTemp1,0,255); WideCharToMultiByte( CP_ACP, 0, cs_temp.GetBuffer(), -1, cTemp1, 255, NULL, NULL ); memcpy_s(m_Input_data.at(Changed_Item).label,STR_IN_LABEL,cTemp1,STR_IN_LABEL); } if(Changed_SubItem == INPUT_FULL_LABLE) { CString cs_temp = m_input_list.GetItemText(Changed_Item,Changed_SubItem); if(cs_temp.GetLength()>= STR_IN_DESCRIPTION_LENGTH) //长度不能大于结构体定义的长度; { MessageBox(_T("Length can not higher than 20"),_T("Warning")); PostMessage(WM_REFRESH_BAC_INPUT_LIST,NULL,NULL); return 0; } if(Check_FullLabel_Exsit(cs_temp)) { PostMessage(WM_REFRESH_BAC_INPUT_LIST,Changed_Item,REFRESH_ON_ITEM); return 0; } char cTemp1[255]; memset(cTemp1,0,255); WideCharToMultiByte( CP_ACP, 0, cs_temp.GetBuffer(), -1, cTemp1, 255, NULL, NULL ); memcpy_s(m_Input_data.at(Changed_Item).description,STR_IN_DESCRIPTION_LENGTH,cTemp1,STR_IN_DESCRIPTION_LENGTH); } if(Changed_SubItem == INPUT_AUTO_MANUAL) { CString temp_cs = m_input_list.GetItemText(Changed_Item,Changed_SubItem); if(temp_cs.CompareNoCase(_T("Auto"))==0) { //m_input_list.SetCellEnabled(Changed_Item,INPUT_VALUE,0); m_Input_data.at(Changed_Item).auto_manual = BAC_AUTO ; } else { //m_input_list.SetCellEnabled(Changed_Item,INPUT_VALUE,1); m_Input_data.at(Changed_Item).auto_manual = BAC_MANUAL ; } } if(Changed_SubItem == INPUT_VALUE) { CString temp_cs = m_input_list.GetItemText(Changed_Item,Changed_SubItem); int temp_int = (int)(_wtof(temp_cs) * 1000); //int temp_int = _wtoi(temp_cs); m_Input_data.at(Changed_Item).value = temp_int; } if(Changed_SubItem==INPUT_CAL) { CString cs_temp=m_input_list.GetItemText(Changed_Item,INPUT_CAL); float temp_value = _wtof(cs_temp); int cal_value = (int)(temp_value * 10); if((cal_value<0) || (cal_value >65535)) { MessageBox(_T("Please Input an value between 0.0 - 6553.6"),_T("Warning"),MB_OK); PostMessage(WM_REFRESH_BAC_INPUT_LIST,Changed_Item,REFRESH_ON_ITEM);//这里调用 刷新线程重新刷新会方便一点; return 0; } //int cal_value = _wtoi(cs_temp); m_Input_data.at(Changed_Item).calibration_l = cal_value & 0x00ff; m_Input_data.at(Changed_Item).calibration_h = (cal_value & 0xff00)>>8; }
LRESULT CBacnetOutput::Fresh_Output_Item(WPARAM wParam,LPARAM lParam) { int cmp_ret ;//compare if match it will 0; int Changed_Item = (int)wParam; int Changed_SubItem = (int)lParam; CString temp_task_info; CString New_CString = m_output_list.GetItemText(Changed_Item,Changed_SubItem); CString cstemp_value; if(Changed_Item>= OUTPUT_LIMITE_ITEM_COUNT) { m_output_list.SetItemText(Changed_Item,Changed_SubItem,_T("")); return 0; } //先保存 原来的值,等结束的时候来比对,看是否有改变,有改变就进行写动作; memcpy_s(&m_temp_output_data[Changed_Item],sizeof(Str_out_point),&m_Output_data.at(Changed_Item),sizeof(Str_out_point)); if(Changed_SubItem == OUTPUT_PWM_PERIOD) { CString temp_cs = m_output_list.GetItemText(Changed_Item,Changed_SubItem); int temp_int = (int)(_wtof(temp_cs)); if((temp_int<0) || (temp_int >=256)) { SetPaneString(BAC_SHOW_MISSION_RESULTS,_T("Data out of range!")); PostMessage(WM_REFRESH_BAC_OUTPUT_LIST,Changed_Item,REFRESH_ON_ITEM); return 0; } m_Output_data.at(Changed_Item).pwm_period = (unsigned char)temp_int; } if(Changed_SubItem == OUTPUT_LABLE) { CString cs_temp = m_output_list.GetItemText(Changed_Item,Changed_SubItem); if(cs_temp.GetLength()>= STR_OUT_LABEL) //长度不能大于结构体定义的长度; { MessageBox(_T("Length can not higher than 8"),_T("Warning")); PostMessage(WM_REFRESH_BAC_OUTPUT_LIST,NULL,NULL); return 0; } cs_temp.Replace(_T("-"),_T("_")); cs_temp.MakeUpper(); if(Check_Label_Exsit(cs_temp)) { PostMessage(WM_REFRESH_BAC_OUTPUT_LIST,Changed_Item,REFRESH_ON_ITEM); return 0; } char cTemp1[255]; memset(cTemp1,0,255); WideCharToMultiByte( CP_ACP, 0, cs_temp.GetBuffer(), -1, cTemp1, 255, NULL, NULL ); memcpy_s(m_Output_data.at(Changed_Item).label,STR_OUT_LABEL,cTemp1,STR_OUT_LABEL); } if(Changed_SubItem == OUTPUT_FULL_LABLE) { CString cs_temp = m_output_list.GetItemText(Changed_Item,Changed_SubItem); if(cs_temp.GetLength()>= STR_OUT_DESCRIPTION_LENGTH) //长度不能大于结构体定义的长度; { MessageBox(_T("Length can not higher than 20"),_T("Warning")); PostMessage(WM_REFRESH_BAC_OUTPUT_LIST,NULL,NULL); return 0; } if(Check_FullLabel_Exsit(cs_temp)) { PostMessage(WM_REFRESH_BAC_OUTPUT_LIST,Changed_Item,REFRESH_ON_ITEM); return 0; } char cTemp1[255]; memset(cTemp1,0,255); WideCharToMultiByte( CP_ACP, 0, cs_temp.GetBuffer(), -1, cTemp1, 255, NULL, NULL ); memcpy_s(m_Output_data.at(Changed_Item).description,STR_OUT_DESCRIPTION_LENGTH,cTemp1,STR_OUT_DESCRIPTION_LENGTH); } if(Changed_SubItem==OUTPUT_AUTO_MANUAL) //If auto man changed to mannul , the value can be edit by user { CString temp_cs = m_output_list.GetItemText(Changed_Item,Changed_SubItem); if(temp_cs.CompareNoCase(_T("Auto"))==0) { //m_output_list.SetCellEnabled(Changed_Item,OUTPUT_VALUE,0); m_Output_data.at(Changed_Item).auto_manual = BAC_AUTO ; } else { //m_output_list.SetCellEnabled(Changed_Item,OUTPUT_VALUE,1); m_Output_data.at(Changed_Item).auto_manual = BAC_MANUAL ; } } if(Changed_SubItem == OUTPUT_VALUE) { CString temp_cs = m_output_list.GetItemText(Changed_Item,Changed_SubItem); #if 0 int temp_int = (int)(_wtof(temp_cs) * 1000); m_Output_data.at(Changed_Item).value = temp_int; #endif // int temp_int = _wtoi(temp_cs); int temp_int = (int)(_wtof(temp_cs) * 1000); m_Output_data.at(Changed_Item).value = temp_int; } if(Changed_SubItem == OUTPUT_DECOM) { CString temp_cs = m_output_list.GetItemText(Changed_Item,Changed_SubItem); if(temp_cs.CompareNoCase(_T("OK"))==0) { m_Output_data.at(Changed_Item).decom = BAC_DECOM_YES ; } else if(temp_cs.CompareNoCase(_T("-"))==0) { m_Output_data.at(Changed_Item).decom = BAC_DECOM_NO ; } } cmp_ret = memcmp(&m_temp_output_data[Changed_Item],&m_Output_data.at(Changed_Item),sizeof(Str_out_point)); if(cmp_ret!=0) { m_output_list.SetItemBkColor(Changed_Item,Changed_SubItem,LIST_ITEM_CHANGED_BKCOLOR); temp_task_info.Format(_T("Write Output List Item%d .Changed to \"%s\" "),Changed_Item + 1,New_CString); Post_Write_Message(g_bac_instance,WRITEOUTPUT_T3000,Changed_Item,Changed_Item,sizeof(Str_out_point),m_output_dlg_hwnd,temp_task_info,Changed_Item,Changed_SubItem); } return 0; }