void CBacnetScheduleTime::Initial_List() { m_schedule_time_list.ModifyStyle(0, LVS_SINGLESEL|LVS_REPORT|LVS_SHOWSELALWAYS); m_schedule_time_list.SetExtendedStyle(m_schedule_time_list.GetExtendedStyle() |LVS_EX_GRIDLINES&(~LVS_EX_FULLROWSELECT));//Not allow full row select. m_schedule_time_list.InsertColumn(SCHEDULE_TIME_NUM, _T(" "), 40, ListCtrlEx::Normal, LVCFMT_LEFT, ListCtrlEx::SortByDigit); m_schedule_time_list.InsertColumn(SCHEDULE_TIME_MONDAY, _T("Monday"), 80, ListCtrlEx::Normal, LVCFMT_CENTER, ListCtrlEx::SortByString); m_schedule_time_list.InsertColumn(SCHEDULE_TIME_TUESDAY, _T("Tuesday"), 80, ListCtrlEx::Normal, LVCFMT_CENTER, ListCtrlEx::SortByString); m_schedule_time_list.InsertColumn(SCHEDULE_TIME_WEDNESDAY, _T("Wednesday"), 80, ListCtrlEx::Normal, LVCFMT_CENTER, ListCtrlEx::SortByString); m_schedule_time_list.InsertColumn(SCHEDULE_TIME_THURSDAY, _T("Thursday"), 80, ListCtrlEx::Normal, LVCFMT_CENTER, ListCtrlEx::SortByString); m_schedule_time_list.InsertColumn(SCHEDULE_TIME_FRIDAY, _T("Friday"), 80, ListCtrlEx::Normal, LVCFMT_CENTER, ListCtrlEx::SortByString); m_schedule_time_list.InsertColumn(SCHEDULE_TIME_SATURDAY, _T("Saturday"), 80, ListCtrlEx::Normal, LVCFMT_CENTER, ListCtrlEx::SortByString); m_schedule_time_list.InsertColumn(SCHEDULE_TIME_SUNDAY, _T("Sunday"), 80, ListCtrlEx::Normal, LVCFMT_CENTER, ListCtrlEx::SortByString); m_schedule_time_list.InsertColumn(SCHEDULE_TIME_HOLIDAY1, _T("Holiday1"), 80, ListCtrlEx::Normal, LVCFMT_CENTER, ListCtrlEx::SortByString); m_schedule_time_list.InsertColumn(SCHEDULE_TIME_HOLIDAY2, _T("Holiday2"), 80, ListCtrlEx::Normal, LVCFMT_CENTER, ListCtrlEx::SortByString); m_WeeklyParent_Hwnd = g_hwnd_now; m_schedule_time_dlg_hwnd = this->m_hWnd; g_hwnd_now = m_schedule_time_dlg_hwnd; CRect list_rect,win_rect; m_schedule_time_list.GetWindowRect(list_rect); ScreenToClient(&list_rect); ::GetWindowRect(m_schedule_time_dlg_hwnd,win_rect); m_schedule_time_list.Set_My_WindowRect(win_rect); m_schedule_time_list.Set_My_ListRect(list_rect); m_schedule_time_list.DeleteAllItems(); for (int i=0;i<BAC_SCHEDULE_TIME_COUNT;i++) { CString temp_item,temp_value,temp_cal,temp_filter,temp_status,temp_lable; CString temp_des; CString temp_units; if(i%2==0) temp_item.Format(_T("ON "),i+1); else temp_item.Format(_T("OFF"),i+1); m_schedule_time_list.InsertItem(i,temp_item); } CTime TimeTemp(2013,1,1,0,0,0); m_schedual_time_picker.SetFormat(_T("HH:mm")); m_schedual_time_picker.SetTime(&TimeTemp); }
void CBacnetVariable::Initial_List() { m_variable_list.ShowWindow(SW_HIDE); m_variable_list.DeleteAllItems(); while ( m_variable_list.DeleteColumn (0)) ; m_variable_list.ModifyStyle(0, LVS_SINGLESEL|LVS_REPORT|LVS_SHOWSELALWAYS); m_variable_list.SetExtendedStyle(m_variable_list.GetExtendedStyle() |LVS_EX_GRIDLINES&(~LVS_EX_FULLROWSELECT));//Not allow full row select. m_variable_list.InsertColumn(VARIABLE_NUM, _T("Variable"), 70, ListCtrlEx::Normal, LVCFMT_LEFT, ListCtrlEx::SortByDigit); m_variable_list.InsertColumn(VARIABLE_FULL_LABLE, _T("Full Label"), 200, ListCtrlEx::EditBox, LVCFMT_LEFT, ListCtrlEx::SortByString); m_variable_list.InsertColumn(VARIABLE_AUTO_MANUAL, _T("Auto/Manual"), 150, ListCtrlEx::Normal, LVCFMT_LEFT, ListCtrlEx::SortByString); m_variable_list.InsertColumn(VARIABLE_VALUE, _T("Value"), 120, ListCtrlEx::EditBox, LVCFMT_LEFT, ListCtrlEx::SortByString); m_variable_list.InsertColumn(VARIABLE_UNITE, _T("Units"), 120, ListCtrlEx::Normal, LVCFMT_LEFT, ListCtrlEx::SortByString); m_variable_list.InsertColumn(VARIABLE_LABLE, _T("Label"), 130, ListCtrlEx::EditBox, LVCFMT_LEFT, ListCtrlEx::SortByString); m_variable_dlg_hwnd = this->m_hWnd; //g_hwnd_now = m_variable_dlg_hwnd; CRect list_rect,win_rect; m_variable_list.GetWindowRect(list_rect); ScreenToClient(&list_rect); ::GetWindowRect(m_input_dlg_hwnd,win_rect); m_variable_list.Set_My_WindowRect(win_rect); m_variable_list.Set_My_ListRect(list_rect); CTime TimeTemp(2016,1,1,0,0,0); m_variable_time_picker.SetFormat(_T("HH:mm")); m_variable_time_picker.SetTime(&TimeTemp); m_variable_time_picker.ShowWindow(SW_HIDE); m_variable_list.DeleteAllItems(); for (int i=0;i<(int)m_Variable_data.size();i++) { CString temp_item,temp_value,temp_cal,temp_filter,temp_status,temp_lable; CString temp_des; CString temp_units; if(i>=variable_item_limit_count) break; temp_item.Format(_T("VAR%d"),i+1); m_variable_list.InsertItem(i,temp_item); if(ListCtrlEx::ComboBox == m_variable_list.GetColumnType(VARIABLE_UNITE)) { ListCtrlEx::CStrList strlist; for (int i=0;i<(int)sizeof(Units_Type)/sizeof(Units_Type[0]);i++) { strlist.push_back(Units_Type[i]); } m_variable_list.SetCellStringList(i, VARIABLE_UNITE, strlist); } for (int x=0;x<VARIABLE_COL_NUMBER;x++) { if((i%2)==0) m_variable_list.SetItemBkColor(i,x,LIST_ITEM_DEFAULT_BKCOLOR); else m_variable_list.SetItemBkColor(i,x,LIST_ITEM_DEFAULT_BKCOLOR_GRAY); } } m_variable_list.InitListData(); m_variable_list.ShowWindow(SW_SHOW); }
void CCO2_View::Fresh() { CString temp_id; float m_fFirmwareVersion=0; UINT m_nSerialNumber=0; unsigned short m_nHardwareVersion=0; temp_id.Format(_T("%d"),product_register_value[6]); m_co2_idAdressEdit.SetWindowTextW(temp_id); if(product_register_value[CO2_485_MODBUS_BAUDRATE]>=0&&product_register_value[CO2_485_MODBUS_BAUDRATE]<=1) m_co2_braudRateCombox.SetCurSel(product_register_value[CO2_485_MODBUS_BAUDRATE]); else m_co2_braudRateCombox.SetCurSel(0); m_co2_braudRateCombox.EnableWindow(0); m_co2_firmwareversion=get_curtstat_version(); m_co2_serialNumber=get_serialnumber(); m_co2_hardwareversion=product_register_value[CO2_485_MODBUS_HARDWARE_REV];//8 m_co2_temp_unit.ResetContent(); m_co2_temp_unit.AddString(_T("℃")); m_co2_temp_unit.AddString(_T("℉")); Get_CO2_Temperature_unit(cs_temp_unit); m_co2_temp_unit.SetCurSel(product_register_value[103]); C02_SHOW_TEMP(); m_humidity_value = (float)(product_register_value[CO2_485_MODBUS_HUMIDITY_RH]/10); if(m_humidity_value>100) { (CEdit *)GetDlgItem(IDC_EDIT_CO2_HUMIDITY)->EnableWindow(FALSE); m_humidity_value = 0; } else { (CEdit *)GetDlgItem(IDC_EDIT_CO2_HUMIDITY)->EnableWindow(TRUE); } CO2_Alarm_Set(); //CO2_Grid_init(); //Initial_List(); Fresh_External_List(); if(product_register_value[CO2_485_MODBUS_PASSWORD_ENABLE] == 1) { ((CButton *)GetDlgItem(IDC_RADIO_PASSWORD_ENABLE))->SetCheck(1); ((CButton *)GetDlgItem(IDC_RADIO_PASSWORD_DISABLE))->SetCheck(0); (GetDlgItem(IDC_EDIT_CO2_PASSWOR)->EnableWindow(TRUE)); } else { ((CButton *)GetDlgItem(IDC_RADIO_PASSWORD_ENABLE))->SetCheck(0); ((CButton *)GetDlgItem(IDC_RADIO_PASSWORD_DISABLE))->SetCheck(1); (GetDlgItem(IDC_EDIT_CO2_PASSWOR)->EnableWindow(FALSE)); } if(product_register_value[CO2_485_MODBUS_HUM_SENSOR_HEATING] == 1) { ((CButton *)GetDlgItem(IDC_RADIO_HUMIDITY_HEAT_ENABLE))->SetCheck(1); ((CButton *)GetDlgItem(IDC_RADIO_HUMIDITY_HEAT_DISABLE))->SetCheck(0); } else { ((CButton *)GetDlgItem(IDC_RADIO_HUMIDITY_HEAT_ENABLE))->SetCheck(0); ((CButton *)GetDlgItem(IDC_RADIO_HUMIDITY_HEAT_DISABLE))->SetCheck(1); } int cyear,cmonth,cday,chour,cmin,csec; cyear = product_register_value[CO2_485_MODBUS_RTC_YEAR]; if(cyear<100) cyear = cyear + 2000; cmonth = product_register_value[CO2_485_MODBUS_RTC_MONTH]; if(cmonth>12 || cmonth<=0) cmonth = 1; cday = product_register_value[CO2_485_MODBUS_RTC_DAY]; if(cday > 31 || cday <=0) cday = 1; chour = product_register_value[CO2_485_MODBUS_RTC_HOUR]; if(chour>23 ) chour = 1; cmin = product_register_value[CO2_485_MODBUS_RTC_MIN]; if(cmin >59) cmin = 0; csec = product_register_value[CO2_485_MODBUS_RTC_SEC]; if(csec>59) csec = 0; CTime TimeTemp(cyear,cmonth,cday,chour,cmin,csec); m_co2_time_picker.SetFormat(_T("HH:mm")); m_co2_day_picker.SetTime(&TimeTemp); m_co2_time_picker.SetTime(&TimeTemp); Show_PassWord(); Show_Each_Edit_Time(); UpdateData(FALSE); }
void CBacnetScheduleTime::OnNMClickListScheduleTime(NMHDR *pNMHDR, LRESULT *pResult) { LPNMITEMACTIVATE pNMItemActivate = reinterpret_cast<LPNMITEMACTIVATE>(pNMHDR); // TODO: Add your control notification handler code here long lRow,lCol; m_schedule_time_list.Set_Edit(false); DWORD dwPos=GetMessagePos();//Get which line is click by user.Set the check box, when user enter Insert it will jump to program dialog CPoint point( LOWORD(dwPos), HIWORD(dwPos)); m_schedule_time_list.ScreenToClient(&point); LVHITTESTINFO lvinfo; lvinfo.pt=point; lvinfo.flags=LVHT_ABOVE; int nItem=m_schedule_time_list.SubItemHitTest(&lvinfo); lRow = lvinfo.iItem; lCol = lvinfo.iSubItem; if(lRow>m_schedule_time_list.GetItemCount()) //如果点击区超过最大行号,则点击是无效的 return; if(lRow<0) return; if(lCol == SCHEDULE_TIME_NUM) //If it is item number,then return. return; //ignore the incorrect time. int temp_hour,temp_minute; temp_hour = m_Schedual_Time_data.at(weekly_list_line).Schedual_Day_Time[lRow][lCol - 1].time_hours; temp_minute = m_Schedual_Time_data.at(weekly_list_line).Schedual_Day_Time[lRow][lCol - 1].time_minutes; if((m_Schedual_Time_data.at(weekly_list_line).Schedual_Day_Time[lRow][lCol -1].time_minutes >59) || (m_Schedual_Time_data.at(weekly_list_line).Schedual_Day_Time[lRow][lCol - 1].time_hours >23) || ((m_Schedual_Time_data.at(weekly_list_line).Schedual_Day_Time[lRow][lCol - 1].time_minutes == 0)&& (m_Schedual_Time_data.at(weekly_list_line).Schedual_Day_Time[lRow][lCol - 1].time_hours == 0))) { temp_hour = 0; temp_minute = 0; } m_row = lRow; m_col = lCol; m_hour = temp_hour; m_minute = temp_minute; m_schedule_time_list.SetItemText(lRow,lCol,_T("")); m_schedual_time_picker.ShowWindow(SW_SHOW); CRect list_rect,win_rect; m_schedule_time_list.GetWindowRect(list_rect); GetWindowRect(win_rect); CRect myrect; m_schedule_time_list.GetSubItemRect(lRow,lCol,LVIR_BOUNDS,myrect); myrect.left = myrect.left + list_rect.left - win_rect.left; myrect.right = myrect.right + list_rect.left - win_rect.left; myrect.top = myrect.top + 11; myrect.bottom = myrect.bottom + 13; m_schedual_time_picker.BringWindowToTop(); m_schedual_time_picker.MoveWindow(myrect); CTime TimeTemp(2013,1,1,temp_hour,temp_minute,0); m_schedual_time_picker.SetFormat(_T("HH:mm")); m_schedual_time_picker.SetTime(&TimeTemp); m_schedual_time_picker.SetFocus(); SetTimer(1,100,NULL); //m_schedual_time_picker.BringWindowToTop(); //m_schedual_time_picker.MoveWindow() *pResult = 0; }
void CBacnetVariable::OnNMClickListVariable(NMHDR *pNMHDR, LRESULT *pResult) { LPNMITEMACTIVATE pNMItemActivate = reinterpret_cast<LPNMITEMACTIVATE>(pNMHDR); // TODO: Add your control notification handler code here long lRow,lCol; m_variable_list.Set_Edit(true); DWORD dwPos=GetMessagePos();//Get which line is click by user.Set the check box, when user enter Insert it will jump to program dialog CPoint point( LOWORD(dwPos), HIWORD(dwPos)); m_variable_list.ScreenToClient(&point); LVHITTESTINFO lvinfo; lvinfo.pt=point; lvinfo.flags=LVHT_ABOVE; int nItem=m_variable_list.SubItemHitTest(&lvinfo); lRow = lvinfo.iItem; lCol = lvinfo.iSubItem; if(lRow>m_variable_list.GetItemCount()) //如果点击区超过最大行号,则点击是无效的 return; if(lRow<0) return; m_row = lRow; m_col = lCol; memcpy_s(&m_temp_variable_data[lRow],sizeof(Str_variable_point),&m_Variable_data.at(lRow),sizeof(Str_variable_point)); CString temp_task_info; if((lCol == VARIABLE_VALUE) &&(m_Variable_data.at(lRow).digital_analog == BAC_UNITS_DIGITAL ) && (m_Variable_data.at(lRow).auto_manual != BAC_AUTO)) { CString New_CString; CString temp1; CStringArray temparray; if((m_Variable_data.at(lRow).range < 23) &&(m_Variable_data.at(lRow).range !=0)) temp1 = Digital_Units_Array[m_Variable_data.at(lRow).range]; else return; SplitCStringA(temparray,temp1,_T("/")); if(m_Variable_data.at(lRow).control == 0) { m_Variable_data.at(lRow).control = 1; m_variable_list.SetItemText(lRow,VARIABLE_VALUE,temparray.GetAt(1)); New_CString = temparray.GetAt(1); } else { m_Variable_data.at(lRow).control = 0; m_variable_list.SetItemText(lRow,VARIABLE_VALUE,temparray.GetAt(0)); New_CString = temparray.GetAt(0); } #if 0 if(m_Variable_data.at(lRow).range > 11) temp1 = Digital_Units_Array[m_Variable_data.at(lRow).range - 11];//11 is the sizeof the array else temp1 = Digital_Units_Array[m_Variable_data.at(lRow).range]; SplitCStringA(temparray,temp1,_T("/")); if(m_Variable_data.at(lRow).range>=12) { if((temparray.GetSize()==2)&&(!temparray.GetAt(1).IsEmpty())) { m_variable_list.SetItemText(lRow,VARIABLE_VALUE,temparray.GetAt(0)); m_Variable_data.at(lRow).range = m_Variable_data.at(lRow).range - 11; m_Variable_data.at(lRow).control = 0; New_CString = temparray.GetAt(0); } } else if(m_Variable_data.at(lRow).range>=1) { if((temparray.GetSize()==2)&&(!temparray.GetAt(0).IsEmpty())) { m_variable_list.SetItemText(lRow,VARIABLE_VALUE,temparray.GetAt(1)); m_Variable_data.at(lRow).range = m_Variable_data.at(lRow).range + 11; New_CString = temparray.GetAt(1); m_Variable_data.at(lRow).control = 1; } } #endif m_variable_list.Set_Edit(false); temp_task_info.Format(_T("Write Variable List Item%d .Changed to \"%s\" "),lRow + 1,New_CString); } else if((lCol == VARIABLE_VALUE) &&(m_Variable_data.at(lRow).digital_analog == BAC_UNITS_ANALOG ) && (m_Variable_data.at(lRow).auto_manual == BAC_MANUAL) && (m_Variable_data.at(lRow).range == 20)) { m_variable_list.Set_Edit(false); m_variable_time_picker.ShowWindow(SW_SHOW); CRect list_rect,win_rect; m_variable_list.GetWindowRect(list_rect); GetWindowRect(win_rect); CRect myrect; m_variable_list.GetSubItemRect(lRow,lCol,LVIR_BOUNDS,myrect); myrect.left = myrect.left + list_rect.left - win_rect.left; myrect.right = myrect.right + list_rect.left - win_rect.left; myrect.top = myrect.top + 11; myrect.bottom = myrect.bottom + 13; m_variable_time_picker.BringWindowToTop(); m_variable_time_picker.MoveWindow(myrect); CString Temp_CString = m_variable_list.GetItemText(lRow,lCol); CStringArray TEMPCS; int temp_hour,temp_minute; SplitCStringA(TEMPCS, Temp_CString, _T(":")); if((int)TEMPCS.GetSize() <2) { temp_hour = 0; temp_minute = 0; CTime TimeTemp(2013,1,1,temp_hour,temp_minute,0); m_variable_time_picker.SetFormat(_T("HH:mm")); m_variable_time_picker.SetTime(&TimeTemp); m_variable_time_picker.SetFocus(); } else { temp_hour = _wtoi(TEMPCS.GetAt(0)); temp_minute = _wtoi(TEMPCS.GetAt(1)); CTime TimeTemp(2013,1,1,temp_hour,temp_minute,0); m_variable_time_picker.SetFormat(_T("HH:mm")); m_variable_time_picker.SetTime(&TimeTemp); m_variable_time_picker.SetFocus(); } m_variable_list.SetItemText(lRow,lCol,_T("")); m_variable_time_picker.Invalidate(); SetTimer(2,100,NULL); } else return; int cmp_ret = memcmp(&m_temp_variable_data[lRow],&m_Variable_data.at(lRow),sizeof(Str_variable_point)); if(cmp_ret!=0) { m_variable_list.SetItemBkColor(lRow,lCol,LIST_ITEM_CHANGED_BKCOLOR); Post_Write_Message(g_bac_instance,WRITEVARIABLE_T3000,lRow,lRow,sizeof(Str_variable_point),m_variable_dlg_hwnd,temp_task_info,lRow,lCol); } // GetDlgItem(IDC_BUTTON_VARIABLE_APPLY)->SetFocus(); *pResult = 0; }
void CBacnetVariable::OnNMClickListVariable(NMHDR *pNMHDR, LRESULT *pResult) { LPNMITEMACTIVATE pNMItemActivate = reinterpret_cast<LPNMITEMACTIVATE>(pNMHDR); // TODO: Add your control notification handler code here long lRow,lCol; m_variable_list.Set_Edit(true); DWORD dwPos=GetMessagePos();//Get which line is click by user.Set the check box, when user enter Insert it will jump to program dialog CPoint point( LOWORD(dwPos), HIWORD(dwPos)); m_variable_list.ScreenToClient(&point); LVHITTESTINFO lvinfo; lvinfo.pt=point; lvinfo.flags=LVHT_ABOVE; int nItem=m_variable_list.SubItemHitTest(&lvinfo); lRow = lvinfo.iItem; lCol = lvinfo.iSubItem; if(lRow>m_variable_list.GetItemCount()) //如果点击区超过最大行号,则点击是无效的 return; if(lRow<0) return; CString temp1; m_row = lRow; m_col = lCol; memcpy_s(&m_temp_variable_data[lRow],sizeof(Str_variable_point),&m_Variable_data.at(lRow),sizeof(Str_variable_point)); CString New_CString; CString temp_task_info; if((lCol == VARIABLE_VALUE) &&(m_Variable_data.at(lRow).digital_analog == BAC_UNITS_DIGITAL ) && (m_Variable_data.at(lRow).auto_manual != BAC_AUTO)) { CString temp1; CStringArray temparray; if((m_Variable_data.at(lRow).range < 23) &&(m_Variable_data.at(lRow).range !=0)) temp1 = Digital_Units_Array[m_Variable_data.at(lRow).range]; else if((m_Variable_data.at(lRow).range >=23) && (m_Variable_data.at(lRow).range <= 30)) { if(receive_customer_unit) temp1 = temp_unit_no_index[m_Variable_data.at(lRow).range - 23]; else { m_variable_list.Set_Edit(false); return; } } else return; SplitCStringA(temparray,temp1,_T("/")); if(m_Variable_data.at(lRow).control == 0) { m_Variable_data.at(lRow).control = 1; m_variable_list.SetItemText(lRow,VARIABLE_VALUE,temparray.GetAt(1)); New_CString = temparray.GetAt(1); } else { m_Variable_data.at(lRow).control = 0; m_variable_list.SetItemText(lRow,VARIABLE_VALUE,temparray.GetAt(0)); New_CString = temparray.GetAt(0); } m_variable_list.Set_Edit(false); temp_task_info.Format(_T("Write Variable List Item%d .Changed to \"%s\" "),lRow + 1,New_CString); } else if((lCol == VARIABLE_VALUE) &&(m_Variable_data.at(lRow).digital_analog == BAC_UNITS_ANALOG ) && (m_Variable_data.at(lRow).auto_manual == BAC_MANUAL) && (m_Variable_data.at(lRow).range == 20)) { m_variable_list.Set_Edit(false); m_variable_time_picker.ShowWindow(SW_SHOW); CRect list_rect,win_rect; m_variable_list.GetWindowRect(list_rect); GetWindowRect(win_rect); CRect myrect; m_variable_list.GetSubItemRect(lRow,lCol,LVIR_BOUNDS,myrect); myrect.left = myrect.left + list_rect.left - win_rect.left +2 ; myrect.right = myrect.right + list_rect.left - win_rect.left + 2; myrect.top = myrect.top + 24; myrect.bottom = myrect.bottom + 26; m_variable_time_picker.BringWindowToTop(); m_variable_time_picker.MoveWindow(myrect); CString Temp_CString = m_variable_list.GetItemText(lRow,lCol); CStringArray TEMPCS; int temp_hour,temp_minute,temp_second; SplitCStringA(TEMPCS, Temp_CString, _T(":")); if((int)TEMPCS.GetSize() <3) { temp_hour = 0; temp_minute = 0; temp_second = 0; CTime TimeTemp(2016,1,1,temp_hour,temp_minute,0); m_variable_time_picker.SetFormat(_T("HH:mm:ss")); m_variable_time_picker.SetTime(&TimeTemp); m_variable_time_picker.SetFocus(); } else { temp_hour = _wtoi(TEMPCS.GetAt(0)); temp_minute = _wtoi(TEMPCS.GetAt(1)); temp_second = _wtoi(TEMPCS.GetAt(2)); if(temp_hour >=24) temp_hour = 0; if(temp_minute >=60) temp_minute = 0; if(temp_second >= 60) temp_second = 0; CTime TimeTemp(2016,1,1,temp_hour,temp_minute,temp_second); m_variable_time_picker.SetFormat(_T("HH:mm:ss")); m_variable_time_picker.SetTime(&TimeTemp); m_variable_time_picker.SetFocus(); } m_variable_list.SetItemText(lRow,lCol,_T("")); m_variable_time_picker.Invalidate(); SetTimer(2,100,NULL); } else if(lCol == VARIABLE_VALUE) { if(m_Variable_data.at(lRow).auto_manual == BAC_AUTO) { m_variable_list.Set_Edit(false); return; } } else if(lCol == VARIABLE_AUTO_MANUAL) { if(m_Variable_data.at(lRow).auto_manual == 0) { m_Variable_data.at(lRow).auto_manual = 1; m_variable_list.SetItemText(lRow,VARIABLE_AUTO_MANUAL,_T("Manual")); New_CString = _T("Manual"); } else { m_Variable_data.at(lRow).auto_manual = 0; m_variable_list.SetItemText(lRow,VARIABLE_AUTO_MANUAL,_T("Auto")); New_CString = _T("Auto"); } temp_task_info.Format(_T("Write Variable List Item%d .Changed to \"%s\" "),lRow + 1,New_CString); } else if(lCol == VARIABLE_UNITE) { BacnetRange dlg; //点击产品的时候 需要读customer units,老的产品firmware 说不定没有 这些,所以不强迫要读到; if(!read_customer_unit) { int temp_invoke_id = -1; int send_status = true; int resend_count = 0; for (int z=0;z<3;z++) { do { resend_count ++; if(resend_count>5) { send_status = false; break; } temp_invoke_id = GetPrivateData( g_bac_instance, READUNIT_T3000, 0, BAC_CUSTOMER_UNITS_COUNT - 1, sizeof(Str_Units_element)); Sleep(SEND_COMMAND_DELAY_TIME); } while (g_invoke_id<0); if(send_status) { for (int z=0;z<1000;z++) { Sleep(1); if(tsm_invoke_id_free(temp_invoke_id)) { read_customer_unit = true; break; } else continue; } } if(read_customer_unit) break; } } if(m_Variable_data.at(lRow).digital_analog == BAC_UNITS_ANALOG) { bac_ranges_type = VARIABLE_RANGE_ANALOG_TYPE; if(m_Variable_data.at(lRow).range > (sizeof(Variable_Analog_Units_Array) / sizeof(Variable_Analog_Units_Array[0]))) { m_Variable_data.at(lRow).range = 0; bac_range_number_choose = 0; } } else { bac_ranges_type = VARIABLE_RANGE_DIGITAL_TYPE; if(m_Variable_data.at(lRow).range > 30) { m_Variable_data.at(lRow).range = 0; bac_range_number_choose = 0; } } initial_dialog = 1; bac_range_number_choose = m_Variable_data.at(lRow).range; dlg.DoModal(); if(range_cancel) { PostMessage(WM_REFRESH_BAC_VARIABLE_LIST,lRow,REFRESH_ON_ITEM);//这里调用 刷新线程重新刷新会方便一点; return ; } if(bac_range_number_choose == 0) //如果选择的是 unused 就认为是analog 的unused;这样 能显示对应的value; { m_Variable_data.at(lRow).digital_analog = BAC_UNITS_ANALOG; bac_ranges_type = VARIABLE_RANGE_ANALOG_TYPE; } if(bac_ranges_type == VARIABLE_RANGE_ANALOG_TYPE) { m_Variable_data.at(lRow).digital_analog = BAC_UNITS_ANALOG; m_Variable_data.at(lRow).range = bac_range_number_choose; m_variable_list.SetItemText(lRow,lCol,Variable_Analog_Units_Array[bac_range_number_choose]); if(m_Variable_data.at(lRow).range == 20) //如果是时间; { char temp_char[50]; int time_seconds = m_Variable_data.at(lRow).value / 1000; intervaltotextfull(temp_char,time_seconds,0,0); CString temp_11; MultiByteToWideChar( CP_ACP, 0, temp_char, strlen(temp_char) + 1, temp_11.GetBuffer(MAX_PATH), MAX_PATH ); temp_11.ReleaseBuffer(); m_variable_list.SetItemText(lRow,VARIABLE_VALUE,temp_11); } else { CString cstemp_value; float temp_float_value; temp_float_value = ((float)m_Variable_data.at(lRow).value) / 1000; cstemp_value.Format(_T("%.3f"),temp_float_value); m_variable_list.SetItemText(lRow,VARIABLE_VALUE,cstemp_value); /* cstemp_value.Format(_T("%d"),m_Variable_data.at(Changed_Item).value); m_variable_list.SetItemText(Changed_Item,VARIABLE_VALUE,cstemp_value);*/ } } else if((bac_ranges_type == VARIABLE_RANGE_DIGITAL_TYPE) || (bac_ranges_type == INPUT_RANGE_DIGITAL_TYPE) || (bac_ranges_type == OUTPUT_RANGE_DIGITAL_TYPE)) { m_Variable_data.at(lRow).digital_analog = BAC_UNITS_DIGITAL; m_Variable_data.at(lRow).range = bac_range_number_choose; CStringArray temparray; if((bac_range_number_choose >= 23) && (bac_range_number_choose <= 30)) { //temp1.Format(_T("%s"), temp_unit_no_index[bac_range_number_choose - 23]); temp1 = temp_unit_no_index[bac_range_number_choose - 23]; } else temp1 = Digital_Units_Array[bac_range_number_choose];//22 is the sizeof the array SplitCStringA(temparray,temp1,_T("/")); if(m_Variable_data.at(lRow).control == 1) { if((temparray.GetSize()==2)&&(!temparray.GetAt(1).IsEmpty())) { m_variable_list.SetItemText(lRow,VARIABLE_VALUE,temparray.GetAt(1)); } } else { if((temparray.GetSize()==2)&&(!temparray.GetAt(0).IsEmpty())) { m_variable_list.SetItemText(lRow,VARIABLE_VALUE,temparray.GetAt(0)); } } m_variable_list.SetItemText(lRow,VARIABLE_UNITE,temp1); } } else { return; } int cmp_ret = memcmp(&m_temp_variable_data[lRow],&m_Variable_data.at(lRow),sizeof(Str_variable_point)); if(cmp_ret!=0) { m_variable_list.SetItemBkColor(lRow,lCol,LIST_ITEM_CHANGED_BKCOLOR); Post_Write_Message(g_bac_instance,WRITEVARIABLE_T3000,lRow,lRow,sizeof(Str_variable_point),m_variable_dlg_hwnd,temp_task_info,lRow,lCol); } *pResult = 0; }