void CCO2_NodeView::OnCbnSelchangeComboCo2NodeProtocol() { // TODO: 在此添加控件通知处理程序代码 CString temp_string; int nSel = ((CComboBox *)GetDlgItem(IDC_COMBO_CO2_NODE_PROTOCOL))->GetCurSel(); ((CComboBox *)GetDlgItem(IDC_COMBO_CO2_NODE_PROTOCOL))->GetLBText(nSel, temp_string); int temp_protocol = product_register_value[21]; for (int i = 0;i<sizeof(CO2_Node_Protocol) / sizeof(CO2_Node_Protocol[0]);i++) { if (temp_string.CompareNoCase(CO2_Node_Protocol[i]) == 0) { temp_protocol = i; break; } } int nret = write_one(g_tstat_id, 21, temp_protocol); if (nret <= 0) { SetPaneString(BAC_SHOW_MISSION_RESULTS, _T("Change protocol failed!")); PostMessage(WM_CO2_NODE_THREAD_READ, NULL, NULL); } else { SetPaneString(BAC_SHOW_MISSION_RESULTS, _T("Operation Done!")); } ((CButton *)GetDlgItem(IDC_BUTTON_OK))->SetFocus(); }
LRESULT CBacnetTstat::TstatsMessageCallBack(WPARAM wParam, LPARAM lParam) { _MessageInvokeIDInfo *pInvoke =(_MessageInvokeIDInfo *)lParam; bool msg_result=WRITE_FAIL; msg_result = MKBOOL(wParam); CString Show_Results; CString temp_cs = pInvoke->task_info; if(msg_result) { Show_Results = temp_cs + _T("Success!"); SetPaneString(BAC_SHOW_MISSION_RESULTS,Show_Results); } else { memcpy_s(&m_Tstat_data.at(pInvoke->mRow),sizeof(Str_TstatInfo_point),&m_temp_tstat_data[pInvoke->mRow],sizeof(Str_TstatInfo_point));//还原没有改对的值; PostMessage(WM_REFRESH_BAC_TSTAT_LIST,pInvoke->mRow,REFRESH_ON_ITEM); Show_Results = temp_cs + _T("Fail!"); SetPaneString(BAC_SHOW_MISSION_RESULTS,Show_Results); } if((pInvoke->mRow%2)==0) //恢复前景和 背景 颜色; m_tstat_list.SetItemBkColor(pInvoke->mRow,pInvoke->mCol,LIST_ITEM_DEFAULT_BKCOLOR,0); else m_tstat_list.SetItemBkColor(pInvoke->mRow,pInvoke->mCol,LIST_ITEM_DEFAULT_BKCOLOR_GRAY,0); m_tstat_list.RedrawItems(pInvoke->mRow,pInvoke->mRow); if(pInvoke) delete pInvoke; return 0; }
//在删除这个对话框之前 先尝试保存 操作中的 label; LRESULT BacnetScreen::Screeenedit_close_handle(WPARAM wParam,LPARAM lParam) { Reg_Hotkey(); if(ScreenEdit_Window) { bool saving_ret = false; SetPaneString(BAC_SHOW_MISSION_RESULTS,_T("Saving data , please wait!")); saving_ret = ScreenEdit_Window->UpdateDeviceLabelFlash(); //if(((debug_item_show == DEBUG_SHOW_ALL) || (debug_item_show == DEBUG_SHOW_SQLITE_INFO))) //{ // CString temp_info; // temp_info.Format(_T("Close sqlit DB")); // DFTrace(temp_info); //} if(saving_ret) SetPaneString(BAC_SHOW_MISSION_RESULTS,_T("Saving data success!")); else SetPaneString(BAC_SHOW_MISSION_RESULTS,_T("Saving data failed!")); //ScreenEdit_Window->SqliteDBT3000.closedb(); delete ScreenEdit_Window; ScreenEdit_Window = NULL; } return 0; }
LRESULT CBacnetProgramEdit::ProgramResumeMessageCallBack(WPARAM wParam, LPARAM lParam) { _MessageInvokeIDInfo *pInvoke =(_MessageInvokeIDInfo *)lParam; CString temp_cs = pInvoke->task_info; bool msg_result=WRITE_FAIL; msg_result = MKBOOL(wParam); CString Show_Results; if(msg_result) { //CString temp_ok; //temp_ok = _T("Bacnet operation success! Request ID:") + temp_cs; m_Program_data.at(program_list_line).bytes = program_code_length[program_list_line] - PRIVATE_HEAD_LENGTH; Show_Results = temp_cs + _T("Success!"); SetPaneString(BAC_SHOW_MISSION_RESULTS,Show_Results); //SetPaneString(BAC_SHOW_MISSION_RESULTS,temp_ok); //#ifdef SHOW_MESSAGEBOX MessageBox(Show_Results); //#endif } else { Show_Results = temp_cs + _T("Fail!"); SetPaneString(BAC_SHOW_MISSION_RESULTS,Show_Results); //#ifdef SHOW_ERROR_MESSAGE MessageBox(Show_Results); //#endif } if(pInvoke) delete pInvoke; return 0; }
// CBacnetVariable message handlers LRESULT CBacnetVariable::VariableMessageCallBack(WPARAM wParam, LPARAM lParam) { _MessageInvokeIDInfo *pInvoke =(_MessageInvokeIDInfo *)lParam; bool msg_result=WRITE_FAIL; msg_result = MKBOOL(wParam); CString Show_Results; CString temp_cs = pInvoke->task_info; if(msg_result) { Show_Results = temp_cs + _T("Success!"); SetPaneString(BAC_SHOW_MISSION_RESULTS,Show_Results); if((pInvoke->mRow < BAC_VARIABLE_ITEM_COUNT) && (pInvoke->mRow >= 0)) { Post_Refresh_One_Message(g_bac_instance,READVARIABLE_T3000, pInvoke->mRow,pInvoke->mRow,sizeof(Str_variable_point)); SetTimer(3,2000,NULL); } } else { memcpy_s(&m_Variable_data.at(pInvoke->mRow),sizeof(Str_variable_point),&m_temp_variable_data[pInvoke->mRow],sizeof(Str_variable_point));//还原没有改对的值 PostMessage(WM_REFRESH_BAC_VARIABLE_LIST,pInvoke->mRow,REFRESH_ON_ITEM); Show_Results = temp_cs + _T("Fail!"); SetPaneString(BAC_SHOW_MISSION_RESULTS,Show_Results); } if((pInvoke->mRow%2)==0) //恢复前景和 背景 颜色; m_variable_list.SetItemBkColor(pInvoke->mRow,pInvoke->mCol,LIST_ITEM_DEFAULT_BKCOLOR,0); else m_variable_list.SetItemBkColor(pInvoke->mRow,pInvoke->mCol,LIST_ITEM_DEFAULT_BKCOLOR_GRAY,0); m_variable_list.RedrawItems(pInvoke->mRow,pInvoke->mRow); if(pInvoke) delete pInvoke; return 0; }
LRESULT BacnetController::ControllerMessageCallBack(WPARAM wParam, LPARAM lParam) { _MessageInvokeIDInfo *pInvoke =(_MessageInvokeIDInfo *)lParam; bool msg_result=WRITE_FAIL; msg_result = MKBOOL(wParam); CString Show_Results; CString temp_cs = pInvoke->task_info; if(msg_result) { Show_Results = temp_cs + _T("Success!"); SetPaneString(BAC_SHOW_MISSION_RESULTS,Show_Results); //MessageBox(_T("Bacnet operation success!")); } else { memcpy_s(&m_controller_data.at(pInvoke->mRow),sizeof(Str_controller_point),&m_temp_controller_data[pInvoke->mRow],sizeof(Str_controller_point));//还原没有改对的值 PostMessage(WM_REFRESH_BAC_CONTROLLER_LIST,pInvoke->mRow,REFRESH_ON_ITEM); Show_Results = temp_cs + _T("Fail!"); SetPaneString(BAC_SHOW_MISSION_RESULTS,Show_Results); //AfxMessageBox(Show_Results); //MessageBox(_T("Bacnet operation fail!")); } if((pInvoke->mRow%2)==0) //恢复前景和 背景 颜色; m_controller_list.SetItemBkColor(pInvoke->mRow,pInvoke->mCol,LIST_ITEM_DEFAULT_BKCOLOR,0); else m_controller_list.SetItemBkColor(pInvoke->mRow,pInvoke->mCol,LIST_ITEM_DEFAULT_BKCOLOR_GRAY,0); m_controller_list.RedrawItems(pInvoke->mRow,pInvoke->mRow); if(pInvoke) delete pInvoke; return 0; }
void CCO2_NodeView::OnCbnSelchangeComboCo2NodeTemperatureUnit() { // TODO: 在此添加控件通知处理程序代码 CString temp_cs; int nSel = ((CComboBox *)GetDlgItem(IDC_COMBO_CO2_NODE_TEMPERATURE_UNIT))->GetCurSel(); ((CComboBox *)GetDlgItem(IDC_COMBO_CO2_NODE_TEMPERATURE_UNIT))->GetLBText(nSel, temp_cs); int temp_value = product_register_value[125]; if (temp_cs.CompareNoCase(_T("Deg.C")) == 0) { temp_value = 0; } else if (temp_cs.CompareNoCase(_T("Deg.F")) == 0) { temp_value = 1; } int nret = write_one(g_tstat_id, 125, temp_value); if (nret <= 0) { SetPaneString(BAC_SHOW_MISSION_RESULTS, _T("Change Deg.C or Deg.F failed!")); PostMessage(WM_CO2_NODE_THREAD_READ, NULL, NULL); } else { SetPaneString(BAC_SHOW_MISSION_RESULTS, _T("Operation Done!")); } ((CButton *)GetDlgItem(IDC_BUTTON_OK))->SetFocus(); }
void T38AI8AO::Fresh(){ if (is_connect()) { for (int i=0;i<3;i++) { Read_Multi(g_tstat_id,&product_register_value[i*100],i*100,100); } InitialRegister(); InitialDialog(); if(hFirstThread != NULL) TerminateThread(hFirstThread, 0); hFirstThread=NULL; if (!hFirstThread) { hFirstThread = CreateThread(NULL,NULL,_BackFreshing_8IAO,this,NULL,0); } //AfxBeginThread(_BackFreshing,this); } else { SetPaneString(1,_T("Disconnection")); AfxMessageBox(_T("Please Connect your device")); } }
void T3000_Default_MainView::OnEnKillfocusEditBacnetDeviceId() { // TODO: 在此添加控件通知处理程序代码 CString strText; GetDlgItemText(IDC_EDIT_BACNET_DEVICE_ID, strText); int nValue = _wtoi(strText); unsigned int temp_device_id = 0; temp_device_id = product_register_value[992] * 65536 + product_register_value[991]; if (temp_device_id == nValue) //Add this to judge weather this value need to change. return; unsigned short temp_device_low; unsigned short temp_device_high; temp_device_low = nValue % 65536; temp_device_high = nValue / 65536; int nret_1 = write_one(g_tstat_id, 991, temp_device_low, 6); int nret_2 = write_one(g_tstat_id, 992, temp_device_high, 6); if ((nret_1 >= 0) && (nret_2 >= 0)) { product_register_value[991] = temp_device_low; product_register_value[992] = temp_device_high; SetPaneString(BAC_SHOW_MISSION_RESULTS, _T("Change bacnet device id success")); } else { MessageBox(_T("Change bacnet device id failed!")); } }
void CCO2_NodeView::OnEnKillfocusEditPoorAlarmSetpoint() { // TODO: 在此添加控件通知处理程序代码 CString temp_cstring; GetDlgItem(IDC_EDIT_POOR_ALARM_SETPOINT)->GetWindowTextW(temp_cstring); int temp_int; temp_int = _wtoi(temp_cstring); int nret = write_one(g_tstat_id, 113, temp_int); if (nret <= 0) { SetPaneString(BAC_SHOW_MISSION_RESULTS, _T("Change poor alarm setpoint time failed!")); PostMessage(WM_CO2_NODE_THREAD_READ, NULL, NULL); } else { SetPaneString(BAC_SHOW_MISSION_RESULTS, _T("Operation Done!")); } ((CButton *)GetDlgItem(IDC_BUTTON_OK))->SetFocus(); }
void CCO2_NodeView::OnEnKillfocusEditCo2NodeBacklightTime() { // TODO: 在此添加控件通知处理程序代码 CString temp_cstring; GetDlgItem(IDC_EDIT_CO2_NODE_BACKLIGHT_TIME)->GetWindowTextW(temp_cstring); int temp_int; temp_int = _wtoi(temp_cstring); int nret = write_one(g_tstat_id, 158, temp_int); if (nret <= 0) { SetPaneString(BAC_SHOW_MISSION_RESULTS, _T("Change backlight time failed!")); PostMessage(WM_CO2_NODE_THREAD_READ, NULL, NULL); } else { SetPaneString(BAC_SHOW_MISSION_RESULTS, _T("Operation Done!")); } ((CButton *)GetDlgItem(IDC_BUTTON_OK))->SetFocus(); }
void CDialogT3::OnTimer(UINT_PTR nIDEvent) { CMainFrame* pMain = (CMainFrame*)AfxGetApp()->m_pMainWnd; CView* pNewView = pMain->m_pViews[5]; CView* pActiveView = pMain->GetActiveView(); if ( pNewView != pActiveView ) // current is minipanel dialog { KillTimer(T3_MODEL); } #if 1 static int nCount = 0,nCount2 = 0; nCount++; nCount2++; if (T3_MODEL == nIDEvent) { CTime now; now = CTime::GetCurrentTime(); //m_datetime = now.Format(_T("%A,%B %d,%Y %H:%M:%S")); // "Saturday, April 12, 2012" //UpdateData(FALSE); if (nCount% 30 == 0) { nCount = 0; BOOL flag=MiniUpdateData(); if (flag) { ShowDialogData(); SetPaneString(2,_T("Online!")); } } if (nCount2%60*10 == 0) { nCount2 = 0; Updatedatabase(); } } #endif CFormView::OnTimer(nIDEvent); }
void CAirQuality::OnTimer(UINT_PTR nIDEvent) { CMainFrame* pMain = (CMainFrame*)AfxGetApp()->m_pMainWnd; CView* pNewView = pMain->m_pViews[7]; CView* pActiveView = pMain->GetActiveView(); if ( pNewView != pActiveView ) // current is minipanel dialog { KillTimer(AirQualityTimer); } #if 1 static int nCount = 0,nCount2 = 0,scantime = 30; nCount++; nCount2++; if (AirQualityTimer == nIDEvent) { CTime now; now = CTime::GetCurrentTime(); m_clock = now.Format(_T("%A,%B %d,%Y %H:%M:%S")); // "Saturday, April 12, 2012" UpdateData(FALSE); if (nCount%scantime == 0) { nCount = 0; if (prodtopc()) { ShowAirqualityDialog(); SetPaneString(1,_T("Online!")); if (writedb) { pctodb(); writedb = FALSE; scantime = 60*3; } } } } #endif CFormView::OnTimer(nIDEvent); }
bool BacnetScreen::read_screen_label() { //一直读到 下一个全是0 的 无效label; for (int i=0;i<BAC_GRPHIC_LABEL_GROUP;i++) { int end_temp_instance = 0; int ret_n; end_temp_instance = BAC_READ_GRPHIC_LABEL_REMAINDER + (BAC_READ_GRPHIC_LABEL_GROUP_NUMBER)*i ; if(end_temp_instance >= BAC_GRPHIC_LABEL_COUNT) end_temp_instance = BAC_GRPHIC_LABEL_COUNT - 1; CString n_temp_result; ret_n = GetPrivateData_Blocking(g_bac_instance,READ_GRPHIC_LABEL_COMMAND,(BAC_READ_GRPHIC_LABEL_GROUP_NUMBER)*i,end_temp_instance,sizeof(Str_label_point)); if(ret_n) { n_temp_result.Format(_T("Read Graphic Label From %d to %d success."),(BAC_READ_GRPHIC_LABEL_GROUP_NUMBER)*i,end_temp_instance); SetPaneString(BAC_SHOW_MISSION_RESULTS,n_temp_result); Sleep(10); if(b_stop_read_grp_label) { n_temp_result.Format(_T("Reading GRP%d: complete"),screen_list_line + 1); SetPaneString(BAC_SHOW_MISSION_RESULTS,n_temp_result); Sleep(10); break; } } else { n_temp_result.Format(_T("Read Graphic Label From %d to %d failed."),(BAC_READ_GRPHIC_LABEL_GROUP_NUMBER)*i,end_temp_instance); SetPaneString(BAC_SHOW_MISSION_RESULTS,n_temp_result); return false; } } return true; }
// CBacnetInput message handlers LRESULT CBacnetInput::InputMessageCallBack(WPARAM wParam, LPARAM lParam) { _MessageInvokeIDInfo *pInvoke =(_MessageInvokeIDInfo *)lParam; bool msg_result=WRITE_FAIL; msg_result = MKBOOL(wParam); CString Show_Results; CString temp_cs = pInvoke->task_info; if(msg_result) { Show_Results = temp_cs + _T("Success!"); SetPaneString(BAC_SHOW_MISSION_RESULTS,Show_Results); //Post_Refresh_Message(g_bac_instance,READINPUT_T3000,pInvoke->mRow,pInvoke->mRow,sizeof(Str_in_point), BAC_INPUT_GROUP); //MessageBox(_T("Bacnet operation success!")); } else { memcpy_s(&m_Input_data.at(pInvoke->mRow),sizeof(Str_in_point),&m_temp_Input_data[pInvoke->mRow],sizeof(Str_in_point));//还原没有改对的值 PostMessage(WM_REFRESH_BAC_INPUT_LIST,pInvoke->mRow,REFRESH_ON_ITEM);//这里调用 刷新线程重新刷新会方便一点; Show_Results = temp_cs + _T("Fail!"); SetPaneString(BAC_SHOW_MISSION_RESULTS,Show_Results); //AfxMessageBox(Show_Results); //MessageBox(_T("Bacnet operation fail!")); } if((pInvoke->mRow%2)==0) //恢复前景和 背景 颜色; m_input_list.SetItemBkColor(pInvoke->mRow,pInvoke->mCol,LIST_ITEM_DEFAULT_BKCOLOR,0); else m_input_list.SetItemBkColor(pInvoke->mRow,pInvoke->mCol,LIST_ITEM_DEFAULT_BKCOLOR_GRAY,0); m_input_list.RedrawItems(pInvoke->mRow,pInvoke->mRow); if(pInvoke) delete pInvoke; return 0; }
void CCO2_View::OnBnClickedBtnCo2ClearCal() { // TODO: Add your control notification handler code here int item_count = m_co2_external_sensor_list.GetItemCount(); for (int i=0;i<item_count;i++) { if(write_one(g_tstat_id,CO2_485_MODBUS_EXT_CO2_OFFSET_START + i,0,3)<0) { MessageBox(_T("Write register failure,Please try again!")); Fresh_External_List(); return; } else { product_register_value[CO2_485_MODBUS_EXT_CO2_OFFSET_START + i] = 0; } } OnBnClickedBtnCo2Refresh(); SetPaneString(1,_T("Clear External Calibration Offset Success!! ")); }
void T38AI8AO::Fresh(){ float progress; if (is_connect()) { CDialog_Progess* pDlg = new CDialog_Progess(this,1,100); pDlg->Create(IDD_DIALOG10_Progress, this); pDlg->ShowProgress(0,0); pDlg->ShowWindow(SW_SHOW); RECT RECT_SET1; GetClientRect(&RECT_SET1); pDlg->MoveWindow(RECT_SET1.left+400,RECT_SET1.bottom-19,RECT_SET1.right/2+20,20); for (int i=0;i<3;i++) { if (pDlg!=NULL) { progress=float((i+1)*(100/3)); pDlg->ShowProgress(int(progress),(int)progress); } Read_Multi(g_tstat_id,&product_register_value[i*100],i*100,100); } pDlg->ShowWindow(SW_HIDE); if(pDlg!=NULL) {delete pDlg; pDlg=NULL;} InitialRegister(); InitialDialog(); AfxBeginThread(_BackFreshing,this); } else { SetPaneString(1,_T("Disconnection")); AfxMessageBox(_T("Please Connect your device")); } }
void CCO2_View::OnEnKillfocusEditCo2Passwor() { // TODO: Add your control notification handler code here UpdateData(); if(m_cs_password.GetLength()!=4) { MessageBox(_T("The password length must be 4 !")); return; } bool bpassword_changed = false; CString temp; CString temp_password[4]; unsigned short short_password[4]; temp = m_cs_password; for (int i=0;i<4;i++) { temp_password[i] = temp.Left(1); temp = temp.Right(3-i); short_password[i] = _wtoi(temp_password[i]); short_password[i] = short_password[i] + 0x30; if(product_register_value[CO2_485_MODBUS_USER_PASSWORD0 + i] != short_password[i]) { if(write_one(g_tstat_id,CO2_485_MODBUS_USER_PASSWORD0 + i,short_password[i])<0) { MessageBox(_T("Write Password Failure,Please Try Again")); Show_PassWord(); return; } else { product_register_value[CO2_485_MODBUS_USER_PASSWORD0 + i] = short_password[i]; SetPaneString(1,_T("Change Password Success!!")); } } } }
void CAirQuality::pctodb() { TRACE(_T("Updatedatabase()start!\n")); KillTimer(AirQualityTimer); //存入数据库中 CADO saveADO; saveADO.OnInitADOConn(); CString sql = _T("select * from AirQuality"); saveADO.m_pRecordset = saveADO.OpenRecordset(sql); if (!saveADO.m_pRecordset->EndOfFile) { saveADO.m_pRecordset->MoveFirst(); for(int i = 0;i<400;i++) { try { saveADO.m_pRecordset->PutCollect("Address",(_bstr_t)vecairquality.at(i).iaddress); saveADO.m_pRecordset->PutCollect("Data",(_bstr_t)vecairquality.at(i).CStvalue); saveADO.m_pRecordset->Update(); saveADO.m_pRecordset->MoveNext(); } catch(...) { SetPaneString(2,_T("Write dababase false!")); return ; } } } else { for(int i = 0;i<400;i++) { try { saveADO.m_pRecordset->AddNew(); saveADO.m_pRecordset->PutCollect("Address",(_bstr_t)vecairquality.at(i).iaddress); saveADO.m_pRecordset->PutCollect("Data",(_bstr_t)vecairquality.at(i).CStvalue); saveADO.m_pRecordset->Update(); } catch(...) { SetPaneString(2,_T("Write dababase false!")); return; } } } saveADO.CloseRecordset(); saveADO.CloseConn(); SetTimer(AirQualityTimer,1000,NULL); }
int BacnetScreen::GetPicFileFunction(unsigned char screen_index ,CString temp_image_folder) { //TRACE(_T("Test")); //CString ChooseFilePath; //CFileDialog dlg(true,_T("*.*"),_T(" "),OFN_HIDEREADONLY ,_T("Pic files (*.*)|*.*||"),NULL,0); //if(IDOK!=dlg.DoModal()) // return ; //ChooseFilePath=dlg.GetPathName(); //MD5是一个32bit的值 按字符存的; pic_sd_struct temp_picture; memset(&temp_picture,0,sizeof(pic_sd_struct)); //char md5_value[33]; //unsigned int total_packet = 0; //unsigned int total_pic_size = 0; unsigned int last_packet_size = 0; //memset(md5_value,0,33); memset(&m_picture_head,0,20); memset(picture_data_buffer,0,400); char * temp_point = picture_data_buffer; int device_obj_instance = g_bac_instance; if(GetPictureBlockData_Blocking(device_obj_instance,screen_index,0,0) > 0) { if((m_picture_head.seg_index != 0) || (m_picture_head.index != screen_list_line) || (m_picture_head.total_seg != 0)) { SetPaneString(BAC_SHOW_MISSION_RESULTS,_T("Get picture file from SD card failed!")); return 0; } else if(((unsigned char)temp_point[0]!= 0x55) || ((unsigned char)temp_point[1]!= 0xff) || ((unsigned char)temp_point[2]!= 0x55) ||((unsigned char)temp_point[3]!= 0xff)) { SetPaneString(BAC_SHOW_MISSION_RESULTS,_T("Get picture file from SD card failed!CRC error!")); return 0; } temp_point = temp_point + 4; temp_picture.total_packet = ((unsigned char)temp_point[3])<<24 | ((unsigned char)temp_point[2]<<16) | ((unsigned char)temp_point[1])<<8 | ((unsigned char)temp_point[0]); temp_point = temp_point + 4; temp_picture.pic_file_size = ((unsigned char)temp_point[3])<<24 | ((unsigned char)temp_point[2]<<16) | ((unsigned char)temp_point[1])<<8 | ((unsigned char)temp_point[0]); temp_point = temp_point + 4; memcpy(temp_picture.md5_32byte,temp_point,33); temp_point = temp_point + 33; memcpy(temp_picture.file_name,temp_point,11); } else { AfxMessageBox(_T("Read Data Timeout")); return 0; } //比对MD5 与设备的是否一致; CString temp_pic_md5_cs; MultiByteToWideChar( CP_ACP, 0, temp_picture.md5_32byte, (int)strlen((char *)temp_picture.md5_32byte)+1, temp_pic_md5_cs.GetBuffer(MAX_PATH), MAX_PATH ); temp_pic_md5_cs.ReleaseBuffer(); CString temp_file_name; MultiByteToWideChar( CP_ACP, 0, temp_picture.file_name, (int)strlen((char *)temp_picture.file_name)+1, temp_file_name.GetBuffer(MAX_PATH), MAX_PATH ); temp_file_name.ReleaseBuffer(); CString Picture_path; CString PicFileTips; CString temp_image_folde; MultiByteToWideChar( CP_ACP, 0, (char *)m_screen_data.at(screen_list_line).picture_file, (int)strlen((char *)m_screen_data.at(screen_list_line).picture_file)+1, PicFileTips.GetBuffer(MAX_PATH), MAX_PATH ); PicFileTips.ReleaseBuffer(); CString temp_now_building_name= g_strCurBuildingDatabasefilePath; PathRemoveFileSpec(temp_now_building_name.GetBuffer(MAX_PATH)); temp_now_building_name.ReleaseBuffer(); temp_image_folde = temp_now_building_name + _T("\\image"); Picture_path=temp_image_folde + _T("\\") + PicFileTips ;//_T("sample1.bmp"); CFileFind temp_find; if(temp_find.FindFile(Picture_path)) { string temp_md5 = MD5(ifstream( Picture_path )).toString(); CString MD5_value; MD5_value = temp_md5.c_str(); if(MD5_value.CompareNoCase(temp_pic_md5_cs) == 0) { SetPaneString(BAC_SHOW_MISSION_RESULTS,_T("Picture already exsit in image folder!")); return 0; } else { SetPaneString(BAC_SHOW_MISSION_RESULTS,_T("Picture changed , ready to update!")); } } else { SetPaneString(BAC_SHOW_MISSION_RESULTS,_T("No picture found in image folder , ready to download!")); } if(temp_picture.pic_file_size % 400 == 0) { last_packet_size = 400; } else { last_packet_size = temp_picture.pic_file_size % 400; } char *ReadBuff=new char[temp_picture.pic_file_size+1];//给位图文件申请内在空间; if(ReadBuff == NULL) { SetPaneString(BAC_SHOW_MISSION_RESULTS,_T("No enough memory!")); return 0; } memset(ReadBuff,0,temp_picture.pic_file_size+1); for (int i=1;i<temp_picture.total_packet;i++) { memset(picture_data_buffer,0,400); if(GetPictureBlockData_Blocking(g_bac_instance,screen_index,i,i) > 0) { if(i!= (temp_picture.total_packet-1)) memcpy(ReadBuff + (i-1)*400,picture_data_buffer,400); else memcpy(ReadBuff + (i-1)*400,picture_data_buffer,last_packet_size); //最后一包只copy 剩余的 字节; CString temp_cs_complet; temp_cs_complet.Format(_T("Read picture file %d / %d"), i*400 ,temp_picture.pic_file_size); SetPaneString(BAC_SHOW_MISSION_RESULTS,temp_cs_complet); g_progress_persent = i * 100 /temp_picture.total_packet; } else { SetPaneString(BAC_SHOW_MISSION_RESULTS,_T("Read picture file timeout , please try again")); } } CString temp_cs_finished; temp_cs_finished.Format(_T("Read picture file complete")); SetPaneString(BAC_SHOW_MISSION_RESULTS,temp_cs_finished); g_progress_persent = 100; #pragma region write_file_buffer22 HANDLE hFile; CString write_file_path; write_file_path = temp_image_folder + _T("\\") + temp_file_name; CFileFind temp_find_pic; if(temp_find_pic.FindFile(write_file_path)) { DeleteFile(write_file_path); } hFile=CreateFile(write_file_path,GENERIC_WRITE,0,NULL,CREATE_ALWAYS,FILE_ATTRIBUTE_NORMAL,NULL); DWORD dWrites; WriteFile(hFile,ReadBuff,temp_picture.pic_file_size,&dWrites,NULL); CloseHandle(hFile); if(ReadBuff) { delete ReadBuff; ReadBuff = NULL; } #pragma endregion write_file_buffer22 return 1; #if 0 #pragma region read file buffer CFile Filetxt;//用来读取位图文件 DWORD FileLen=0;//位图的长度 char* FileBuff;//用于存放位图信息 string temp_md5 = MD5(ifstream( ChooseFilePath )).toString(); CString MD5_value; MD5_value = temp_md5.c_str(); CString temp_show; temp_show.Format(_T("The File MD5 is :")); if(!Filetxt.Open(ChooseFilePath,CFile::modeRead))//打开文件 { //MessageBox(NULL,"打开文本信息失败!",NULL, MB_OK); return false; } FileLen=Filetxt.GetLength();//得到位图的长度 FileBuff=new char[FileLen+1];//给位图文件申请内在空间 DWORD DwPic=Filetxt.GetLength(); memset(FileBuff,0,FileLen+1);//初始化位图文件的空间 if(!FileBuff)//判断位图空间是否申请成功 { return false; } if(Filetxt.Read(FileBuff,FileLen)!=FileLen)//读取文本信息,存入到FileBuff中去 { return false; } //unsigned int total_packet = 0; unsigned int temp_filepack = 0; unsigned int last_packet_data_size = 0; if(FileLen % 400 == 0) { temp_filepack = FileLen / 400; last_packet_data_size = 400; } else { temp_filepack = FileLen / 400 + 1; last_packet_data_size = FileLen % 400; } total_packet = temp_filepack + 1; //其中 1是 第一包的头 传 MD5值和 文件总包数.; char md5_32byte[33]; memset(md5_32byte,0,33); WideCharToMultiByte( CP_ACP, 0, MD5_value.GetBuffer(), -1, md5_32byte, 255, NULL, NULL ); char send_buffer[400]; memset(send_buffer,0 , 400); CString temp_cs_show; for (int z=0;z<total_packet;z++) { memset(send_buffer,0,400); if(z == 0) { memcpy(send_buffer,&total_packet,4); memcpy(send_buffer+4,md5_32byte,32); } else if(z < total_packet -1) { memcpy(send_buffer,FileBuff + z*400,400); } else { memcpy(send_buffer,FileBuff + z*400,last_packet_data_size); } if(WriteBacnetPictureData_Blocking(g_bac_instance,screen_index,z,total_packet,(unsigned char *)send_buffer)< 0) { MessageBox(_T("Write pocture file into SD disk timeout.")); return false; } g_progress_persent = z * 100 /total_packet; temp_cs_show.Format(_T("Saving picture file into SD disk .(%u/%u)"),z*400,total_packet*400+last_packet_data_size); SetPaneString(BAC_SHOW_MISSION_RESULTS,temp_cs_show); } g_progress_persent = 100; temp_cs_show.Format(_T("Saving picture file into SD disk success.")); SetPaneString(BAC_SHOW_MISSION_RESULTS,temp_cs_show); return true; #pragma endregion read file buffer #endif //#pragma region write_file_buffer22 // // HANDLE hFile; // hFile=CreateFile(_T("D:\\Test.ico"),GENERIC_WRITE,0,NULL,CREATE_ALWAYS,FILE_ATTRIBUTE_NORMAL,NULL); // DWORD dWrites; // WriteFile(hFile,FileBuff,FileLen,&dWrites,NULL); // CloseHandle(hFile); // if(FileBuff) // delete FileBuff; // //#pragma endregion write_file_buffer22 }
void CT3000App::JudgeDB(){ CADO ado; int versionno=0; ado.OnInitADOConn(); if (ado.IsHaveTable(ado,_T("Version")))//有Version表 { CString sql=_T("Select * from Version"); ado.m_pRecordset=ado.OpenRecordset(sql); ado.m_pRecordset->MoveFirst(); while (!ado.m_pRecordset->EndOfFile) { versionno=ado.m_pRecordset->GetCollect(_T("VersionNO")); ado.m_pRecordset->MoveNext(); } ado.CloseRecordset(); } ado.CloseConn(); if (g_versionNO>versionno)//版本过低 { SetPaneString(0,_T("The version of DB is lower,Updating.....")); _ConnectionPtr srcConTmp; _RecordsetPtr srcRsTemp; srcConTmp.CreateInstance("ADODB.Connection"); srcRsTemp.CreateInstance("ADODB.Recordset"); srcConTmp->Open(g_strDatabasefilepath.GetString(),"","",adModeUnknown); srcRsTemp->Open(_T("select * from ALL_NODE"),_variant_t((IDispatch *)srcConTmp,true),adOpenStatic,adLockOptimistic,adCmdText); ALL_NODE temp; while(!srcRsTemp->EndOfFile){ temp.MainBuilding_Name=srcRsTemp->GetCollect(_T("MainBuilding_Name")); temp.Building_Name=srcRsTemp->GetCollect(_T("Building_Name")); temp.Serial_ID=srcRsTemp->GetCollect(_T("Serial_ID")); temp.Floor_name=srcRsTemp->GetCollect(_T("Floor_name")); temp.Room_name=srcRsTemp->GetCollect(_T("Room_name")); temp.Product_name=srcRsTemp->GetCollect(_T("Product_name")); temp.Product_class_ID=srcRsTemp->GetCollect(_T("Product_class_ID")); temp.Product_ID=srcRsTemp->GetCollect(_T("Product_ID")); temp.Screen_Name=srcRsTemp->GetCollect(_T("Screen_Name")); temp.Bautrate=srcRsTemp->GetCollect(_T("Bautrate")); temp.Background_imgID=srcRsTemp->GetCollect(_T("Background_imgID")); temp.Hardware_Ver=srcRsTemp->GetCollect(_T("Hardware_Ver")); temp.Software_Ver=srcRsTemp->GetCollect(_T("Software_Ver")); // temp.Com_Port=srcRsTemp->GetCollect(_T("Com_Port")); temp.EPsize=srcRsTemp->GetCollect(_T("EPsize")); // temp.Protocol=srcRsTemp->GetCollect(_T("Protocol")); srcRsTemp->MoveNext(); m_AllNodes.push_back(temp); } srcRsTemp->Close(); if (srcConTmp->State) {srcConTmp->Close(); } CString filePath=g_strExePth+_T("Database\\T3000.mdb"); DeleteFile(filePath); HANDLE hFind;// WIN32_FIND_DATA wfd;// hFind = FindFirstFile(filePath, &wfd);// if (hFind==INVALID_HANDLE_VALUE)//说明当前目录下无t3000.mdb { //CopyFile(g_strOrigDatabaseFilePath,g_strDatabasefilepath,FALSE);// //没有找到就创建一个默认的数据库 filePath=g_strExePth+_T("Database\\T3000.mdb"); HRSRC hrSrc = FindResource(AfxGetResourceHandle(), MAKEINTRESOURCE(IDR_T3000_DATABASE), _T("DB")); HGLOBAL hGlobal = LoadResource(AfxGetResourceHandle(), hrSrc); LPVOID lpExe = LockResource(hGlobal); CFile file; if(file.Open(filePath, CFile::modeCreate | CFile::modeWrite)) file.Write(lpExe, (UINT)SizeofResource(AfxGetResourceHandle(), hrSrc)); file.Close(); ::UnlockResource(hGlobal); ::FreeResource(hGlobal); }// CString strsql; srcConTmp->Open(g_strDatabasefilepath.GetString(),"","",adModeUnknown); try { for (int i=0;i<m_AllNodes.size();i++) { strsql.Format(_T("insert into ALL_NODE (MainBuilding_Name,Building_Name,Serial_ID,Floor_name,Room_name,Product_name,Product_class_ID,Product_ID,Screen_Name,Bautrate,Background_imgID,Hardware_Ver,Software_Ver,EPsize) values('" +m_AllNodes[i].MainBuilding_Name+"','" +m_AllNodes[i].Building_Name+"','" +m_AllNodes[i].Serial_ID+"','" +m_AllNodes[i].Floor_name+"','" +m_AllNodes[i].Room_name+"','" +m_AllNodes[i].Product_name+"','" +m_AllNodes[i].Product_class_ID+"','" +m_AllNodes[i].Product_ID+"','" +m_AllNodes[i].Screen_Name+"','" +m_AllNodes[i].Bautrate+"','" +m_AllNodes[i].Background_imgID+"','" +m_AllNodes[i].Hardware_Ver+"','" +m_AllNodes[i].Software_Ver+"','" +m_AllNodes[i].EPsize+"')")); srcConTmp->Execute(strsql.GetString(),NULL,adCmdText); } } catch(_com_error *e) { AfxMessageBox(e->ErrorMessage()); } if (srcConTmp->State) {srcConTmp->Close(); } srcConTmp=NULL; } }
void CCO2_NodeView::UpdateRadio_Main() { bitset<16> Temp_bitset(product_register_value[169]); if (((CButton *)GetDlgItem(IDC_RADIO1))->GetCheck() == true) { Temp_bitset[0] = 1; } else if (((CButton *)GetDlgItem(IDC_RADIO2))->GetCheck() == true) { Temp_bitset[0] = 0; } if (((CButton *)GetDlgItem(IDC_RADIO3))->GetCheck() == true) { Temp_bitset[1] = 1; } else if (((CButton *)GetDlgItem(IDC_RADIO4))->GetCheck() == true) { Temp_bitset[1] = 0; } if (((CButton *)GetDlgItem(IDC_RADIO5))->GetCheck() == true) { Temp_bitset[2] = 1; } else if (((CButton *)GetDlgItem(IDC_RADIO6))->GetCheck() == true) { Temp_bitset[2] = 0; } if (((CButton *)GetDlgItem(IDC_RADIO7))->GetCheck() == true) { Temp_bitset[4] = 1; } else if (((CButton *)GetDlgItem(IDC_RADIO8))->GetCheck() == true) { Temp_bitset[4] = 0; } if (((CButton *)GetDlgItem(IDC_RADIO9))->GetCheck() == true) { Temp_bitset[5] = 1; } else if (((CButton *)GetDlgItem(IDC_RADIO10))->GetCheck() == true) { Temp_bitset[5] = 0; } if (((CButton *)GetDlgItem(IDC_RADIO11))->GetCheck() == true) { Temp_bitset[6] = 1; } else if (((CButton *)GetDlgItem(IDC_RADIO12))->GetCheck() == true) { Temp_bitset[6] = 0; } if (((CButton *)GetDlgItem(IDC_RADIO13))->GetCheck() == true) { Temp_bitset[7] = 1; } else if (((CButton *)GetDlgItem(IDC_RADIO14))->GetCheck() == true) { Temp_bitset[7] = 0; } if (((CButton *)GetDlgItem(IDC_RADIO15))->GetCheck() == true) { Temp_bitset[8] = 1; } else if (((CButton *)GetDlgItem(IDC_RADIO16))->GetCheck() == true) { Temp_bitset[8] = 0; } product_register_value[169] = (unsigned short)Temp_bitset.to_ulong(); int nret = write_one(g_tstat_id, 169, product_register_value[169]); if (nret <= 0) { SetPaneString(BAC_SHOW_MISSION_RESULTS, _T("Operation failed!")); PostMessage(WM_CO2_NODE_THREAD_READ, NULL, NULL); } else { SetPaneString(BAC_SHOW_MISSION_RESULTS, _T("Operation Done!")); } ((CButton *)GetDlgItem(IDC_BUTTON_OK))->SetFocus(); }
int BacnetScreen::WritePicFileFunction(CString ChooseFilePath,unsigned char screen_index,CString pic_filename) { //TRACE(_T("Test")); //CString ChooseFilePath; //CFileDialog dlg(true,_T("*.*"),_T(" "),OFN_HIDEREADONLY ,_T("Pic files (*.*)|*.*||"),NULL,0); //if(IDOK!=dlg.DoModal()) // return ; //ChooseFilePath=dlg.GetPathName(); //MD5是一个32bit的值 按字符存的; #pragma region read file buffer pic_sd_struct temp_pic; memset(&temp_pic,0,sizeof(pic_sd_struct)); CFile Filetxt;//用来读取位图文件 DWORD FileLen=0;//位图的长度 char* FileBuff;//用于存放位图信息 //unsigned int pic_file_size = 0; string temp_md5 = MD5(ifstream( ChooseFilePath )).toString(); CString MD5_value; MD5_value = temp_md5.c_str(); CString temp_show; temp_show.Format(_T("The File MD5 is :")); if(!Filetxt.Open(ChooseFilePath,CFile::modeRead))//打开文件 { //MessageBox(NULL,"打开文本信息失败!",NULL, MB_OK); return false; } FileLen=Filetxt.GetLength();//得到位图的长度 FileBuff=new char[FileLen+1];//给位图文件申请内在空间 DWORD DwPic=Filetxt.GetLength(); memset(FileBuff,0,FileLen+1);//初始化位图文件的空间 if(!FileBuff)//判断位图空间是否申请成功 { return false; } if(Filetxt.Read(FileBuff,FileLen)!=FileLen)//读取文本信息,存入到FileBuff中去 { return false; } temp_pic.pic_file_size = FileLen; //unsigned int total_packet = 0; unsigned int temp_filepack = 0; unsigned int last_packet_data_size = 0; if(FileLen % 400 == 0) { temp_filepack = FileLen / 400; last_packet_data_size = 400; } else { temp_filepack = FileLen / 400 + 1; last_packet_data_size = FileLen % 400; } temp_pic.total_packet = temp_filepack + 1; //其中 1是 第一包的头 传 MD5值和 文件总包数.; //char crc_cal[4]; temp_pic.crc_cal[0] = 0x55 ; temp_pic.crc_cal[1] = 0xff ;temp_pic.crc_cal[2] = 0x55 ;temp_pic.crc_cal[3] = 0xff ; //第一包里面用 前4个字节 0x55ff55ff来 区别旧版本 不回复的信息; //char md5_32byte[33]; memset(temp_pic.md5_32byte,0,33); WideCharToMultiByte( CP_ACP, 0, MD5_value.GetBuffer(), -1, temp_pic.md5_32byte, 255, NULL, NULL ); if(pic_filename.GetLength() >= 11) pic_filename = pic_filename.Left(10); WideCharToMultiByte( CP_ACP, 0, pic_filename.GetBuffer(), -1, temp_pic.file_name, 255, NULL, NULL ); char send_buffer[400]; memset(send_buffer,0 , 400); CString temp_cs_show; int device_obj_instance = g_bac_instance; for (int z=0;z<temp_pic.total_packet;z++) { memset(send_buffer,0,400); if(z == 0) { memcpy(send_buffer,&temp_pic,sizeof(pic_sd_struct)); //memcpy(send_buffer,temp_pic.crc_cal,4); //memcpy(send_buffer+4,&temp_pic.total_packet,4); //memcpy(send_buffer+8,&temp_pic.pic_file_size,4); //memcpy(send_buffer+12,temp_pic.md5_32byte,33); } else if(z < temp_pic.total_packet - 1) { memcpy(send_buffer,FileBuff + (z-1)*400,400); } else { memcpy(send_buffer,FileBuff + (z-1)*400,last_packet_data_size); } if(WriteBacnetPictureData_Blocking(device_obj_instance,screen_index,z,temp_pic.total_packet,(unsigned char *)send_buffer)< 0) { MessageBox(_T("Write picture file into SD disk timeout.")); return false; } g_progress_persent = z * 100 /temp_pic.total_packet; temp_cs_show.Format(_T("Saving picture file into SD disk .(%u/%u)"),z*400,(temp_pic.total_packet)*400+last_packet_data_size); SetPaneString(BAC_SHOW_MISSION_RESULTS,temp_cs_show); } g_progress_persent = 100; temp_cs_show.Format(_T("Saving picture file into SD disk success.")); SetPaneString(BAC_SHOW_MISSION_RESULTS,temp_cs_show); return true; #pragma endregion read file buffer }
LRESULT CCO2_NodeView::Fresh_CO2_Node_Item(WPARAM wParam, LPARAM lParam) { int cmp_ret;//compare if match it will 0; int Changed_Item = (int)wParam; int Changed_SubItem = (int)lParam; int nret = 0; int int_value = 0; CString temp_task_info; CString New_CString = m_co2_node_list.GetItemText(Changed_Item, Changed_SubItem); if (Changed_SubItem == CO2_NODE_TYPE_VALUE) { int nreg = 0; if (Changed_Item == ROW_CO2) { int_value = _wtoi(New_CString); nret = write_one(g_tstat_id, 108, int_value); } else if (Changed_Item == ROW_TEMPERATURE) { float nvalue = _wtof(New_CString); int nwritevalue = (int)(nvalue * 10); //if (product_register_value[124] == 0) //{ // if (product_register_value[125] == 0) // { // nreg = 121; // } // else // { // nreg = 122; // } //} //else //{ if (product_register_value[125] == 0) { nreg = 119; } else { nreg = 120; } //} nret = write_one(g_tstat_id, nreg, nwritevalue); } else if (Changed_Item == ROW_HUMIDITY) { float nvalue = _wtof(New_CString); int nwritevalue = (int)(nvalue * 10); nret = write_one(g_tstat_id, 116, nwritevalue); } } else if (Changed_SubItem == CO2_NODE_SETPOINT) { if (Changed_Item == ROW_CO2) { int_value = _wtoi(New_CString); nret = write_one(g_tstat_id, 166, int_value); } else if (Changed_Item == ROW_TEMPERATURE) { float nvalue = _wtof(New_CString); int nwritevalue = (int)(nvalue * 10); nret = write_one(g_tstat_id, 167, nwritevalue); } else if (Changed_Item == ROW_HUMIDITY) { float nvalue = _wtof(New_CString); int nwritevalue = (int)(nvalue * 10); nret = write_one(g_tstat_id, 168, nwritevalue); } } else if (Changed_SubItem == CO2_NODE_MIN_VALUE) { if (Changed_Item == ROW_CO2) { int_value = _wtoi(New_CString); nret = write_one(g_tstat_id, 132, int_value); } else if (Changed_Item == ROW_TEMPERATURE) { int_value = (unsigned short)_wtoi(New_CString); nret = write_one(g_tstat_id, 128, int_value); } else if (Changed_Item == ROW_HUMIDITY) { int_value = _wtoi(New_CString); nret = write_one(g_tstat_id, 130, int_value); } } else if (Changed_SubItem == CO2_NODE_MAX_VALUE) { if (Changed_Item == ROW_CO2) { int_value = _wtoi(New_CString); nret = write_one(g_tstat_id, 133, int_value); } else if (Changed_Item == ROW_TEMPERATURE) { int_value = (unsigned short)_wtoi(New_CString); nret = write_one(g_tstat_id, 129, int_value); } else if (Changed_Item == ROW_HUMIDITY) { int_value = _wtoi(New_CString); nret = write_one(g_tstat_id, 131, int_value); } } else if (Changed_SubItem == CO2_NODE_CALIBRATION) { if (product_register_value[127] == 1) { if (Changed_Item == ROW_CO2) { int_value = _wtoi(New_CString); nret = write_one(g_tstat_id, 147, int_value); } else if (Changed_Item == ROW_TEMPERATURE) { int_value = _wtoi(New_CString); nret = write_one(g_tstat_id, 148, int_value); } else if (Changed_Item == ROW_HUMIDITY) { int_value = _wtoi(New_CString); nret = write_one(g_tstat_id, 149, int_value); } } else if ((product_register_value[127] == 2) || (product_register_value[127] == 3)) { if (Changed_Item == ROW_CO2) { int_value = _wtoi(New_CString); nret = write_one(g_tstat_id, 144, int_value); } else if (Changed_Item == ROW_TEMPERATURE) { int_value = _wtoi(New_CString); nret = write_one(g_tstat_id, 145, int_value); } else if (Changed_Item == ROW_HUMIDITY) { int_value = _wtoi(New_CString); nret = write_one(g_tstat_id, 146, int_value); } } } if (nret <= 0) { SetPaneString(BAC_SHOW_MISSION_RESULTS, _T("Operation failed!")); PostMessage(WM_CO2_NODE_THREAD_READ, NULL, NULL); } else { SetPaneString(BAC_SHOW_MISSION_RESULTS, _T("Operation Done!")); } return 1; }
//Add 20130724 by Fance LRESULT CCO2_View::ResumeCO2MessageCallBack(WPARAM wParam, LPARAM lParam) { UINT temp_id; _MessageWriteOneInfo *Write_Struct_feedback =(_MessageWriteOneInfo *)lParam; bool msg_result=WRITE_FAIL; msg_result = MKBOOL(wParam); vector <int>::iterator Iter; if(msg_result) { int indexid = -1; for (int i=0;i<(int)Change_Color_ID.size();i++) { if(Change_Color_ID.at(i)!=Write_Struct_feedback->CTRL_ID) continue; else indexid = i; } if(indexid!=-1) { Iter = Change_Color_ID.begin()+indexid; Change_Color_ID.erase(Iter); } CString temp; temp.Format(_T("Change \"%s\" value from %d to %d success!"), Write_Struct_feedback->Changed_Name, Write_Struct_feedback->old_value, Write_Struct_feedback->new_value); temp_id = Write_Struct_feedback->CTRL_ID; SetPaneString(1,temp); product_register_value[Write_Struct_feedback->address]= Write_Struct_feedback->new_value; if(Write_Struct_feedback!=NULL) delete Write_Struct_feedback; //MessageBox(temp); } else { CString temp; temp.Format(_T("Change \"%s\" value from %d to %d Fail!"), Write_Struct_feedback->Changed_Name, Write_Struct_feedback->old_value, Write_Struct_feedback->new_value); temp_id = Write_Struct_feedback->CTRL_ID; SetPaneString(1,temp); Beep(10,100); product_register_value[Write_Struct_feedback->address]= Write_Struct_feedback->old_value; //GetDlgItem(Write_Struct_feedback->CTRL_ID)->SetWindowTextW(_T("")); int indexid = -1; for (int i=0;i<(int)Change_Color_ID.size();i++) { if(Change_Color_ID.at(i)!=Write_Struct_feedback->CTRL_ID) continue; else indexid = i; } Iter = Change_Color_ID.begin()+indexid; if(indexid!=-1) { Iter = Change_Color_ID.begin()+indexid; Change_Color_ID.erase(Iter); } if(Write_Struct_feedback!=NULL) { delete Write_Struct_feedback; } } Fresh(); GetDlgItem(temp_id)->Invalidate(); return 0; }
LRESULT CTStatOutputView::OutputMessageCallBack(WPARAM wParam, LPARAM lParam) { int msg_result=(int) wParam; CString temp_task_info; CString Show_Results; LoadTstat_OutputData(); if (msg_result==1||msg_result==2)//单写 { _MessageWriteOneInfo_List *pInvoke =(_MessageWriteOneInfo_List *)lParam; //pInvoke->list_type=LIST_TYPE_OUTPUT_TSTAT; CString temp_cs = pInvoke->Changed_Name; if (msg_result==1) { Show_Results = temp_cs + _T(" Success!"); SetPaneString(BAC_SHOW_MISSION_RESULTS,Show_Results); } else { Show_Results = temp_cs + _T("Fail!"); SetPaneString(BAC_SHOW_MISSION_RESULTS,Show_Results); } Fresh_One_Item(pInvoke->mRow); if((pInvoke->mRow%2)==0)//恢复前景和 背景 颜色; m_output_list.SetItemBkColor(pInvoke->mRow,pInvoke->mCol,LIST_ITEM_DEFAULT_BKCOLOR,0); else m_output_list.SetItemBkColor(pInvoke->mRow,pInvoke->mCol,LIST_ITEM_DEFAULT_BKCOLOR_GRAY,0); m_output_list.RedrawItems(pInvoke->mRow,pInvoke->mRow); if(pInvoke) delete pInvoke; } if (msg_result==3||msg_result==4)//多写 { _MessageWriteMultiInfo_List *pInvoke =(_MessageWriteMultiInfo_List *)lParam; CString temp_cs = pInvoke->Changed_Name; if (msg_result==3){ Show_Results = temp_cs + _T("Success!"); SetPaneString(BAC_SHOW_MISSION_RESULTS,Show_Results); } else{ Show_Results = temp_cs + _T("Fail!"); SetPaneString(BAC_SHOW_MISSION_RESULTS,Show_Results); } Fresh_One_Item(pInvoke->mRow); // PostMessage(WM_REFRESH_BAC_INPUT_LIST,0,0); if((pInvoke->mRow%2)==0) //恢复前景和 背景 颜色; m_output_list.SetItemBkColor(pInvoke->mRow,pInvoke->mCol,LIST_ITEM_DEFAULT_BKCOLOR,0); else m_output_list.SetItemBkColor(pInvoke->mRow,pInvoke->mCol,LIST_ITEM_DEFAULT_BKCOLOR_GRAY,0); m_output_list.RedrawItems(pInvoke->mRow,pInvoke->mRow); if(pInvoke) delete pInvoke; } return 0; }
void CCO2_NodeView::UpdateRadio_ScrollDisplay() { bitset<16> Temp_bitset(product_register_value[170]); if (((CButton *)GetDlgItem(IDC_RADIO_SCROLL1))->GetCheck() == true) { Temp_bitset[0] = 1; } else if (((CButton *)GetDlgItem(IDC_RADIO_SCROLL2))->GetCheck() == true) { Temp_bitset[0] = 0; } if (((CButton *)GetDlgItem(IDC_RADIO_SCROLL3))->GetCheck() == true) { Temp_bitset[1] = 1; } else if (((CButton *)GetDlgItem(IDC_RADIO_SCROLL4))->GetCheck() == true) { Temp_bitset[1] = 0; } if (((CButton *)GetDlgItem(IDC_RADIO_SCROLL5))->GetCheck() == true) { Temp_bitset[2] = 1; } else if (((CButton *)GetDlgItem(IDC_RADIO_SCROLL6))->GetCheck() == true) { Temp_bitset[2] = 0; } if (((CButton *)GetDlgItem(IDC_RADIO_SCROLL7))->GetCheck() == true) { Temp_bitset[3] = 1; } else if (((CButton *)GetDlgItem(IDC_RADIO_SCROLL8))->GetCheck() == true) { Temp_bitset[3] = 0; } if (((CButton *)GetDlgItem(IDC_RADIO_SCROLL9))->GetCheck() == true) { Temp_bitset[4] = 1; } else if (((CButton *)GetDlgItem(IDC_RADIO_SCROLL10))->GetCheck() == true) { Temp_bitset[4] = 0; } if (((CButton *)GetDlgItem(IDC_RADIO_SCROLL11))->GetCheck() == true) { Temp_bitset[5] = 1; } else if (((CButton *)GetDlgItem(IDC_RADIO_SCROLL12))->GetCheck() == true) { Temp_bitset[5] = 0; } if (((CButton *)GetDlgItem(IDC_RADIO_SCROLL13))->GetCheck() == true) { Temp_bitset[7] = 1; } else if (((CButton *)GetDlgItem(IDC_RADIO_SCROLL14))->GetCheck() == true) { Temp_bitset[7] = 0; } if (((CButton *)GetDlgItem(IDC_RADIO_SCROLL15))->GetCheck() == true) { Temp_bitset[8] = 1; } else if (((CButton *)GetDlgItem(IDC_RADIO_SCROLL16))->GetCheck() == true) { Temp_bitset[8] = 0; } if (((CButton *)GetDlgItem(IDC_RADIO_SCROLL17))->GetCheck() == true) { Temp_bitset[9] = 1; } else if (((CButton *)GetDlgItem(IDC_RADIO_SCROLL18))->GetCheck() == true) { Temp_bitset[9] = 0; } if (((CButton *)GetDlgItem(IDC_RADIO_SCROLL19))->GetCheck() == true) { Temp_bitset[10] = 1; } else if (((CButton *)GetDlgItem(IDC_RADIO_SCROLL20))->GetCheck() == true) { Temp_bitset[10] = 0; } if (((CButton *)GetDlgItem(IDC_RADIO_SCROLL21))->GetCheck() == true) { Temp_bitset[11] = 1; } else if (((CButton *)GetDlgItem(IDC_RADIO_SCROLL22))->GetCheck() == true) { Temp_bitset[11] = 0; } product_register_value[170] = (unsigned short)Temp_bitset.to_ulong(); int nret = write_one(g_tstat_id, 170, product_register_value[170]); if (nret <= 0) { SetPaneString(BAC_SHOW_MISSION_RESULTS, _T("Operation failed!")); PostMessage(WM_CO2_NODE_THREAD_READ, NULL, NULL); } else { SetPaneString(BAC_SHOW_MISSION_RESULTS, _T("Operation Done!")); } ((CButton *)GetDlgItem(IDC_BUTTON_OK))->SetFocus(); }
LRESULT CTStatOutputView::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 strText; CString temp_task_info; CString New_CString = m_output_list.GetItemText(Changed_Item,Changed_SubItem); strText=New_CString; CString cstemp_value; int lRow=Changed_Item; int lCol=Changed_SubItem; if (New_CString.CompareNoCase(NO_APPLICATION)==0) { return 0 ; } BOOL IS_SEND=FALSE; _MessageWriteOneInfo_List *pwrite_info = new _MessageWriteOneInfo_List; pwrite_info->list_type=LIST_TYPE_OUTPUT_TSTAT; #if 0 if(lCol == TStat_OutputName) { if (New_CString.CompareNoCase(m_tstat_output_data.at(Changed_Item).OutputName.StrValue)==0) { return 0; } CBADO bado; bado.SetDBPath(g_strCurBuildingDatabasefilePath); bado.OnInitADOConn(); CString strSerial; strSerial.Format(_T("%d"),g_serialNum); CString strsql; strsql.Format(_T("select * from IONAME where SERIAL_ID = '%s'"),strSerial); bado.m_pRecordset=bado.OpenRecordset(strsql); //m_RsTmp->Open((_variant_t)strsql,_variant_t((IDispatch *)m_ConTmp,true),adOpenStatic,adLockOptimistic,adCmdText); if(VARIANT_FALSE==bado.m_pRecordset->EndOfFile)//update { CString strField; switch (lRow+1) { case 1: strField=_T("OUTPUT1"); break; case 2: strField=_T("OUTPUT2"); break; case 3: strField=_T("OUTPUT3"); break; case 4: strField=_T("OUTPUT4"); break; case 5: strField=_T("OUTPUT5"); break; case 6: strField=_T("OUTPUT6"); break; case 7: strField=_T("OUTPUT7"); break; } try { CString str_temp; str_temp.Format(_T("update IONAME set "+strField+" = '"+strText+"' where SERIAL_ID = '"+strSerial+"'")); //AfxMessageBox(str_temp ); bado.m_pConnection->Execute(str_temp.GetString(),NULL,adCmdText); } catch(_com_error *e) { AfxMessageBox(e->ErrorMessage()); } // m_FlexGrid.put_TextMatrix(lRow,lCol,strText); } else//inerst { switch (lRow+1) { case 1: g_strOutName1=strText; break; case 2: g_strOutName2=strText; break; case 3: g_strOutName3=strText; break; case 4: g_strOutName4=strText; break; case 5: g_strOutName5=strText; break; case 6: g_strOutName6=strText; break; case 7: g_strOutName7=strText; break; } CString str_temp; str_temp.Format(_T("insert into IONAME values('%s','%s','%s','%s','%s','%s','%s','%s','%s','%s','%s','%s','%s','%s','%s','%s','%s','%s')"), strSerial, g_strInName1, g_strInName2, g_strInName3, g_strInName4, g_strInName5, g_strInName6, g_strInName7, g_strOutName1, g_strOutName2, g_strOutName3, g_strOutName4, g_strOutName5, g_strOutName6, g_strOutName7, g_strInName8, g_strInHumName, g_strSensorName ); try { bado.m_pConnection->Execute(str_temp.GetString(),NULL,adCmdText); } catch(_com_error *e) { AfxMessageBox(e->ErrorMessage()); } // m_FlexGrid.put_TextMatrix(lRow,lCol,strText); } switch (lRow+1) { case 1: g_strOutName1=strText; break; case 2: g_strOutName2=strText; break; case 3: g_strOutName3=strText; break; case 4: g_strOutName4=strText; break; case 5: g_strOutName5=strText; break; case 6: g_strOutName6=strText; break; case 7: g_strOutName7=strText; break; } bado.CloseRecordset(); bado.CloseConn(); m_tstat_output_data.at(Changed_Item).OutputName.StrValue=New_CString; Fresh_One_Item(Changed_Item); } #endif if(lCol == TStat_OutputName) { if (Changed_Item > 7) { IS_SEND=FALSE; m_output_list.Set_Edit(false); return 0; } CString cs_temp = m_output_list.GetItemText(Changed_Item,Changed_SubItem); if(cs_temp.GetLength()> STR_IN_LABEL) //长度不能大于结构体定义的长度; { cs_temp.Delete(8,cs_temp.GetLength()-8); } if (m_tstat_output_data.at(Changed_Item).OutputName.StrValue.CompareNoCase(cs_temp)==0) { PostMessage(WM_REFRESH_BAC_OUTPUT_LIST,NULL,NULL); return 0; } char cTemp1[8]; memset(cTemp1,0,8); WideCharToMultiByte( CP_ACP, 0, cs_temp.GetBuffer(), -1, cTemp1, 8, NULL, NULL ); _MessageWriteMultiInfo_List *pwrite_info = new _MessageWriteMultiInfo_List; pwrite_info->device_id=g_tstat_id; pwrite_info->Changed_Name.Format(_T("Change outputname%d from %s to %s"),Changed_Item,m_tstat_output_data.at(Changed_Item).OutputName.StrValue,cs_temp); pwrite_info->hwnd=g_hwnd_now; pwrite_info->mRow=Changed_Item; pwrite_info->mCol=Changed_SubItem; pwrite_info->Start_Address=m_tstat_output_data.at(Changed_Item).OutputName.regAddress; memcpy_s(pwrite_info->RegValue,STR_IN_LABEL-1,cTemp1,STR_IN_LABEL-1); m_output_list.SetItemBkColor(Changed_Item,Changed_SubItem,LIST_ITEM_CHANGED_BKCOLOR); if(!PostThreadMessage(nThreadID,MY_WRITE_MULTI_LIST,(WPARAM)pwrite_info,NULL))//post thread msg { return FALSE; } else { return TRUE; } } if(lCol == TStat_AM){ if (product_type==CS3000) { if (m_tstat_output_data.at(0).Signal_Type.StrValue.CompareNoCase(New_CString)!=0) { IS_SEND=TRUE; pwrite_info->Changed_Name.Format(_T("%s,From %s to %s"),m_tstat_output_data.at(lRow).OutputName.StrValue,m_tstat_output_data.at(lRow).Value.StrValue,New_CString); pwrite_info->address=m_tstat_output_data.at(lRow).Signal_Type.regAddress; if (New_CString.CompareNoCase(_T("Current"))==0) { pwrite_info->new_value=0; } else { pwrite_info->new_value=1; } } } } if(lCol == TStat_Unit){ if (product_type==CS3000) { if (m_tstat_output_data.at(0).Range.StrValue.CompareNoCase(New_CString)!=0) { IS_SEND=TRUE; pwrite_info->Changed_Name.Format(_T("%s,From %s to %s"),m_tstat_output_data.at(lRow).OutputName.StrValue,m_tstat_output_data.at(lRow).Range.StrValue,New_CString); pwrite_info->address=m_tstat_output_data.at(lRow).Range.regAddress; pwrite_info->new_value=_wtoi(New_CString); } } } if (lCol == TStat_Value){ //if (m_tstat_output_data.at(lRow).Value.StrValue.CompareNoCase(New_CString)==0)//选的字符和内存的值相同的话,就返回 //{ // m_output_list.Set_Edit(false); // IS_SEND=FALSE; // return 0; //} int Output_Value=(int)(_wtof(New_CString)*10); if(Output_Value >1000) { SetPaneString(BAC_SHOW_MISSION_RESULTS,_T("Please input value between 0 - 100 ")); PostMessage(WM_REFRESH_BAC_OUTPUT_LIST,NULL,NULL); return 0; } if (m_tstat_output_data.at(lRow).Value.RegValue==Output_Value) { m_output_list.Set_Edit(false); IS_SEND=FALSE; return 0; } IS_SEND=TRUE; pwrite_info->Changed_Name.Format(_T("Value,From %u to %s"),m_tstat_output_data.at(lRow).Function.RegValue,New_CString); pwrite_info->address=m_tstat_output_data.at(lRow).Value.regAddress; pwrite_info->new_value=Output_Value; } if (lCol == TStat_Range) { if (m_tstat_output_data.at(lRow).Range.StrValue.CompareNoCase(New_CString)==0)//选的字符和内存的值相同的话,就返回 { m_output_list.Set_Edit(false); IS_SEND=FALSE; return 0; } if (New_CString.CompareNoCase(_T("PWM(0-100%)"))==0)//是PWM { //检测当前的PWM状态的个数 int PWMNUMBER =0; for (int i=0;i<7;i++) { if (m_tstat_output_data.at(i).Range.StrValue.CompareNoCase(_T("PWM(0-100%)"))==0) { PWMNUMBER++; } } if (PWMNUMBER>=2) { AfxMessageBox(_T("PWM Mode should be less than two!")); m_output_list.Set_Edit(false); IS_SEND=FALSE; return 0; } } int RangeValue=-1; if (product_register_value[7]==1||product_register_value[7]==2||product_register_value[7]==3) { if (Changed_Item<3) { for (int i=0;i<3;i++) { if (New_CString.CompareNoCase(OUTPUT_RANGE5[i])==0) { RangeValue=i; break; } } } else if (Changed_Item<5) { for (int i=0;i<18;i++) { if (New_CString.CompareNoCase(OUTPUT_ANRANGE[i])==0) { RangeValue=i; break; } } } } else { if (Changed_Item<5) { for (int i=0;i<6;i++) { if (New_CString.CompareNoCase(OUTPUT_RANGE45[i])==0) { RangeValue=i; break; } } } else if (Changed_Item<7) { for (int i=0;i<18;i++) { if (New_CString.CompareNoCase(OUTPUT_ANRANGE[i])==0) { RangeValue=i; break; } } } } if (RangeValue==-1) { m_output_list.Set_Edit(false); IS_SEND=FALSE; return 0; } IS_SEND=TRUE; pwrite_info->Changed_Name.Format(_T("%s,From %s to %s"),m_tstat_output_data.at(lRow).OutputName.StrValue,m_tstat_output_data.at(lRow).Range.StrValue,New_CString); pwrite_info->address=m_tstat_output_data.at(lRow).Range.regAddress; pwrite_info->new_value=RangeValue; } if (lCol == TStat_Funcation) { if (m_tstat_output_data.at(lRow).Function.StrValue.CompareNoCase(New_CString)==0)//选的字符和内存的值相同的话,就返回 { m_output_list.Set_Edit(false); IS_SEND=FALSE; return 0; } int RangeValue=-1; for (int i=0;i<5;i++) { if (New_CString.CompareNoCase(ONTPUT_FUNS[i])==0) { RangeValue=i; break; } } if (RangeValue==-1) { m_output_list.Set_Edit(false); IS_SEND=FALSE; return 0; } IS_SEND=TRUE; pwrite_info->Changed_Name.Format(_T("%s,From %s to %s"),m_tstat_output_data.at(lRow).OutputName.StrValue,m_tstat_output_data.at(lRow).Function.StrValue,New_CString); pwrite_info->address=m_tstat_output_data.at(lRow).Function.regAddress; pwrite_info->new_value=RangeValue; } if (lCol == TStat_Interlock) { if (m_tstat_output_data.at(lRow).Interlock.StrValue.CompareNoCase(New_CString)==0)//选的字符和内存的值相同的话,就返回 { m_output_list.Set_Edit(false); IS_SEND=FALSE; return 0; } int InterlockValue=-1; for (int i=0;i<6;i++) { if (New_CString.CompareNoCase(Interlock[i])==0) { InterlockValue=i; break; } } if (InterlockValue==-1) { m_output_list.Set_Edit(false); IS_SEND=FALSE; return 0; } IS_SEND=TRUE; pwrite_info->Changed_Name.Format(_T("%s,From %s to %s"),m_tstat_output_data.at(lRow).OutputName.StrValue,m_tstat_output_data.at(lRow).Interlock.StrValue,New_CString); pwrite_info->address=m_tstat_output_data.at(lRow).Interlock.regAddress; pwrite_info->new_value=InterlockValue; } if (lCol == TStat_OFFON_Delay) { int OFFON_Delay_Value = _wtoi(New_CString); if (m_tstat_output_data.at(lRow).OFFON_Delay.RegValue==OFFON_Delay_Value) { m_output_list.Set_Edit(false); IS_SEND=FALSE; return 0; } IS_SEND=TRUE; pwrite_info->Changed_Name.Format(_T("%s,From %s to %s"),m_tstat_output_data.at(lRow).OutputName.StrValue,m_tstat_output_data.at(lRow).OFFON_Delay.StrValue,New_CString); pwrite_info->address=m_tstat_output_data.at(lRow).OFFON_Delay.regAddress; pwrite_info->new_value=OFFON_Delay_Value; } if (lCol == TStat_ONOFF_Delay) { int ONOFF_Delay_Value = _wtoi(New_CString); if (m_tstat_output_data.at(lRow).ONOFF_Delay.RegValue==ONOFF_Delay_Value) { m_output_list.Set_Edit(false); IS_SEND=FALSE; return 0; } IS_SEND=TRUE; pwrite_info->Changed_Name.Format(_T("%s,From %s to %s"),m_tstat_output_data.at(lRow).OutputName.StrValue,m_tstat_output_data.at(lRow).ONOFF_Delay.StrValue,New_CString); pwrite_info->address=m_tstat_output_data.at(lRow).ONOFF_Delay.regAddress; pwrite_info->new_value=ONOFF_Delay_Value; } if (lCol == TStat_Signal_Type) { if (m_tstat_output_data.at(lRow).Signal_Type.StrValue.CompareNoCase(New_CString)==0)//选的字符和内存的值相同的话,就返回 { m_output_list.Set_Edit(false); IS_SEND=FALSE; return 0; } int RangeValue=-1; for (int i=0;i<18;i++) { if (New_CString.CompareNoCase(OUTPUT_ANRANGE[i])==0) { RangeValue=i; break; } } if (RangeValue==-1) { m_output_list.Set_Edit(false); IS_SEND=FALSE; return 0; } IS_SEND=TRUE; pwrite_info->Changed_Name.Format(_T("%s,From %s to %s"),m_tstat_output_data.at(lRow).OutputName.StrValue,m_tstat_output_data.at(lRow).Signal_Type.StrValue,New_CString); pwrite_info->address=m_tstat_output_data.at(lRow).Signal_Type.regAddress; pwrite_info->new_value=RangeValue; } if (IS_SEND) { pwrite_info->device_id=g_tstat_id; pwrite_info->hwnd=g_hwnd_now; pwrite_info->mCol=lCol; pwrite_info->mRow=lRow; m_output_list.SetItemBkColor(lRow,lCol,LIST_ITEM_CHANGED_BKCOLOR); if(!PostThreadMessage(nThreadID,MY_WRITE_ONE_LIST,(WPARAM)pwrite_info,NULL))//post thread msg { return FALSE ; } else { return TRUE ; } } else{ if (pwrite_info) { delete pwrite_info; } } return 0; }
LRESULT BacnetController::Fresh_Controller_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_controller_list.GetItemText(Changed_Item,Changed_SubItem); CString cstemp_value; //先保存 原来的值,等结束的时候来比对,看是否有改变,有改变就进行写动作; memcpy_s(&m_temp_controller_data[Changed_Item],sizeof(Str_controller_point),&m_controller_data.at(Changed_Item),sizeof(Str_controller_point)); if(Changed_SubItem == CONTROLLER_INPUT) { CString cs_temp = m_controller_list.GetItemText(Changed_Item,Changed_SubItem); if(cs_temp.IsEmpty() == false) { cs_temp.MakeUpper(); char cTemp1[255]; char temp_input[250]; char * tempcs=NULL; memset(cTemp1,0,255); WideCharToMultiByte( CP_ACP, 0, cs_temp.GetBuffer(), -1, cTemp1, 255, NULL, NULL ); //Search the input label from the list. int temp_number=-1; byte temp_value_type = -1; byte temp_point_type=-1; int temp_panel = -1; int temp_net = -1; int k=0; //int temp1; tempcs = ispoint(cTemp1,&temp_number,&temp_value_type,&temp_point_type,&temp_panel,&temp_net,0,Station_NUM,&k); if(tempcs!=NULL) { strcpy(temp_input,tempcs); CString temp_des2; temp_des2.Empty(); MultiByteToWideChar( CP_ACP, 0, temp_input, (int)strlen(temp_input)+1, temp_des2.GetBuffer(MAX_PATH), MAX_PATH ); temp_des2.ReleaseBuffer(); m_controller_list.SetItemText(Changed_Item,CONTROLLER_INPUT,temp_des2); if(temp_panel != Station_NUM) { MessageBox(_T("Don't support other panel currently!"),_T("Warning"),MB_OK | MB_ICONINFORMATION); m_controller_list.SetItemText(Changed_Item,Changed_SubItem,_T("")); return 0; } if(temp_number > 0); //因为Input2 的number 是1; temp_number = temp_number - 1; temp_point_type = temp_point_type + 1; if(2 == temp_point_type) { m_controller_data.at(Changed_Item).input.number = temp_number; m_controller_data.at(Changed_Item).input.panel = temp_panel;//bac_gloab_panel; m_controller_data.at(Changed_Item).input.point_type = temp_point_type;//1 means input point CString temp_des3; if(temp_number < BAC_INPUT_ITEM_COUNT) { //temp_des3.Format(_T("%d"),m_Input_data.at(temp_number - 1).value); CString cstemp_value; float temp_float_value; temp_float_value = ((float)m_Input_data.at(temp_number).value) / 1000; temp_des3.Format(_T("%.1f"),temp_float_value); m_controller_data.at(Changed_Item).input_value = m_Input_data.at(temp_number).value; m_controller_list.SetItemText(Changed_Item,CONTROLLER_INPUTVALUE,temp_des3); } } else if(3 == temp_point_type) { m_controller_data.at(Changed_Item).input.number = temp_number; m_controller_data.at(Changed_Item).input.panel = temp_panel;//bac_gloab_panel; m_controller_data.at(Changed_Item).input.point_type = temp_point_type;//1 means input point CString temp_des3; if(temp_number < BAC_VARIABLE_ITEM_COUNT) { //temp_des3.Format(_T("%d"),m_Input_data.at(temp_number - 1).value); CString cstemp_value; float temp_float_value; temp_float_value = ((float)m_Variable_data.at(temp_number).value) / 1000; temp_des3.Format(_T("%.1f"),temp_float_value); m_controller_data.at(Changed_Item).input_value = m_Variable_data.at(temp_number).value; m_controller_list.SetItemText(Changed_Item,CONTROLLER_INPUTVALUE,temp_des3); } } else { m_controller_list.SetItemText(Changed_Item,Changed_SubItem,_T("")); return 0; } } else { CString temp_message; temp_message.Format(_T("%s character not allowed in labels!"),cs_temp.GetString()); MessageBox(temp_message,_T("Information"),MB_OK |MB_ICONINFORMATION); m_controller_list.SetItemText(Changed_Item,Changed_SubItem,_T("")); return 0; } } } if(Changed_SubItem == CONTROLLER_INPUTVALUE) { //int temp_value = _wtoi(New_CString); int temp_value = (int)(_wtof(New_CString) * 1000); if(m_controller_data.at(Changed_Item).input.number == 0 ) return 0; if((m_controller_data.at(Changed_Item).input.number -1 )< BAC_INPUT_ITEM_COUNT) m_Input_data.at(m_controller_data.at(Changed_Item).input.number - 1).value = temp_value; temp_task_info.Format(_T("Write Controllers List Item%d .Changed the input value to \"%s\" "),Changed_Item + 1,New_CString); Post_Write_Message(g_bac_instance,WRITEINPUT_T3000,Changed_Item,Changed_Item,sizeof(Str_in_point),BacNet_hwd ,temp_task_info); return 0; } if(Changed_SubItem == CONTROLLER_SETVALUE) { // int temp_value = _wtoi(New_CString); int temp_value = (int)(_wtof(New_CString) * 1000); if(m_controller_data.at(Changed_Item).setpoint.number == 0 ) return 0; if((m_controller_data.at(Changed_Item).setpoint.number -1 )< BAC_VARIABLE_ITEM_COUNT) m_Variable_data.at(m_controller_data.at(Changed_Item).setpoint.number - 1).value = temp_value; temp_task_info.Format(_T("Write Controllers List Item%d .Changed the variable value to \"%s\" "),Changed_Item + 1,New_CString); Post_Write_Message(g_bac_instance,WRITEVARIABLE_T3000,Changed_Item,Changed_Item,sizeof(Str_in_point),BacNet_hwd ,temp_task_info); return 0; } if(Changed_SubItem == CONTROLLER_AUTO_MANUAL) { CString temp_cs = m_controller_list.GetItemText(Changed_Item,Changed_SubItem); if(temp_cs.CompareNoCase(_T("Auto"))==0) { m_controller_list.SetCellEnabled(Changed_Item,CONTROLLER_OUTPUT,0); m_controller_data.at(Changed_Item).auto_manual = BAC_AUTO ; } else { m_controller_list.SetCellEnabled(Changed_Item,CONTROLLER_OUTPUT,1); m_controller_data.at(Changed_Item).auto_manual = BAC_MANUAL ; } } if(Changed_SubItem == CONTROLLER_OUTPUT) { CString temp_cs = m_controller_list.GetItemText(Changed_Item,Changed_SubItem); int temp_int = (int)(_wtof(temp_cs) * 1000); m_controller_data.at(Changed_Item).value = temp_int; } if(Changed_SubItem == CONTROLLER_SETPOINT) { CString cs_temp = m_controller_list.GetItemText(Changed_Item,Changed_SubItem); char cTemp1[255]; char temp_setpoint[250]; char * tempcs=NULL; memset(cTemp1,0,255); memset(temp_setpoint,0,250); WideCharToMultiByte( CP_ACP, 0, cs_temp.GetBuffer(), -1, cTemp1, 255, NULL, NULL ); int temp_number=-1; byte temp_value_type = -1; byte temp_point_type=-1; int temp_panel = -1; int temp_net = -1; int k=0; //int temp1; //Change the lable.ex: Change the tempcs = ispoint(cTemp1,&temp_number,&temp_value_type,&temp_point_type,&temp_panel,&temp_net,0,bac_gloab_panel,&k); if(tempcs!=NULL) { memcpy_s(temp_setpoint,250,tempcs,9); //strcpy_s(temp_setpoint,tempcs); //strcpy(temp_setpoint,tempcs); CString temp_des2; temp_des2.Empty(); MultiByteToWideChar( CP_ACP, 0, temp_setpoint, STR_VARIABLE_LABEL+1, temp_des2.GetBuffer(MAX_PATH), MAX_PATH ); temp_des2.ReleaseBuffer(); m_controller_list.SetItemText(Changed_Item,CONTROLLER_SETPOINT,temp_des2); if(temp_panel != bac_gloab_panel) { MessageBox(_T("Don't support other panel currently!"),_T("Warning"),MB_OK | MB_ICONINFORMATION); m_controller_list.SetItemText(Changed_Item,Changed_SubItem,_T("")); return 0; } if(temp_number > 0) //Setpoint 也是这样;从0 开始的; temp_number = temp_number - 1; temp_point_type = temp_point_type + 1; //OUTPUT=1, INPUT, VARIABLE 要错位; m_controller_data.at(Changed_Item).setpoint.number = temp_number; m_controller_data.at(Changed_Item).setpoint.panel = temp_panel;//bac_gloab_panel; m_controller_data.at(Changed_Item).setpoint.point_type = temp_point_type;//1 means input point CString temp_des3; if(temp_number < BAC_VARIABLE_ITEM_COUNT) { if(m_Variable_data.at(temp_number).range < VARIABLE_ANALOG_UNITE_COUNT) temp_des3 = Variable_Analog_Units_Array[m_Variable_data.at(temp_number).range]; m_controller_list.SetItemText(Changed_Item,CONTROLLER_SETPOINTUNITS,temp_des3); } char tempAAAA[250]; memset(tempAAAA,0,250); temp_des3.Empty(); if(m_Variable_data.at(temp_number).range == 20 ) { if((m_controller_data.at(Changed_Item).setpoint_value>=0)&&(m_controller_data.at(Changed_Item).setpoint_value<86400)) intervaltotext( tempAAAA, m_controller_data.at(Changed_Item).setpoint_value ,0 , 0); MultiByteToWideChar( CP_ACP, 0, tempAAAA, strlen(tempAAAA) + 1, temp_des3.GetBuffer(MAX_PATH), MAX_PATH ); temp_des3.ReleaseBuffer(); } else { CString cstemp_value; float temp_float_value; temp_float_value = ((float)m_Variable_data.at(m_controller_data.at(Changed_Item).setpoint.number).value) / 1000; temp_des3.Format(_T("%.1f"),temp_float_value); } m_controller_list.SetItemText(Changed_Item,CONTROLLER_SETVALUE,temp_des3); } else { CString temp_show_ret; temp_show_ret = _T("\"") + cs_temp + _T("\"") + _T(" is a invalid label or keyword ."); SetPaneString(BAC_SHOW_MISSION_RESULTS,temp_show_ret); m_controller_list.SetItemText(Changed_Item,CONTROLLER_SETPOINT,_T("")); } } if(Changed_SubItem == CONTROLLER_PROPORTIONAL) { int temp_proportional=0; CString cs_temp = m_controller_list.GetItemText(Changed_Item,Changed_SubItem); if((cs_temp.GetLength()>3) || (_wtoi(cs_temp)>255) ) { MessageBox(_T("Please input a effective value"),_T("Information"),MB_OK |MB_ICONINFORMATION); m_controller_list.SetItemText(Changed_Item,Changed_SubItem,_T("")); } else { m_controller_data.at(Changed_Item).proportional = _wtoi(cs_temp); } } if(Changed_SubItem == CONTROLLER_RESET) { int temp_reset=0; CString cs_temp = m_controller_list.GetItemText(Changed_Item,Changed_SubItem); if((cs_temp.GetLength()>3) || (_wtoi(cs_temp)>255) ) { MessageBox(_T("Please input a effective value"),_T("Information"),MB_OK |MB_ICONINFORMATION); m_controller_list.SetItemText(Changed_Item,Changed_SubItem,_T("")); } else { m_controller_data.at(Changed_Item).reset = _wtoi(cs_temp); } } if(Changed_SubItem == CONTROLLER_RATE) { int temp_rate=0; CString cs_temp = m_controller_list.GetItemText(Changed_Item,Changed_SubItem); int i_value = (int)(_wtof(cs_temp) * 100) ; if((i_value > 200) || (i_value < 0)) //if((cs_temp.GetLength()>1) || (_wtoi(cs_temp)>2) ) { MessageBox(_T("Please input a effective value 0.00 - 2.00"),_T("Information"),MB_OK |MB_ICONINFORMATION); m_controller_list.SetItemText(Changed_Item,Changed_SubItem,_T("")); } else { m_controller_data.at(Changed_Item).rate = i_value; } } if(Changed_SubItem == CONTROLLER_BIAS) { int temp_bias=0; CString cs_temp = m_controller_list.GetItemText(Changed_Item,Changed_SubItem); if((cs_temp.GetLength()>3) || (_wtoi(cs_temp)>100) ) { MessageBox(_T("Please input a effective value"),_T("Information"),MB_OK |MB_ICONINFORMATION); m_controller_list.SetItemText(Changed_Item,Changed_SubItem,_T("")); } else { m_controller_data.at(Changed_Item).bias = _wtoi(cs_temp); } } cmp_ret = memcmp(&m_temp_controller_data[Changed_Item],&m_controller_data.at(Changed_Item),sizeof(Str_controller_point)); if(cmp_ret!=0) { m_controller_list.SetItemBkColor(Changed_Item,Changed_SubItem,LIST_ITEM_CHANGED_BKCOLOR); temp_task_info.Format(_T("Write Controllers List Item%d .Changed to \"%s\" "),Changed_Item + 1,New_CString); Post_Write_Message(g_bac_instance,WRITEPID_T3000,Changed_Item,Changed_Item,sizeof(Str_controller_point),m_controller_dlg_hwnd ,temp_task_info,Changed_Item,Changed_SubItem); } return 0; }
void CDialogT3::Updatedatabase() { TRACE(_T("Updatedatabase()start!\n")); KillTimer(T3_MODEL); //存入数据库中 CADO saveADO; saveADO.OnInitADOConn(); CString sql = _T("select * from T3_4AO"); saveADO.m_pRecordset = saveADO.OpenRecordset(sql); if (!saveADO.m_pRecordset->EndOfFile) { saveADO.m_pRecordset->MoveFirst(); for(int i = 0; i<230; i++) { try { //saveADO.m_pRecordset->AddNew(); //saveADO.m_pRecordset->Move(pos,vtMissing); // cstnum.Format(_T("%d"),i+1); // saveADO.m_pRecordset->PutCollect("Address",(_bstr_t)cstnum); // saveADO.m_pRecordset->PutCollect("Name",(_bstr_t)_T("output")); saveADO.m_pRecordset->PutCollect("Address",(_bstr_t)(i+1)); saveADO.m_pRecordset->PutCollect("Name",(_bstr_t)vect3model.at(i).CStName); saveADO.m_pRecordset->PutCollect("Data",(_bstr_t)shmPRegister[i]); saveADO.m_pRecordset->PutCollect("Range",(_bstr_t)vect3model.at(i).CStrange); if (i>=124&&i<=147) { switch ((int)(_variant_t)shmPRegister[i]) { case 0: //0- off 1 - mannel 2 - auto saveADO.m_pRecordset->PutCollect("AutoManual",(_bstr_t)"OFF"); break; case 1: saveADO.m_pRecordset->PutCollect("AutoManual",(_bstr_t)"Manual"); break; case 2: saveADO.m_pRecordset->PutCollect("AutoManual",(_bstr_t)"Auto"); break; default: break; } } // saveADO.m_pRecordset->PutCollect("Auto/Manual",(_bstr_t)"auto"); // saveADO.m_pRecordset->PutCollect("Range",(_bstr_t)"10%-100%"); saveADO.m_pRecordset->Update(); saveADO.m_pRecordset->MoveNext(); } catch(...) { SetPaneString(2,_T("Write dababase false!")); return ; } } } else { for(int i = 0; i<230; i++) { try { //saveADO.m_pRecordset->AddNew(); //saveADO.m_pRecordset->Move(pos,vtMissing); // cstnum.Format(_T("%d"),i+1); // saveADO.m_pRecordset->PutCollect("Address",(_bstr_t)cstnum); // saveADO.m_pRecordset->PutCollect("Name",(_bstr_t)_T("output")); saveADO.m_pRecordset->AddNew(); saveADO.m_pRecordset->PutCollect("Address",(_bstr_t)(i+1)); saveADO.m_pRecordset->PutCollect("Name",(_bstr_t)vect3model.at(i).CStName); saveADO.m_pRecordset->PutCollect("Data",(_bstr_t)shmPRegister[i]); saveADO.m_pRecordset->PutCollect("Range",(_bstr_t)vect3model.at(i).CStrange); if (i>=124&&i<=147) { switch ((int)(_variant_t)shmPRegister[i]) { case 0: //0- off 1 - mannel 2 - auto saveADO.m_pRecordset->PutCollect("AutoManual",(_bstr_t)"OFF"); break; case 1: saveADO.m_pRecordset->PutCollect("AutoManual",(_bstr_t)"Manual"); break; case 2: saveADO.m_pRecordset->PutCollect("AutoManual",(_bstr_t)"Auto"); break; default: break; } } // saveADO.m_pRecordset->PutCollect("Auto/Manual",(_bstr_t)"auto"); // saveADO.m_pRecordset->PutCollect("Range",(_bstr_t)"10%-100%"); saveADO.m_pRecordset->Update(); } catch(...) { //MessageBox(_T("Write dababase false!")); SetPaneString(2,_T("Write dababase false!")); return ; } } } saveADO.CloseRecordset(); saveADO.CloseConn(); SetTimer(T3_MODEL,1000,NULL); }