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 T3000_Default_MainView::Fresh(){
    CString strTemp;
	strTemp.Format(_T("%d"),g_tstat_id);
	GetDlgItem(IDC_ID_EDIT)->SetWindowTextW(strTemp);
	strTemp.Format(_T("%d"),get_serialnumber());
	GetDlgItem(IDC_SERIALNUM_EDIT)->SetWindowTextW(strTemp);
	m_brandrate_combox.ResetContent();
	m_brandrate_combox.AddString(L"9600");
	m_brandrate_combox.AddString(L"19200");
	m_brandrate_combox.AddString(L"38400");
	m_brandrate_combox.AddString(L"57600");
	m_brandrate_combox.AddString(L"115200");
	m_brandrate_combox.AddString(L"76800");
    if((product_register_value[15] >= 0) && (product_register_value[15] <= 5))
	    m_brandrate_combox.SetCurSel(product_register_value[15]);

	m_mstpmodbus_combox.ResetContent();
	m_mstpmodbus_combox.AddString(L"BACnet MSTP");
 
	m_mstpmodbus_combox.AddString(L"Modbus");
	 

	if (product_register_value[7] == PM_TSTAT8|| 
        (product_register_value[7] == PM_TSTAT8_WIFI) || 
        (product_register_value[7] == PM_TSTAT8_OCC) || 
        (product_register_value[7] == PM_TSTAT7_ARM) || 
        (product_register_value[7] == PM_TSTAT8_220V))
	{
		if (product_register_value[21] == 0)
		{
			m_mstpmodbus_combox.SetCurSel(1);
		}

		else
		{
			m_mstpmodbus_combox.SetCurSel(0);
		}

        unsigned int temp_device_id;
        temp_device_id = product_register_value[992] * 65536 + product_register_value[991];
        CString cs_deviceid;
        cs_deviceid.Format(_T("%u"), temp_device_id);

        GetDlgItem(IDC_EDIT_BACNET_DEVICE_ID)->SetWindowTextW(cs_deviceid);
        if (product_register_value[4] >= 86)
        {
            GetDlgItem(IDC_EDIT_BACNET_DEVICE_ID)->EnableWindow(true);
        }
        else
        {
            GetDlgItem(IDC_EDIT_BACNET_DEVICE_ID)->EnableWindow(false);
        }
	}
	else
	{
        GetDlgItem(IDC_EDIT_BACNET_DEVICE_ID)->EnableWindow(false);
		if (product_register_value[21] == 0)
		{
			m_mstpmodbus_combox.SetCurSel(0);
		}

		else
		{
			m_mstpmodbus_combox.SetCurSel(1);
		}
	}


	strTemp.Format(_T("%d"), product_register_value[39]);
	m_Editor_macmstp.SetWindowTextW(strTemp);
	strTemp.Format(_T("%d"), product_register_value[38]);
	m_BipPort_Edit.SetWindowTextW(strTemp);

	strTemp.Format(_T("%0.1f"),get_curtstat_version());
	GetDlgItem(IDC_FIRMWARV_EDIT)->SetWindowTextW(strTemp);
	strTemp.Format(_T("%d"),product_register_value[8]);//8
	GetDlgItem(IDC_HARDWAREV_EDIT)->SetWindowTextW(strTemp);
	int nModel=product_register_value[7];
	CString ProductName = GetProductName(nModel);
	if (nModel == PM_CS_RSM_AC||nModel == PM_CS_SM_AC)
	{
		if (product_register_value[11] == 0)
		{
			ProductName+=_T("-100A");
		}
		else if (product_register_value[11]==1)
		{
			ProductName+=_T("-200A");
		}
		else if (product_register_value[11]==2)
		{
			ProductName+=_T("-300A");
		}

	}
	
	GetDlgItem(IDC_MODEL_EDIT)->SetWindowTextW(ProductName);
	strTemp.Format(_T("%d"),product_register_value[9]);
	GetDlgItem(IDC_PIC_EDIT)->SetWindowText(strTemp);



	GetDlgItem(IDC_BUTTON_WIFI_CONFIG)->ShowWindow(FALSE);
	MODBUS_BAUDRATE = 15;
    if (             product_register_value[7] == PM_T322AI 
	              || product_register_value[7] == PM_T38AI8AO6DO 
	              || product_register_value[7] == PM_T3PT12
				  || product_register_value[7] == PM_T36CTA
                  || product_register_value[7] == PM_PWMETER
	              ||product_register_value[7]==STM32_HUM_NET 
		)
    {
        GetDlgItem (IDC_STATIC_IPTIPS)->ShowWindow (TRUE);
        GetDlgItem (IDC_APPLYBUTTON)->ShowWindow (TRUE);
        GetDlgItem (IDC_STATIC_IPMODEL)->ShowWindow (TRUE);
        GetDlgItem (IDC_STATIC_IPADDRESS)->ShowWindow (TRUE);
        GetDlgItem (IDC_STATICSUBNETMASK)->ShowWindow (TRUE);
        GetDlgItem (IDC_STATICGATEWAYADDRESS)->ShowWindow (TRUE);
        GetDlgItem (IDC_STATIC_LISTENNINGPORT)->ShowWindow (TRUE);
        GetDlgItem (IDC_STATICMACADDRESS)->ShowWindow (TRUE);
		
        CString strtemp;
        int CO2_NET_MODBUS_MAC_ADDRESS_START = 40;
        strtemp.Format(_T("%02X-%02X-%02X-%02X-%02X-%02X"),product_register_value[CO2_NET_MODBUS_MAC_ADDRESS_START],product_register_value[CO2_NET_MODBUS_MAC_ADDRESS_START+1],product_register_value[CO2_NET_MODBUS_MAC_ADDRESS_START+2],product_register_value[CO2_NET_MODBUS_MAC_ADDRESS_START+3],product_register_value[CO2_NET_MODBUS_MAC_ADDRESS_START+4],product_register_value[CO2_NET_MODBUS_MAC_ADDRESS_START+5]);
        m_Edit_MacAddress.SetWindowText(strtemp);
        m_Edit_MacAddress.ShowWindow (TRUE);
        int CO2_NET_MODBUS_IP_MODE = 46;
        m_ip_model.SetCurSel(product_register_value[CO2_NET_MODBUS_IP_MODE]);
        m_ip_model.ShowWindow (TRUE);
        int   CO2_NET_MODBUS_IP_ADDRESS_START = 47;
        m_ipaddress.SetAddress((BYTE)product_register_value[CO2_NET_MODBUS_IP_ADDRESS_START],
            (BYTE)product_register_value[CO2_NET_MODBUS_IP_ADDRESS_START+1],
            (BYTE)product_register_value[CO2_NET_MODBUS_IP_ADDRESS_START+2],
            (BYTE)product_register_value[CO2_NET_MODBUS_IP_ADDRESS_START+3]);
         int   CO2_NET_MODBUS_SUBNET_MASK_ADDRESS_START  =     51;
          m_ipaddress.ShowWindow (TRUE);
        m_Subnet_Mask.SetAddress((BYTE)product_register_value[CO2_NET_MODBUS_SUBNET_MASK_ADDRESS_START],
            (BYTE)product_register_value[CO2_NET_MODBUS_SUBNET_MASK_ADDRESS_START+1],
            (BYTE)product_register_value[CO2_NET_MODBUS_SUBNET_MASK_ADDRESS_START+2],
            (BYTE)product_register_value[CO2_NET_MODBUS_SUBNET_MASK_ADDRESS_START+3]);
             int   CO2_NET_MODBUS_GATEWAY_ADDRESS_START  =     55;
             m_Subnet_Mask.ShowWindow (TRUE);

        m_GatewayAddress.SetAddress((BYTE)product_register_value[CO2_NET_MODBUS_GATEWAY_ADDRESS_START],
            (BYTE)product_register_value[CO2_NET_MODBUS_GATEWAY_ADDRESS_START+1],
            (BYTE)product_register_value[CO2_NET_MODBUS_GATEWAY_ADDRESS_START+2],
            (BYTE)product_register_value[CO2_NET_MODBUS_GATEWAY_ADDRESS_START+3]);
          int CO2_NET_MODBUS_LISTEN_PORT_AT_TCP_SERVER_MODE_START =  60;
          m_GatewayAddress.ShowWindow (TRUE);
        strtemp.Format(_T("%d"),product_register_value[CO2_NET_MODBUS_LISTEN_PORT_AT_TCP_SERVER_MODE_START]);
        m_ListenPort.SetWindowText(strtemp);
        m_ListenPort.ShowWindow (TRUE);


    }
	
	else if ( product_register_value[7] == PM_TSTAT8_WIFI)
	{
		 
			GetDlgItem(IDC_STATIC_IPTIPS)->ShowWindow(TRUE);
			GetDlgItem(IDC_APPLYBUTTON)->ShowWindow(TRUE);
			GetDlgItem(IDC_STATIC_IPMODEL)->ShowWindow(TRUE);
			GetDlgItem(IDC_STATIC_IPADDRESS)->ShowWindow(TRUE);
			GetDlgItem(IDC_STATICSUBNETMASK)->ShowWindow(TRUE);
			GetDlgItem(IDC_STATICGATEWAYADDRESS)->ShowWindow(TRUE);
			GetDlgItem(IDC_STATIC_LISTENNINGPORT)->ShowWindow(TRUE);
			GetDlgItem(IDC_STATICMACADDRESS)->ShowWindow(TRUE);
			GetDlgItem(IDC_BUTTON_WIFI_CONFIG)->ShowWindow(TRUE);
	 
		   
		

		GetDlgItem(IDC_STATIC_BIPPORT)->ShowWindow(FALSE);
		GetDlgItem(IDC_EDIT_BIPPORT)->ShowWindow(FALSE);
		GetDlgItem(IDC_STATIC_MAC_MSTP)->ShowWindow(FALSE);
		GetDlgItem(IDC_EDIT_MSTP_MAC)->ShowWindow(FALSE);


		CString strtemp;
		int CO2_NET_MODBUS_MAC_ADDRESS_START = 40;
		strtemp.Format(_T("%02X-%02X-%02X-%02X-%02X-%02X"), product_register_value[CO2_NET_MODBUS_MAC_ADDRESS_START], product_register_value[CO2_NET_MODBUS_MAC_ADDRESS_START + 1], product_register_value[CO2_NET_MODBUS_MAC_ADDRESS_START + 2], product_register_value[CO2_NET_MODBUS_MAC_ADDRESS_START + 3], product_register_value[CO2_NET_MODBUS_MAC_ADDRESS_START + 4], product_register_value[CO2_NET_MODBUS_MAC_ADDRESS_START + 5]);
		m_Edit_MacAddress.SetWindowText(strtemp);
		m_Edit_MacAddress.ShowWindow(TRUE);
		int CO2_NET_MODBUS_IP_MODE = 46;
		m_ip_model.SetCurSel(product_register_value[CO2_NET_MODBUS_IP_MODE]);
		m_ip_model.ShowWindow(TRUE);
		 
		int   CO2_NET_MODBUS_IP_ADDRESS_START = 47;
		m_ipaddress.SetAddress((BYTE)product_register_value[CO2_NET_MODBUS_IP_ADDRESS_START],
			(BYTE)product_register_value[CO2_NET_MODBUS_IP_ADDRESS_START + 1],
			(BYTE)product_register_value[CO2_NET_MODBUS_IP_ADDRESS_START + 2],
			(BYTE)product_register_value[CO2_NET_MODBUS_IP_ADDRESS_START + 3]);
		int   CO2_NET_MODBUS_SUBNET_MASK_ADDRESS_START = 51;
		m_ipaddress.ShowWindow(TRUE);
		m_Subnet_Mask.SetAddress((BYTE)product_register_value[CO2_NET_MODBUS_SUBNET_MASK_ADDRESS_START],
			(BYTE)product_register_value[CO2_NET_MODBUS_SUBNET_MASK_ADDRESS_START + 1],
			(BYTE)product_register_value[CO2_NET_MODBUS_SUBNET_MASK_ADDRESS_START + 2],
			(BYTE)product_register_value[CO2_NET_MODBUS_SUBNET_MASK_ADDRESS_START + 3]);
		int   CO2_NET_MODBUS_GATEWAY_ADDRESS_START = 55;
		m_Subnet_Mask.ShowWindow(TRUE);

		m_GatewayAddress.SetAddress((BYTE)product_register_value[CO2_NET_MODBUS_GATEWAY_ADDRESS_START],
			(BYTE)product_register_value[CO2_NET_MODBUS_GATEWAY_ADDRESS_START + 1],
			(BYTE)product_register_value[CO2_NET_MODBUS_GATEWAY_ADDRESS_START + 2],
			(BYTE)product_register_value[CO2_NET_MODBUS_GATEWAY_ADDRESS_START + 3]);
		int CO2_NET_MODBUS_LISTEN_PORT_AT_TCP_SERVER_MODE_START = 60;
		m_GatewayAddress.ShowWindow(TRUE);
		strtemp.Format(_T("%d"), product_register_value[CO2_NET_MODBUS_LISTEN_PORT_AT_TCP_SERVER_MODE_START]);
		m_ListenPort.SetWindowText(strtemp);
		m_ListenPort.ShowWindow(TRUE);
	}
	else if(product_register_value[7] == PWM_TRANSDUCER)
	{
		GetDlgItem(IDC_STATIC_IPTIPS)->ShowWindow(FALSE);
		GetDlgItem(IDC_APPLYBUTTON)->ShowWindow(FALSE);
		GetDlgItem(IDC_STATIC_IPMODEL)->ShowWindow(FALSE);
		GetDlgItem(IDC_STATIC_IPADDRESS)->ShowWindow(FALSE);
		GetDlgItem(IDC_STATICSUBNETMASK)->ShowWindow(FALSE);
		GetDlgItem(IDC_STATICGATEWAYADDRESS)->ShowWindow(FALSE);
		GetDlgItem(IDC_STATIC_LISTENNINGPORT)->ShowWindow(FALSE);
		GetDlgItem(IDC_STATICMACADDRESS)->ShowWindow(FALSE);
		GetDlgItem(IDC_STATIC_BIPPORT)->ShowWindow(FALSE);
		GetDlgItem(IDC_STATIC_MAC_MSTP)->ShowWindow(FALSE);
		GetDlgItem(IDC_STATIC_MSTP_MODBUS)->ShowWindow(FALSE);

		m_Edit_MacAddress.ShowWindow(FALSE);
		m_ip_model.ShowWindow(FALSE);
		m_ipaddress.ShowWindow(FALSE);
		m_Subnet_Mask.ShowWindow(FALSE);
		m_GatewayAddress.ShowWindow(FALSE);
		m_ListenPort.ShowWindow(FALSE);
		m_Editor_macmstp.ShowWindow(FALSE);
		m_mstpmodbus_combox.ShowWindow(FALSE);
		m_BipPort_Edit.ShowWindow(FALSE);


	}

	else
    {
        GetDlgItem (IDC_STATIC_IPTIPS)->ShowWindow (FALSE);
        GetDlgItem (IDC_APPLYBUTTON)->ShowWindow (FALSE);
        GetDlgItem (IDC_STATIC_IPMODEL)->ShowWindow (FALSE);
        GetDlgItem (IDC_STATIC_IPADDRESS)->ShowWindow (FALSE);
        GetDlgItem (IDC_STATICSUBNETMASK)->ShowWindow (FALSE);
        GetDlgItem (IDC_STATICGATEWAYADDRESS)->ShowWindow (FALSE);
        GetDlgItem (IDC_STATIC_LISTENNINGPORT)->ShowWindow (FALSE);
        GetDlgItem (IDC_STATICMACADDRESS)->ShowWindow (FALSE);
		GetDlgItem (IDC_STATIC_AEC_ENCRYPT)->ShowWindow(FALSE);
		GetDlgItem (IDC_EDIT_AES_ENCRYPT)->ShowWindow(FALSE);
		GetDlgItem (IDC_CHECK_PASSWORD)->ShowWindow(FALSE);
        GetDlgItem(IDC_STATIC_ACE)->ShowWindow(FALSE);

		GetDlgItem(IDC_STATIC_BIPPORT)->ShowWindow(FALSE);
		GetDlgItem(IDC_EDIT_BIPPORT)->ShowWindow(FALSE);
		GetDlgItem(IDC_STATIC_MAC_MSTP)->ShowWindow(FALSE);
		GetDlgItem(IDC_EDIT_MSTP_MAC)->ShowWindow(FALSE);


        m_Edit_MacAddress.ShowWindow (FALSE);
        m_ip_model.ShowWindow (FALSE);
        m_ipaddress.ShowWindow (FALSE);
        m_Subnet_Mask.ShowWindow (FALSE);
        m_GatewayAddress.ShowWindow (FALSE);
        m_ListenPort.ShowWindow (FALSE);
		GetDlgItem(IDC_STATIC_NETWORKID)->ShowWindow(FALSE);
			GetDlgItem(IDC_STATIC_NETWORKID2)->ShowWindow(FALSE);
				GetDlgItem(IDC_STATIC_NETWORKID3)->ShowWindow(FALSE);
					GetDlgItem(IDC_EDIT_NETWORKID)->ShowWindow(FALSE);
						GetDlgItem(IDC_EDIT_NODEID)->ShowWindow(FALSE);
							GetDlgItem(IDC_EDIT_FREID)->ShowWindow(FALSE);
    }

	if (product_register_value[7] == PM_TSTAT5i
		|| product_register_value[7] == PM_TSTAT6
		|| product_register_value[7] == PM_TSTAT7
		|| product_register_value[7] == PM_TSTAT8
		|| (product_register_value[7] == PM_TSTAT8_WIFI) || (product_register_value[7] == PM_TSTAT8_OCC) || (product_register_value[7] == PM_TSTAT7_ARM) || (product_register_value[7] == PM_TSTAT8_220V)
		)
	{
		bitset<16>  value109(product_register_value[109]);
		int sel = value109[4];//第五位
		m_combox_mrd.SetCurSel(sel);
	}
	else
	{
		bitset<16>  value184(product_register_value[184]);
		int sel = value184[4];//第五位
		m_combox_mrd.SetCurSel(sel);
	}
	Read_Multi(g_tstat_id, &product_register_value[599], 599, 100);
	if (product_register_value[599] == 0)
	{
		m_Edit_AESPassword.EnableWindow(FALSE);
		GetDlgItem(IDC_CHECK_PASSWORD)->EnableWindow(FALSE);
	} 
	else
	{
		m_Edit_AESPassword.EnableWindow(TRUE);
		m_Edit_AESPassword.SetWindowTextW(GetTextFromReg(600)+ GetTextFromReg(604));
		//m_Edit_AESPassword.SetPasswordChar('*');
		((CButton *)GetDlgItem(IDC_CHECK_PASSWORD))->SetCheck(1);
	}
	  strTemp.Format(_T("%d"), (int)product_register_value[608]);
	  m_Edit_Network.SetWindowTextW(strTemp);
	  strTemp.Format(_T("%d"), (int)product_register_value[609]);
	  m_Edit_NodeID.SetWindowTextW(strTemp);

	  long long Freq = ((long long)product_register_value[610]) * 65536 + ((long long)product_register_value[611]);
	  strTemp.Format(_T("%ld HZ"), Freq);
	  m_Edit_FrequenceID.SetWindowTextW(strTemp);

      if (PM_T36CTA == product_register_value[7])
      {
          m_Edit_FrequenceID.ShowWindow(SW_SHOW);
          GetDlgItem(IDC_STATIC_AEC_ENCRYPT)->ShowWindow(SW_SHOW);
          GetDlgItem(IDC_EDIT_AES_ENCRYPT)->ShowWindow(SW_SHOW);
          GetDlgItem(IDC_STATIC_NETWORKID)->ShowWindow(SW_SHOW);
          GetDlgItem(IDC_STATIC_NETWORKID2)->ShowWindow(SW_SHOW);
          GetDlgItem(IDC_STATIC_NETWORKID3)->ShowWindow(SW_SHOW);
          GetDlgItem(IDC_EDIT_NETWORKID)->ShowWindow(SW_SHOW);
          GetDlgItem(IDC_EDIT_NODEID)->ShowWindow(SW_SHOW);
          GetDlgItem(IDC_EDIT_FREID)->ShowWindow(SW_SHOW);
          GetDlgItem(IDC_STATIC_ACE)->ShowWindow(SW_SHOW);
          
      }
      else
      {
          m_Edit_FrequenceID.ShowWindow(SW_HIDE);
          GetDlgItem(IDC_STATIC_AEC_ENCRYPT)->ShowWindow(SW_HIDE);
          GetDlgItem(IDC_EDIT_AES_ENCRYPT)->ShowWindow(SW_HIDE);
          GetDlgItem(IDC_STATIC_NETWORKID)->ShowWindow(SW_HIDE);
          GetDlgItem(IDC_STATIC_NETWORKID2)->ShowWindow(SW_HIDE);
          GetDlgItem(IDC_STATIC_NETWORKID3)->ShowWindow(SW_HIDE);
          GetDlgItem(IDC_EDIT_NETWORKID)->ShowWindow(SW_HIDE);
          GetDlgItem(IDC_EDIT_NODEID)->ShowWindow(SW_HIDE);
          GetDlgItem(IDC_EDIT_FREID)->ShowWindow(SW_HIDE);
          GetDlgItem(IDC_STATIC_ACE)->ShowWindow(SW_HIDE);
      }
      switch_product_last_view();
}
void CDialogT3::ShowDialogData()
{

    m_model = _T("T3-4AO");
    m_address= multi_register_value[6];
    m_firmware= multi_register_value[5];
    m_serial= get_serialnumber(); //Address 0-3
    m_hardware= multi_register_value[4];
    //if (multi_register_value[7] == 20)
    //	m_model= _T("T3-8AI13O");
    m_picVersion= multi_register_value[9];




    //==================================================Input============================================================
    //T3-4AO
    //address: input 119~138  INPUT1-10 119(high word) 120(low word)
    //address:Switch
    //Range Setting for each input  200
    CString strresult;

    for(int i = 1; i<=10; i++)
    {
        // 		strresult.Format(_T("%d°C"),10);
        // 		m_msflexgridinput.put_TextMatrix(i,2,strresult);
        // 		m_msflexgridinput.put_TextMatrix(i,1,_T("west door"));
        // 		m_msflexgridinput.put_TextMatrix(i,3,_T("0-100%"));


        m_msflexgrid_input.put_TextMatrix(i,2,vect3model.at(119-1+i).CStvalue);
        m_msflexgrid_input.put_TextMatrix(i,1,vect3model.at(119-1+i).CStName);
        //m_msflexgrid_input.put_TextMatrix(i,3,vect3model.at(148-1+i).CStrange);
    }


    //====================================================Output============================================================
    //T3-4AO OUTPUT
    //address: input 100~110   OUTPUT1-12
    //100~111

    CString CstresultDO;
    for(int i = 1; i<=12; i++)
    {
        // 		CstresultDO.Format(_T("%d"),10);
        // 		m_msflexgridDO.put_TextMatrix(i,2,CstresultDO);
        // 		m_msflexgridDO.put_TextMatrix(i,1,_T("east door"));
        // 		m_msflexgridDO.put_TextMatrix(i,3,_T("AUTO"));


        m_msflexgrid_output.put_TextMatrix(i,2,vect3model.at(100-1+i).CStvalue);
        m_msflexgrid_output.put_TextMatrix(i,1,vect3model.at(100-1+i).CStName);
        //m_msflexgrid_output.put_TextMatrix(i,3,vect3model.at(124-1+i).CStautomannel);
        //m_msflexgrid_output.put_TextMatrix(i,4,vect3model.at(100-1+i).CStrange);


    }






    UpdateData(FALSE);





#if 0
    //183					1		Range Setting for each input.
    //184					1		183 correspond to input1,
    //185					1		184 correspond to input2, etc.
    //186					1		0 = raw data,
    //187					1		1 = 10K Celsius,
    //188					1		2 = 10K Fahrenheit,
    //189					1		3 = 0-100%
    //190					1		4 = ON/OFF,
    //								5 = OFF/ON
    //								6 = Pulse Input
    //								7 = Lighting Control
    for (int i = 183; i<=190; i++)
    {
        int retRangSet =write_one(g_tstat_id,i,1);
        TRACE(_T("retRangSet=%d\n"),retRangSet);
    }



    CString strinput,stroutput,strfilter;
    //Input Register address 118-133  eg:input1-> 118 high word   119 low word
    int numrow = 1;
    for (int i = 1; i<=16; i++)
    {
        int temphigh = multi_register_value[i+117]<<16;
        i++;
        int templow = multi_register_value[i+117]&0x0000ffff;
        int temp = temphigh|templow;

        strinput.Format(_T("%d°C"),temp);
        m_msflexgrid_input.put_TextMatrix(numrow,2,strinput);
        //Input Filter address 191-198
        strfilter.Format(_T("%d"),multi_register_value[190+numrow]);
        m_msflexgrid_input.put_TextMatrix(numrow,3,strfilter);
        numrow++;



    }

    //Output Register address 100-112
    for (int i = 1; i<=13; i++)
    {
        if (multi_register_value[i+99] == 0)
        {
            m_msflexgrid_output.put_TextMatrix(i,2,_T("Off"));
        }
        else if(multi_register_value[i+99] > 0)
        {
            m_msflexgrid_output.put_TextMatrix(i,2,_T("On"));
        }

    }

    //显示Auto/Manual
    //116	2	Switch Status, 1 Register output 1-8
    //117	2	Switch Status, 2 Register output 9-13
    //当output全按至HAND时,116 117的二进制值:
    //					 high 8 bit   |	  low 8 bit
    //HAND INPUT		 1   2   3   4   5   6  7    8			  9  10  11  12  13
//register:116 117     0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1			0 1 0 1 0 1 0 1 0 1 0 0 0 0 0 0


    //当output全按至AUTO时,116 117的二进制值:
    //AUTO INPUT	   1   2   3   4   5   6   7   8			9  10  11  12  13
//register;116 117	   1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0			1 0 1 0 1 0 1 0 1 0 0 0 0 0 0 0

    int temp = 1;

    for (int i = 8; i>=1; i--)
    {
        //Manual
        if((multi_register_value[116]&temp)!= 0)
            m_msflexgrid_output.put_TextMatrix(i,3,_T("Manual"));
        temp = temp<<1;
        if ((multi_register_value[116]&temp)!=0)
            m_msflexgrid_output.put_TextMatrix(i,3,_T("Auto"));
        temp = temp<<1;
    }

    temp = 1;
    temp = temp<<6;
    for (int i = 13; i>=9; i--)
    {

        //Manual
        if((multi_register_value[117]&temp)!= 0)
            m_msflexgrid_output.put_TextMatrix(i,3,_T("Manual"));
        temp = temp<<1;
        if ((multi_register_value[117]&temp)!=0)
            m_msflexgrid_output.put_TextMatrix(i,3,_T("Auto"));
        temp = temp<<1;
    }

#endif
}
void T3000_Default_MainView::OnCbnKillfocusBaudratecombo()
{
	if (product_register_value[MODBUS_BAUDRATE] == m_brandrate_combox.GetCurSel())	//Add this to judge weather this value need to change.
		return;

	/* Post_Thread_Message(MY_WRITE_ONE,g_tstat_id,MODBUS_BAUDRATE,m_baudRateCombox.GetCurSel(),
	product_register_value[MODBUS_BAUDRATE],this->m_hWnd,IDC_BAUDRATECOMBO,_T("BAUDRATE"));*/

	int ret = write_one(g_tstat_id, MODBUS_BAUDRATE, m_brandrate_combox.GetCurSel());

	int index_brandrate = m_brandrate_combox.GetCurSel();
	int brandrate = 19200;

	if (index_brandrate == 0)
	{
		brandrate = 9600;
	}
	else if (index_brandrate == 1)
	{
		brandrate = 19200;
	}
	else if (index_brandrate == 2)
	{
		brandrate = 38400;
	}
	else if (index_brandrate == 3)
	{
		brandrate = 57600;
	}
	else if (index_brandrate == 4)
	{
		brandrate = 115200;
	}
	if (GetCommunicationType() == 1)
	{
		return;
	}
	CString SqlText;

	SqlText.Format(_T("update ALL_NODE set Bautrate = '%d' where Serial_ID='%d'"), brandrate, get_serialnumber());
	Change_BaudRate(brandrate);


	CppSQLite3DB SqliteDBBuilding;
	CppSQLite3Table table;
	CppSQLite3Query q;
	SqliteDBBuilding.open((UTF8MBSTR)g_strCurBuildingDatabasefilePath);

	SqliteDBBuilding.execDML((UTF8MBSTR)SqlText);
	SqliteDBBuilding.closedb();
	CMainFrame* pFrame = (CMainFrame*)(AfxGetApp()->m_pMainWnd);
	pFrame->ScanTstatInDB();
}
void T3000_Default_MainView::OnCbnSelchangeComboMstpModbus()
{
	int sel = m_mstpmodbus_combox.GetCurSel();
	int protocol = 0;

	if (product_register_value[7] == PM_TSTAT8
		|| (product_register_value[7] == PM_TSTAT8_WIFI) || (product_register_value[7] == PM_TSTAT8_OCC) || (product_register_value[7] == PM_TSTAT7_ARM) || (product_register_value[7] == PM_TSTAT8_220V)
		)
	{
 
		if (sel == 0)
		{
			protocol = 1;
		} 
		else
		{
			protocol = 0;
		}
	}
	else
	{
		if (sel == 1)
		{
			protocol = 3;
		}
	}
	
	 
    if (write_one(g_tstat_id, 21, protocol) > 0)
    {
        int temp_protocol = 0;
        if ((g_protocol == PROTOCOL_MSTP_TO_MODBUS) || (g_protocol == MODBUS_RS485))
        {
            if (protocol == 1) //设备选中MSTP 协议
            {
                temp_protocol = PROTOCOL_MSTP_TO_MODBUS;
            }
            else
            {
                temp_protocol = MODBUS_RS485;
            }
        }
        else //这里还要额外判断 挂在T3下面的MSTP 设备的处理方法;
        {
            return;
        }
        CString SqlText;
        SqlText.Format(_T("update ALL_NODE set Protocol = '%d' where Serial_ID='%d'"), temp_protocol, get_serialnumber());

        CppSQLite3DB SqliteDBBuilding;
        CppSQLite3Table table;
        CppSQLite3Query q;
        SqliteDBBuilding.open((UTF8MBSTR)g_strCurBuildingDatabasefilePath);

        SqliteDBBuilding.execDML((UTF8MBSTR)SqlText);
        SqliteDBBuilding.closedb();
        CMainFrame* pFrame = (CMainFrame*)(AfxGetApp()->m_pMainWnd);
        pFrame->ScanTstatInDB();
    }
	
 

}
void T3000_Default_MainView::OnBnClickedApplybutton()
{
    int m_nListenPort=0;
    BeginWaitCursor();
    //m_nListenPort	
    CString strText;
    m_ListenPort.GetWindowText(strText);
    if(!strText.IsEmpty())
        m_nListenPort=_wtoi(strText);
    if(m_nListenPort>=12767)
    {
        AfxMessageBox(_T("The listen port number is too big, please change it."));
        return;
    }
    if(m_nListenPort<=0)
    {
        AfxMessageBox(_T("The listen port number must be greater than 0!"));
        return;
    }
    write_one(g_tstat_id,75,m_nListenPort);
    product_register_value[75]=m_nListenPort;
    BYTE address1,address2,address3,address4;
    m_ipaddress.GetAddress(address1,address2,address3,address4);

    int sel = m_ip_model.GetCurSel ();
     write_one(g_tstat_id,61,sel);

    int CO2_NET_MODBUS_IP_ADDRESS_GHOST_START = 62 ;
    int n=write_one(g_tstat_id,CO2_NET_MODBUS_IP_ADDRESS_GHOST_START,address1);
    n=write_one(g_tstat_id,CO2_NET_MODBUS_IP_ADDRESS_GHOST_START+1,address2);
    n=write_one(g_tstat_id,CO2_NET_MODBUS_IP_ADDRESS_GHOST_START+2,address3);
    n=write_one(g_tstat_id,CO2_NET_MODBUS_IP_ADDRESS_GHOST_START+3,address4);
    int CO2_NET_MODBUS_SUBNET_MASK_ADDRESS_GHOST_START = 66;
    m_Subnet_Mask.GetAddress(address1,address2,address3,address4);
    n=write_one(g_tstat_id,CO2_NET_MODBUS_SUBNET_MASK_ADDRESS_GHOST_START+0,address1);
    n=write_one(g_tstat_id,CO2_NET_MODBUS_SUBNET_MASK_ADDRESS_GHOST_START+1,address2);
    n=write_one(g_tstat_id,CO2_NET_MODBUS_SUBNET_MASK_ADDRESS_GHOST_START+2,address3);
    n=write_one(g_tstat_id,CO2_NET_MODBUS_SUBNET_MASK_ADDRESS_GHOST_START+3,address4);
    m_GatewayAddress.GetAddress(address1,address2,address3,address4);
    int CO2_NET_MODBUS_GATEWAY_ADDRESS_GHOST_START =   70;
    n=write_one(g_tstat_id,CO2_NET_MODBUS_GATEWAY_ADDRESS_GHOST_START,address1);
    n=write_one(g_tstat_id,CO2_NET_MODBUS_GATEWAY_ADDRESS_GHOST_START+1,address2);
    n=write_one(g_tstat_id,CO2_NET_MODBUS_GATEWAY_ADDRESS_GHOST_START+2,address3);
    n=write_one(g_tstat_id,CO2_NET_MODBUS_GATEWAY_ADDRESS_GHOST_START+3,address4);
    int CO2_NET_MODBUS_ENABLE_GHOST = 76;
    n=write_one(g_tstat_id,CO2_NET_MODBUS_ENABLE_GHOST,1);

    Sleep(5*1000);



    CMainFrame* pPraent=(CMainFrame*)GetParent();

    CString strBuilding,strSubBuilding;
    strBuilding=pPraent->m_strCurMainBuildingName;
    strSubBuilding=pPraent->m_strCurSubBuldingName;
    CString strIP,strPort;
    strPort.Format(_T("%d"),product_register_value[75]);
    // BYTE address1,address2,address3,address4;
    m_ipaddress.GetAddress(address1,address2,address3,address4);
    strIP.Format(_T("%d.%d.%d.%d"),address1,address2,address3,address4);
    if(g_CommunicationType==1)//TCP
    {
       /* int nPort;
        nPort=_wtoi(strPort);*/
        //m_strIP=build_info.strIp; 
        g_CommunicationType=1;
        SetCommunicationType(g_CommunicationType);
        BOOL bOk=FALSE;
        bOk=Open_Socket2(strIP,m_nListenPort);
        CString strInfo;

        strInfo.Format((_T("Open IP:%s successful")),strIP);//prompt info;
        SetPaneString(1,strInfo);
        if(bOk)
        {
            try
			{
			CppSQLite3DB SqliteDBBuilding;
			CppSQLite3Table table;
			CppSQLite3Query q;
			SqliteDBBuilding.open((UTF8MBSTR)g_strCurBuildingDatabasefilePath);


                CString strSql;
                //strSql.Format(_T("update Building set Ip_Address='%s' where Ip_Address='%s'"),strIP,pPraent->m_strIP);
                //t_pCon->Execute(strSql.GetString(),NULL,adCmdText);

                // ¸Änode
                CString strSID;

                strSID.Format(_T("%d"), get_serialnumber());
                strSql.Format(_T("update ALL_NODE set Bautrate='%s',Com_Port='%s' where Serial_ID='%s'"),strIP,strPort,strSID); //bautrate ·ÅIP
                SqliteDBBuilding.execDML((UTF8MBSTR)strSql);

                SqliteDBBuilding.closedb();

            }
            catch(_com_error *e)
            {
                AfxMessageBox(e->ErrorMessage());
            }

            pPraent->m_strIP=strIP;
            pPraent->ScanTstatInDB();

        }
        else
        {

        }



    }
    EndWaitCursor();
}
void CNetworkControllView::OnEnKillfocusIdaddressEdit()
{	
	m_nSerialNum=get_serialnumber();
	CString strSerialNum;
	strSerialNum.Format(_T("%d"), m_nSerialNum);

	CString strModbusID;
	m_idEdt.GetWindowText(strModbusID);
	strModbusID.Trim();
	if(strModbusID.IsEmpty())
		return;
	int nID=_wtoi(strModbusID);
	if(nID<=0||nID>=255)
	{
	//	AfxMessageBox(_T("Please input a correct ID!"));
		return;
	}
	if(g_tstat_id==nID)
		return;
	_ConnectionPtr m_pConTmp;
	_RecordsetPtr m_pRsTemp;
	m_pConTmp.CreateInstance("ADODB.Connection");
	m_pRsTemp.CreateInstance("ADODB.Recordset");
	m_pConTmp->Open(g_strDatabasefilepath.GetString(),"","",adModeUnknown);
	
	CString strSql;
	strSql.Format(_T("select * from ALL_NODE where Product_ID ='%s'"),strModbusID);
	m_pRsTemp->Open((_variant_t)strSql,_variant_t((IDispatch *)m_pConTmp,true),adOpenStatic,adLockOptimistic,adCmdText);
	if(m_pRsTemp->GetRecordCount()>0)
	{
		while(VARIANT_FALSE==m_pRsTemp->EndOfFile)
		{			
			CString strSID=m_pRsTemp->GetCollect("Serial_ID");
			CString strPID=m_pRsTemp->GetCollect("Product_ID");
		
			if( strSID.CompareNoCase(strSerialNum)!=0 && strPID.CompareNoCase(strModbusID)==0 )
			{
				CString strPop;
				strPop.Format(_T("There is another device(Serial#=%s) has the ID ='%s', Please input a new one!"), strSID, strModbusID);
				AfxMessageBox(strPop);
				if(m_pRsTemp->State)
					m_pRsTemp->Close();		
				return;	

			}

			m_pRsTemp->MoveNext();
		}
	}

	if(m_pRsTemp->State)
		m_pRsTemp->Close();
	int nRet=0;
	nRet=write_one(g_tstat_id, 6,nID);
	if(nRet>0)
	{
		g_tstat_id=nID;
		CString strSerial;
		strSerial.Format(_T("%d"),m_nSerialNum);
		strSerial.Trim();
		strSql.Format(_T("update ALL_NODE set Product_ID ='%s' where Serial_ID ='%s'"),strModbusID,strSerial);
		m_pConTmp->Execute(strSql.GetString(),NULL,adCmdText);
	
	}
	if(m_pConTmp->State)
		m_pConTmp->Close();
	CMainFrame* pPraent=(CMainFrame*)GetParent();
	pPraent->ScanTstatInDB();
	Fresh();

}
void CNetworkControllView::Fresh()
{
	GetDlgItem(IDC_SERIALSTATIC)->SetFocus();
	m_IDaddress=multi_register_value[6];
	m_hardware_version=multi_register_value[8];
	m_nSerialNum=get_serialnumber();
	//m_firmwareVersion=get_curtstat_version();
	GetFirmwareVersion();
	m_nbldVersion = multi_register_value[14];
	CEdit* pEdit = (CEdit*)GetDlgItem(IDC_EDIT_BLDVERSION);
	CString strBldVer; strBldVer.Format(_T("%d"), m_nbldVersion);
	pEdit->SetWindowText(strBldVer);
	if (m_nbldVersion < _OLD_NC_VERSION && !m_bWarningBldVersion && m_nSerialNum != 0 && m_hardware_version < 4) // 序列号不等于0防止掉线时版本寄存器为0弹这个消息
	{	
		m_bWarningBldVersion = TRUE;
		CString strBldVer;
		strBldVer.Format(_T("NC(ID: %d) boot loader's current version is %d, it's too low, please upgrade it."), m_nSerialNum, m_nbldVersion);
		AfxMessageBox(strBldVer);

	}
	m_hardware_version=multi_register_value[8];

	
	if(multi_register_value[1]<10)
		m_strDate.Format(_T("%d%d-%d-%d"),multi_register_value[200],multi_register_value[201],multi_register_value[202],multi_register_value[204]);
	else
		m_strDate.Format(_T("%d%d-%d-%d"),multi_register_value[0],multi_register_value[201],multi_register_value[202],multi_register_value[204]);


	m_strTime.Format(_T("%02d:%02d"),multi_register_value[205],multi_register_value[206]);

	
	m_ip_addressCtrl.SetAddress((BYTE)multi_register_value[107],(BYTE)multi_register_value[108],(BYTE)multi_register_value[109],(BYTE)multi_register_value[110]);
	m_subnet_addressCtrl.SetAddress((BYTE)multi_register_value[111],(BYTE)multi_register_value[112],(BYTE)multi_register_value[113],(BYTE)multi_register_value[114]);
	m_gateway_addressCtrl.SetAddress((BYTE)multi_register_value[115],(BYTE)multi_register_value[116],(BYTE)multi_register_value[117],(BYTE)multi_register_value[118]);
	OnBnClickedCheck1();
		
	if(multi_register_value[12]==0)
	{
		m_baudRateCombox.SetCurSel(0);
	}
		
	if(multi_register_value[12]==1)
	{
		m_baudRateCombox.SetCurSel(1);
	}

	
	if(multi_register_value[106]==0)
	{
		m_ipModelComBox.SetCurSel(0);
	}
	if(multi_register_value[106]==1)
	{
		m_ipModelComBox.SetCurSel(1);
	}


	
	m_nListenPort=multi_register_value[120];

	UpdateData(false);
}