Exemplo n.º 1
0
//取得所有的文件版本信息,各信息间以\n分隔 
CString HFileVersion::GetFullVersion() 
{ 
	CString strRet; 
	/* 
	szRet = "文件版本: " + GetFileVersion() + "\n"; 
	szRet += "说明: " + GetFileDescription() +"\n"; 
	szRet += "版权: " + GetLegalCopyright() +"\n"; 
	szRet += "备注: " + GetComments() + "\n"; 
	szRet += "产品版本: " + GetProductVersion() +"\n"; 
	szRet += "产品名称: " + GetProductName() +"\n"; 
	szRet += "个人用内部版本说明: " + GetPrivateBuild() +"\n"; 
	szRet += "公司名称: " + GetCompanyName() +"\n"; 
	szRet += "合法商标: " + GetLegalTrademarks() +"\n"; 
	szRet += "内部名称: " + GetInternalName() +"\n"; 
	szRet += "特殊内部版本说明: " + GetSpecialBuild() +"\n"; 
	szRet += "源文件名: " + GetOriginalFilename() +"\n"; 
	*/ 
	strRet = "FileVersion: " + GetFileVersion() + "\n"; 
	strRet += "FileDescription: " + GetFileDescription() +"\n"; 
	strRet += "CopyRight: " + GetLegalCopyright() +"\n"; 
	strRet += "Comments: " + GetComments() + "\n"; 
	strRet += "ProductVersion: " + GetProductVersion() +"\n"; 
	strRet += "ProductName: " + GetProductName() +"\n"; 
	strRet += "PrivateBuild: " + GetPrivateBuild() +"\n"; 
	strRet += "CompanyName: " + GetCompanyName() +"\n"; 
	strRet += "TradeMarks: " + GetLegalTrademarks() +"\n"; 
	strRet += "InternalName: " + GetInternalName() +"\n"; 
	strRet += "SpecialBuild: " + GetSpecialBuild() +"\n"; 
	strRet += "OriginalFileName: " + GetOriginalFilename() +"\n"; 
	return strRet; 
} 
Exemplo n.º 2
0
BOOL CTroubleShootDlg::OnInitDialog()
{
	CDialogEx::OnInitDialog();
	CString StrTemp;
	StrTemp.Format(_T("Change %s's IP Address"),GetProductName(m_net_product_node.product_class_id));



	StrTemp.Format(_T("%s"),m_net_product_node.BuildingInfo.strIp);

	

	

	GetNewIP(StrTemp,m_net_product_node.NetworkCard_Address);

	//
	m_edit_newip.SetWindowTextW(StrTemp);
	m_edit_newip.textColor(RGB(255,0,0));
	m_edit_newip.bkColor(RGB(255,255,255));

	m_edit_newip.setFont(25,10,NULL,_T("Arial"));
	return TRUE;  // return TRUE unless you set the focus to a control
	// EXCEPTION: OCX Property Pages should return FALSE
}
BOOL Dowmloadfile::OnInitDialog()
{
	CDialogEx::OnInitDialog();

	// TODO:  Add extra initialization here

	((CComboBox *)GetDlgItem(IDC_COMBO_UPDATE_TYPE))->AddString(_T("Bootloader"));
	((CComboBox *)GetDlgItem(IDC_COMBO_UPDATE_TYPE))->AddString(_T("Main Firmware"));
	((CComboBox *)GetDlgItem(IDC_COMBO_UPDATE_TYPE))->SetCurSel(1);
	((CEdit *)GetDlgItem(IDC_EDIT_SERVER_DOMAIN))->SetWindowText(_T("www.temcocontrols.poweredbyclear.com"));
		
	wait_download_and_isp_finished = false;
	CString temp_id;CString temp_name;
	temp_id.Format(_T("%d"),m_product_isp_auto_flash.product_class_id);
	temp_name = GetProductName(m_product_isp_auto_flash.product_class_id);
	((CEdit *)GetDlgItem(IDC_EDIT_PRODUCT_ID))->SetWindowTextW(temp_id);
	((CEdit *)GetDlgItem(IDC_EDIT_PRODUCT_ID))->EnableWindow(false);
	//((CIPAddressCtrl *)GetDlgItem(IDC_IPADDRESS_TEMCO_IP))->SetAddress(114,93,27,13);
	((CEdit *)GetDlgItem(IDC_EDIT_PRODUCT_NAME))->SetWindowTextW(temp_name);
	((CEdit *)GetDlgItem(IDC_EDIT_PRODUCT_NAME))->EnableWindow(false);
	//int resualt=TCP_File_Socket.Create(0,SOCK_STREAM);//SOCK_STREAM
	downloadfile_hwnd = this->m_hWnd;
	//TCP_File_Socket.SetParentWindow(downloadfile_hwnd);
	Downloadfile_Thread = NULL;
	CString ApplicationFolder;
	download_thread_flag = true;
	GetModuleFileName(NULL, ApplicationFolder.GetBuffer(MAX_PATH), MAX_PATH);
	PathRemoveFileSpec(ApplicationFolder.GetBuffer(MAX_PATH));
	ApplicationFolder.ReleaseBuffer();
	Folder_Path = ApplicationFolder + _T("\\Database\\Firmware");
	if(!DirectoryExist(Folder_Path))
	{
		CreateDirectory(Folder_Path);
	}

	hostent* host = gethostbyname("www.temcocontrols.poweredbyclear.com");
	if(host == NULL)
	{
		MessageBox(_T("Can't access Temco server.\r\n www.temcocontrols.poweredbyclear.com  \r\nPlease check your internet connection!"),_T("Warning"),MB_OK | MB_ICONINFORMATION);
		PostMessage(WM_CLOSE,NULL,NULL);
		return TRUE;
	}
	char* pszIP  = (char *)inet_ntoa(*(struct in_addr *)(host->h_addr)); 
//	IP_ADDRESS[0] = pszIP[0];
	memcpy_s((char *)IP_ADDRESS_SERVER,20,pszIP,20);

	return TRUE;  // return TRUE unless you set the focus to a control
	// EXCEPTION: OCX Property Pages should return FALSE
}
CString CRegisterViewerDlg::Get_ProductModel(){
CString ModelName=_T("");
if (!is_connect())
{
AfxMessageBox(_T("Please Connect to your device,firstly!"));
} 
else
{
	  m_modelno=read_one(g_tstat_id,7,20);
	if (m_modelno>0)
	{
		ModelName=GetProductName(m_modelno);
	} 
	else
	{
	   AfxMessageBox(_T("Can't read your device"));
	}
}
return ModelName;
}
Exemplo n.º 5
0
VFolder *VProcess::RetainProductSystemFolder( ESystemFolderKind inSelector, bool inCreateFolderIfNotFound) const
{
	VFolder *folder = NULL;
	
	bool allUsers;
	bool useProductSubFolder;
	ESystemFolderKind currentUserFolder;
	switch( inSelector)
	{
		case eFK_UserDocuments:
		case eFK_Temporary:
			allUsers = true;
			useProductSubFolder = true;
			break;

		case eFK_CommonPreferences:
			currentUserFolder = eFK_UserPreferences;
			allUsers = true;
			useProductSubFolder = true;
			break;

		case eFK_CommonApplicationData:
			currentUserFolder = eFK_UserApplicationData;
			allUsers = true;
			useProductSubFolder = true;
			break;

		case eFK_CommonCache:
			currentUserFolder = eFK_UserCache;
			allUsers = true;
			useProductSubFolder = true;
			break;

		case eFK_UserPreferences:
		case eFK_UserApplicationData:
		case eFK_UserCache:
			allUsers = false;
			useProductSubFolder = true;
			break;
		
		default:
			allUsers = false;
			useProductSubFolder = false;
			break;
	}
	
	if (useProductSubFolder)
	{
		VFolder *parent = VFolder::RetainSystemFolder( inSelector, inCreateFolderIfNotFound);
		if (parent != NULL)
		{
			VError err;
			VString folderName;
			GetProductName( folderName);

			// accepte un alias
			VString aliasName( folderName);
			#if VERSIONWIN
			aliasName += ".lnk";
			#endif
			VFile aliasFile( *parent, aliasName);
			if (aliasFile.Exists() && aliasFile.IsAliasFile())
			{
				VFilePath target;
				err = aliasFile.ResolveAlias( target);
				if ( (err == VE_OK) && target.IsFolder() )
				{
					folder = new VFolder( target);
				}
			}

			if (folder == NULL)
			{
				folder = new VFolder( *parent, folderName);
			}
			
			if (!folder->Exists())
			{
				if (inCreateFolderIfNotFound)
				{
					if (allUsers)
					{
						// drop errors if we can retry in current user home directory
						StErrorContextInstaller context( false);
						err = folder->CreateRecursive( allUsers);
					}
					else
					{
						err = folder->CreateRecursive( allUsers);
					}
					if (err != VE_OK)
					{
						ReleaseRefCountable( &folder);
						
						// si on nous a demande de creer dans "all users", on ressaie dans le dossier de l'utilisateur courant
						if (allUsers)
						{
							folder = RetainProductSystemFolder( currentUserFolder, inCreateFolderIfNotFound);
						}
					}
				}
				else
				{
					ReleaseRefCountable( &folder);
				}
			}
		}

		ReleaseRefCountable( &parent);
	}
	else
	{
		folder = VFolder::RetainSystemFolder( inSelector, inCreateFolderIfNotFound);
	}

	return folder;
}
void CARDDlg::OnBnClickedOk()
{
   CString ip;
   CString strport;
   m_ipaddress.GetWindowText(ip);
   m_porteditor.GetWindowText(strport);
   if (ip.IsEmpty()||strport.IsEmpty())
   {
	   AfxMessageBox(_T("ip or port can not be empty!"));
	   return;
   }
   short port=_wtoi(strport);
   SetCommunicationType(1);
   BOOL is_open=Open_Socket2(ip,port);
   if (is_open)
   {
       //unsigned short data[2];
	   //int ModelID=Read_Multi(209,data,6,2);//  (255,6,20);
	   //CString show;
	   //show.Format(_T("Add=%d,Model=%d"),data[0],data[1]);
	   //ModelID=read_one(data[0],7);
	   //AfxMessageBox(show);
	   //show.Format(_T("Model=%d"),ModelID);
	   //AfxMessageBox(show);
	  unsigned short Data[10];
	  int ret=Read_Multi(255,Data,0,10);
	  if (ret<0)
	  {
	  AfxMessageBox(_T("Can't get the information of your device!\n Please try again."));
	  ret;
	  }

	   CString strSql;
	   CString strMainBuildName,strSubBuildingName,strSID,strFloorName,strRoomName,strProID;
	   CString strProName,strProType,strScreenID,strBaudrate,strGraphicID,strHdVersion,strStVersion,strCom,strEPSize;

	  
	   
	  /* CString temp_str=_T("select * from Building where Default_SubBuilding=-1");
	   m_pRs->Open(_variant_t(temp_str),_variant_t((IDispatch *)m_pCon,true),adOpenStatic,adLockOptimistic,adCmdText);	
	   int recordcount=m_pRs->GetRecordCount();
	   if(m_pRs->GetRecordCount()<=0)
	   {
		   AfxMessageBox(_T("There is no default building,please select a building First."));
		   return;
	   }


	   if(m_pRs->State)
		   m_pRs->Close(); 
	   if(m_pCon->State)
           m_pCon->Close();*/
	   CMainFrame* pFrame=(CMainFrame*)(AfxGetApp()->m_pMainWnd);
	   strMainBuildName= pFrame->m_strCurMainBuildingName;
	   strSubBuildingName= pFrame->m_strCurSubBuldingName;
	   int SN=Data[3]*256*256*256+Data[2]*256*256+Data[1]*256+Data[0];
       strSID.Format(_T("%d"),SN);
	   strFloorName=_T("floor1");
	   strRoomName=_T("room1");
	   strProName.Format(_T("%s:%d--%d"),GetProductName(Data[7]).GetBuffer(),SN,Data[6]);
	   strProType.Format(_T("%d"),Data[7]);
	   strProID.Format(_T("%d"),Data[6]);

	   strScreenID.Format(_T("Screen(S:%d--%d)"),SN,Data[6]);
	   m_ipaddress.GetWindowText(strBaudrate);
	   strGraphicID=_T("Clicking here to add a image...");
	   strHdVersion=_T("0.0");
	   strStVersion=_T("0.0");
	   m_porteditor.GetWindowText(strCom);
	   strEPSize=_T("0.0");
	   try
	   {
		   CADO ado;
		   ado.OnInitADOConn();
           strSql.Format(_T("Select * from ALL_NODE where Product_name='%s'"),strProName.GetBuffer());
           ado.m_pRecordset=ado.OpenRecordset(strSql);
           if (!ado.m_pRecordset->EndOfFile)//有表但是没有对应序列号的值
           {
            AfxMessageBox(_T("Already Exists!"));
            return;
            //ado.m_pRecordset->Close();
           }
		   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,Com_Port,EPsize) values('"
			   +strMainBuildName+"','"
			   +strSubBuildingName +"','"
			   +strSID+"','"
			   +strFloorName+"','"
			   +strRoomName+"','"
			   +strProName+"','"
			   +strProType+"','"
			   +strProID+"','"
			   +strScreenID+"','"
			   +strBaudrate+"','"
			   +strGraphicID+"','"
			   +strHdVersion+"','"
			   +strStVersion+"','"
			   +strCom+"','"
			   +strEPSize+"')"));
		   ado.m_pRecordset=ado.OpenRecordset(strSql);
		   ado.CloseConn();
		   AfxMessageBox(_T("Add OK!"));
           CDialogEx::OnOK();
	   }
	   
	   catch (CException* e)
	   {
		   AfxMessageBox(_T("Add Fail!"));
	   }
	  
	   
   }
   else
   {
	   AfxMessageBox(_T("Can not Connect"));
   }

}
void CRegisterViewerDlg::LoadDataFromDB()
{   CString ProductModelName =Get_ProductModel();
	_variant_t temp_var;
    if (ProductModelName.Find(_T("TStat"))!=-1)//Tstat serial
    {
		CADO ado;
		ado.OnInitADOConn();
		if (ado.IsHaveTable(ado,_T("T3000_Register_Address_By_ID")))
		{  
			CString sql,temp;
			DBRegister tempstruct;
			sql.Format(_T("Select * from T3000_Register_Address_By_ID order by Register_Address"));
			ado.m_pRecordset=ado.OpenRecordset(sql);



			while (!ado.m_pRecordset->EndOfFile)//有表但是没有对应序列号的值
			{
				if (product_type==T3000_5ABCDFG_LED_ADDRESS)
				{
					tempstruct.Register_Address=ado.m_pRecordset->GetCollect(_T("Register_Address"));
					tempstruct.AddressName=ado.m_pRecordset->GetCollect(_T("TSTAT5_LED_AddressName"));
					tempstruct.DataType=ado.m_pRecordset->GetCollect(_T("TSTAT5_LED_DATATYPE"));
					tempstruct.length=ado.m_pRecordset->GetCollect(_T("TSTAT5_LED_LEN"));
					temp_var=ado.m_pRecordset->GetCollect(_T("TSTAT5_LED_DESCRIPTION"));
					if (temp_var.vt==VT_NULL)
					{
						tempstruct.Description=_T("");
					} 
					else
					{
						tempstruct.Description=temp_var;
					}
					temp_var=ado.m_pRecordset->GetCollect(_T("TSTAT5_LED_Operation"));
					if (temp_var.vt==VT_NULL)
					{
						tempstruct.Description=_T("");
					} 
					else
					{
						tempstruct.Operation=temp_var;
					}
					/*	tempstruct.Description=(CString)ado.m_pRecordset->GetCollect(_T("TSTAT5_LED_DESCRIPTION"));*/

				} 
				else if (product_type==T3000_5EH_LCD_ADDRESS)
				{
					_variant_t vartemp;
					tempstruct.Register_Address=ado.m_pRecordset->GetCollect(_T("Register_Address"));
					tempstruct.AddressName=ado.m_pRecordset->GetCollect(_T("TSTAT5_LCD_AddressName"));
					tempstruct.DataType=ado.m_pRecordset->GetCollect(_T("TSTAT5_LCD_DATATYPE"));
					tempstruct.length=ado.m_pRecordset->GetCollect(_T("TSTAT5_LCD_LEN"));
					//tempstruct.Description=(CString)ado.m_pRecordset->GetCollect(_T("TSTAT5_LCD_DESCRIPTION"));
					vartemp=ado.m_pRecordset->GetCollect(_T("TSTAT5_LCD_DESCRIPTION"));
					if (vartemp.vt==VT_NULL)
					{
						tempstruct.Description=_T("");
					} 
					else
					{
						tempstruct.Description=vartemp;
					} 
					temp_var=ado.m_pRecordset->GetCollect(_T("TSTAT5_LCD_Operation"));
					if (temp_var.vt==VT_NULL)
					{
						tempstruct.Description=_T("");
					} 
					else
					{
						tempstruct.Operation=temp_var;
					}
				}
				else if (product_type==T3000_6_ADDRESS)
				{
					tempstruct.Register_Address=ado.m_pRecordset->GetCollect(_T("Register_Address"));
					tempstruct.AddressName=ado.m_pRecordset->GetCollect(_T("TSTAT6_AddressName"));
					tempstruct.DataType=ado.m_pRecordset->GetCollect(_T("TSTAT6_DATATYPE"));
					tempstruct.length=ado.m_pRecordset->GetCollect(_T("TSTAT6_LEN"));
					temp_var=ado.m_pRecordset->GetCollect(_T("TSTAT6_DESCRIPTION")); 
					if (temp_var.vt==VT_NULL)
					{
						tempstruct.Description=_T("");
					} 
					else
					{
						tempstruct.Description=temp_var;
					}
					temp_var=ado.m_pRecordset->GetCollect(_T("TSTAT6_Operation"));
					if (temp_var.vt==VT_NULL)
					{
						tempstruct.Description=_T("");
					} 
					else
					{
						tempstruct.Operation=temp_var;
					}
				}
				if (tempstruct.AddressName.CompareNoCase(_T("RESERVED"))==0)
				{
					ado.m_pRecordset->MoveNext();
					continue;
				}
				m_VecregisterData.push_back(tempstruct);
				m_recordcount++;
				ado.m_pRecordset->MoveNext();
			}
		} 
		ado.CloseRecordset();
		ado.CloseConn();
    } 
    else if (ProductModelName.Find(_T("T3"))!=-1)//T3 Serial
    {
		CADO ado;
		ado.OnInitADOConn();
		if (ado.IsHaveTable(ado,_T("T3_RegisterList")))
		{
			

			CString sql,temp;
			DBRegister tempstruct;
			sql.Format(_T("Select * from T3_RegisterList order by RegID"));
			ado.m_pRecordset=ado.OpenRecordset(sql);
			if (m_modelno==PM_T3PT10)
			{
				while(!ado.m_pRecordset->EndOfFile){
					tempstruct.Register_Address=ado.m_pRecordset->GetCollect(_T("RegID"));
					temp_var=ado.m_pRecordset->GetCollect(_T("T3-RTD"));
					if (temp_var.vt==VT_NULL)
					{
						tempstruct.AddressName=_T("");
					} 
					else
					{
						tempstruct.AddressName=temp_var;
					}
					if ((tempstruct.AddressName.CompareNoCase(_T("RESERVED"))==0)||tempstruct.AddressName.IsEmpty())
					{
						ado.m_pRecordset->MoveNext();
						continue;
					}
					tempstruct.DataType=ado.m_pRecordset->GetCollect(_T("T3-8AI8AO_DATATYPE"));
					tempstruct.length=ado.m_pRecordset->GetCollect(_T("T3-8AI8AO_LEN"));
					temp_var=ado.m_pRecordset->GetCollect(_T("T3-8AI8AO_DESCRIPTION"));
					if (temp_var.vt==VT_NULL)
					{
						tempstruct.Description=_T("");
					} 
					else
					{
						tempstruct.Description=temp_var;
					}
					temp_var=ado.m_pRecordset->GetCollect(_T("T3-8AI8AO_OPERATION"));
					if (temp_var.vt==VT_NULL)
					{
						tempstruct.Description=_T("");
					} 
					else
					{
						tempstruct.Operation=temp_var;
					}
					m_VecregisterData.push_back(tempstruct);
					m_recordcount++;
					ado.m_pRecordset->MoveNext();
				}



			} 
			else if (m_modelno==PM_T3PT10)
			{
			while(!ado.m_pRecordset->EndOfFile){
				tempstruct.Register_Address=ado.m_pRecordset->GetCollect(_T("RegID"));
				temp_var=ado.m_pRecordset->GetCollect(_T("T3-RTD"));
				if (temp_var.vt==VT_NULL)
				{
					tempstruct.AddressName=_T("");
				} 
				else
				{
					tempstruct.AddressName=temp_var;
				}
				if ((tempstruct.AddressName.CompareNoCase(_T("RESERVED"))==0)||tempstruct.AddressName.IsEmpty())
				{
					ado.m_pRecordset->MoveNext();
					continue;
				}
				tempstruct.DataType=ado.m_pRecordset->GetCollect(_T("T3-8AI16O_DATATYPE"));
				tempstruct.length=ado.m_pRecordset->GetCollect(_T("T3-8AI16O_LEN"));
				temp_var=ado.m_pRecordset->GetCollect(_T("T3-8AI16O_DESCRIPTION"));
				if (temp_var.vt==VT_NULL)
				{
					tempstruct.Description=_T("");
				} 
				else
				{
					tempstruct.Description=temp_var;
				}
				temp_var=ado.m_pRecordset->GetCollect(_T("T3-8AI16O_OPERATION"));
				if (temp_var.vt==VT_NULL)
				{
					tempstruct.Description=_T("");
				} 
				else
				{
					tempstruct.Operation=temp_var;
				}
				m_VecregisterData.push_back(tempstruct);
				m_recordcount++;
				ado.m_pRecordset->MoveNext();
			}	
			}
			else if (m_modelno==PM_T3IOA)
			{
			}
			else if (m_modelno==PM_T332AI)
			{
			}
			else if (m_modelno==PM_T3AI16O)
			{
			}
			else if (m_modelno==PM_T3PERFORMANCE)
			{
			}
			else if (m_modelno==PM_T34AO)
			{
			while(!ado.m_pRecordset->EndOfFile){
				tempstruct.Register_Address=ado.m_pRecordset->GetCollect(_T("RegID"));
				temp_var=ado.m_pRecordset->GetCollect(_T("T3-4AO"));
				if (temp_var.vt==VT_NULL)
				{
					tempstruct.AddressName=_T("");
				} 
				else
				{
					tempstruct.AddressName=temp_var;
				}
				if ((tempstruct.AddressName.CompareNoCase(_T("RESERVED"))==0)||tempstruct.AddressName.IsEmpty())
				{
					ado.m_pRecordset->MoveNext();
					continue;
				}
				tempstruct.DataType=ado.m_pRecordset->GetCollect(_T("T3-4AO_DATATYPE"));
				tempstruct.length=ado.m_pRecordset->GetCollect(_T("T3-4AO_LEN"));
				temp_var=ado.m_pRecordset->GetCollect(_T("T3-4AO_DESCRIPTION"));
				if (temp_var.vt==VT_NULL)
				{
					tempstruct.Description=_T("");
				} 
				else
				{
					tempstruct.Description=temp_var;
				}
				temp_var=ado.m_pRecordset->GetCollect(_T("T3-4AO_OPERATION"));
				if (temp_var.vt==VT_NULL)
				{
					tempstruct.Description=_T("");
				} 
				else
				{
					tempstruct.Operation=temp_var;
				}
				m_VecregisterData.push_back(tempstruct);
				m_recordcount++;
				ado.m_pRecordset->MoveNext();

			}
			}
			else if (m_modelno==PM_T36CT)
			{
			}




			
		}
		ado.CloseRecordset();
		ado.CloseConn();
    }
	else
    {
    }


	CString temp;
	m_Datapages=(m_recordcount/ROWS)+1;
	temp.Format(_T("Product Name"));
	GetDlgItem(IDC_PRODUCTNAME)->SetWindowText(temp);
	
	GetDlgItem(IDC_PRODUCTNAME_T)->SetWindowText(GetProductName(product_register_value[7]));
	temp.Format(_T("%d/%d"),m_curPage,m_Datapages);
	GetDlgItem(IDC_PAGES)->SetWindowText(temp);

}
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();
}
Exemplo n.º 9
0
//
/// Retrieves the product name this module is associated with.
/// String version. [VH 2005-04-03]
//
tstring TModuleVersionInfo::GetProductName(uint lang)
  {LPCTSTR v = _T(""); E = GetProductName(v, lang); return v;}
void CBacnetOutput::OnNMClickListOutput(NMHDR *pNMHDR, LRESULT *pResult)
{
	 
	LPNMITEMACTIVATE pNMItemActivate = reinterpret_cast<LPNMITEMACTIVATE>(pNMHDR);
	// TODO: Add your control notification handler code here
	long lRow,lCol;
	m_output_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_output_list.ScreenToClient(&point);
	LVHITTESTINFO lvinfo;
	lvinfo.pt=point;
	lvinfo.flags=LVHT_ABOVE;
	int nItem=m_output_list.SubItemHitTest(&lvinfo);



	if((nItem!=-1) && (nItem < BAC_OUTPUT_ITEM_COUNT))
	{
		output_list_line = nItem;
		if((m_Output_data.at(output_list_line).sub_id !=0) &&
			//(m_Output_data.at(output_list_line).sub_number !=0) &&
			(m_Output_data.at(output_list_line).sub_product !=0))
		{
			unsigned char temp_pid = m_Output_data.at(output_list_line).sub_product;
			if((temp_pid == PM_T3PT10) ||
				(temp_pid == PM_T3IOA) ||
				(temp_pid == PM_T332AI) ||
				(temp_pid == PM_T38AI16O) ||
				(temp_pid == PM_T38I13O) ||
				(temp_pid == PM_T34AO) ||
				(temp_pid == PM_T36CT) ||
				(temp_pid == PM_T322AI) ||
				(temp_pid == PM_T38AI8AO6DO))
			{
				m_output_item_info.ShowWindow(true);
				CString temp_name;
				temp_name = GetProductName(m_Output_data.at(output_list_line).sub_product);
				CString show_info;
				CString temp_id;
				CString temp_number;
				temp_id.Format(_T(" Sub ID: %u        "),(unsigned char)m_Output_data.at(output_list_line).sub_id);
				temp_number.Format(_T("Output%d"),(unsigned char)m_Output_data.at(output_list_line).sub_number+1);
				show_info = _T("Module:") + temp_name +_T("        ") + temp_id + temp_number;
				m_output_item_info.SetWindowTextW(show_info);

			}	
			else
			{
				m_output_item_info.ShowWindow(false);
			}
		}
		else
		{
			m_output_item_info.ShowWindow(false);
		}
	}

	lRow = lvinfo.iItem;
	lCol = lvinfo.iSubItem;

	if(lRow>= OUTPUT_LIMITE_ITEM_COUNT)
		return;

	if(lRow>m_output_list.GetItemCount()) //如果点击区超过最大行号,则点击是无效的
		return;
	if(lRow<0)
		return;

	CString New_CString;
	CString temp_task_info;
	CString temp1;
	CStringArray temparray;

	if(lCol == OUTPUT_VALUE)
	{
		if(m_Output_data.at(lRow).auto_manual == BAC_AUTO)	//If it is auto mode, disable to change the value.
		{
			m_output_list.Set_Edit(false);
			return;
		}

		if(m_Output_data.at(lRow).digital_analog != BAC_UNITS_DIGITAL)
			return;



		memcpy_s(&m_temp_output_data[lRow],sizeof(Str_out_point),&m_Output_data.at(lRow),sizeof(Str_out_point));





		if((m_Output_data.at(lRow).range < 23) &&(m_Output_data.at(lRow).range !=0))
			temp1 = Digital_Units_Array[m_Output_data.at(lRow).range];
		else if((m_Output_data.at(lRow).range >=23) && (m_Output_data.at(lRow).range <= 30))
		{
			if(receive_customer_unit)
				temp1 = temp_unit_no_index[m_Output_data.at(lRow).range - 23];
			else
			{
				m_output_list.Set_Edit(false);
				return;
			}
		}
		else
			return;


		//if(m_Output_data.at(lRow).range > 11)
		//	temp1 = Digital_Units_Array[m_Output_data.at(lRow).range - 11];//11 is the sizeof the array
		//else
		//	temp1 = Digital_Units_Array[m_Output_data.at(lRow).range];
		SplitCStringA(temparray,temp1,_T("/"));
		if(m_Output_data.at(lRow).control == 0)
		{
			m_Output_data.at(lRow).control = 1;
			m_output_list.SetItemText(lRow,OUTPUT_VALUE,temparray.GetAt(1));
			New_CString = temparray.GetAt(1);
		}
		else
		{
			m_Output_data.at(lRow).control = 0;
			m_output_list.SetItemText(lRow,OUTPUT_VALUE,temparray.GetAt(0));
			New_CString = temparray.GetAt(0);
		}
	}
	else if(lCol == OUTPUT_AUTO_MANUAL)
	{
		memcpy_s(&m_temp_output_data[lRow],sizeof(Str_out_point),&m_Output_data.at(lRow),sizeof(Str_out_point));
		if(m_Output_data.at(lRow).auto_manual == 0)
		{
			m_Output_data.at(lRow).auto_manual = 1;
			m_output_list.SetItemText(lRow,OUTPUT_AUTO_MANUAL,_T("Manual"));
			//m_output_list.SetCellEnabled(lRow,OUTPUT_VALUE,TRUE);
			New_CString = _T("Manual");
		}
		else
		{
			m_Output_data.at(lRow).auto_manual = 0;
			m_output_list.SetItemText(lRow,OUTPUT_AUTO_MANUAL,_T("Auto"));
			//m_output_list.SetCellEnabled(lRow,OUTPUT_VALUE,FALSE);
			New_CString = _T("Auto");
		}
	}
	else if(lCol == OUTPUT_RANGE)
	{



			//CString temp_cs = m_output_list.GetItemText(Changed_Item,Changed_SubItem);
			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_Output_data.at(lRow).digital_analog == BAC_UNITS_ANALOG)
			{
				bac_ranges_type = OUTPUT_RANGE_ANALOG_TYPE;
				if(m_Output_data.at(lRow).range > (sizeof(Output_Analog_Units_Array) / sizeof(Output_Analog_Units_Array[0])))
				{
					m_Output_data.at(lRow).range = 0;
					bac_range_number_choose = 0;
				}
			}
			else
			{
				bac_ranges_type = OUTPUT_RANGE_DIGITAL_TYPE;
				if(m_Output_data.at(lRow).range > 30)
				{
					m_Output_data.at(lRow).range = 0;
					bac_range_number_choose = 0;
				}
			}


			//if(temp_cs.CompareNoCase(Units_Type[UNITS_TYPE_ANALOG])==0)
			//{
				initial_dialog = 3;
				bac_range_number_choose = m_Output_data.at(lRow).range;
				//bac_ranges_type = OUTPUT_RANGE_ANALOG_TYPE;
				dlg.DoModal();
				if(range_cancel)
				{
					PostMessage(WM_REFRESH_BAC_OUTPUT_LIST,lRow,REFRESH_ON_ITEM);//这里调用 刷新线程重新刷新会方便一点;
					return ;
				}
				if(bac_range_number_choose == 0)	//如果选择的是 unused 就认为是analog 的unused;这样 能显示对应的value;
				{
					m_Output_data.at(lRow).digital_analog =  BAC_UNITS_ANALOG;
					bac_ranges_type = OUTPUT_RANGE_ANALOG_TYPE;
				}

				if(bac_ranges_type == OUTPUT_RANGE_ANALOG_TYPE)
				{
					m_Output_data.at(lRow).digital_analog =  BAC_UNITS_ANALOG;
					m_Output_data.at(lRow).range =  bac_range_number_choose;
					m_output_list.SetItemText(lRow,OUTPUT_UNITE,Output_Analog_Units_Show[bac_range_number_choose]);		
					m_output_list.SetItemText(lRow,OUTPUT_RANGE,OutPut_List_Analog_Range[bac_range_number_choose]);	

					//m_output_list.SetItemText(lRow,OUTPUT_0_PERSENT,_T("0"));
					//m_output_list.SetCellEnabled(lRow,OUTPUT_0_PERSENT,1);
					//m_output_list.SetItemText(lRow,OUTPUT_100_PERSENT,_T("10"));
					//m_output_list.SetCellEnabled(lRow,OUTPUT_100_PERSENT,1);
				 
#if 0
					CString cstemp_value;
					float temp_float_value;
					temp_float_value = m_Output_data.at(Changed_Item).value / 1000;
					cstemp_value.Format(_T("%.2f"),temp_float_value);
					m_output_list.SetItemText(Changed_Item,OUTPUT_VALUE,cstemp_value);	
#endif
					CString cstemp_value;
					cstemp_value.Format(_T("%d"),m_Output_data.at(lRow).value);
					m_output_list.SetItemText(lRow,OUTPUT_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_Output_data.at(lRow).digital_analog =  BAC_UNITS_DIGITAL;
					m_Output_data.at(lRow).range =  bac_range_number_choose;

					//m_output_list.SetItemText(lRow,OUTPUT_0_PERSENT,_T(""));
					//m_output_list.SetCellEnabled(lRow,OUTPUT_0_PERSENT,0);
					//m_output_list.SetItemText(lRow,OUTPUT_100_PERSENT,_T(""));
					//m_output_list.SetCellEnabled(lRow,OUTPUT_100_PERSENT,0);



					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_Output_data.at(lRow).control == 1)
					{
						if((temparray.GetSize()==2)&&(!temparray.GetAt(1).IsEmpty()))
						{
							m_output_list.SetItemText(lRow,OUTPUT_VALUE,temparray.GetAt(1));
						}
					}
					else
					{
						if((temparray.GetSize()==2)&&(!temparray.GetAt(0).IsEmpty()))
						{
							m_output_list.SetItemText(lRow,OUTPUT_VALUE,temparray.GetAt(0));
						}	
					}
					m_output_list.SetItemText(lRow,OUTPUT_RANGE,temp1);
					m_output_list.SetItemText(lRow,OUTPUT_UNITE,_T(""));//如果是数字单位 Unit 要清空;
				}
			
	}
	else
	{
		return;
	}

		//return;



	m_output_list.Set_Edit(false);

	int cmp_ret = memcmp(&m_temp_output_data[lRow],&m_Output_data.at(lRow),sizeof(Str_out_point));
	if(cmp_ret!=0)
	{
		m_output_list.SetItemBkColor(lRow,lCol,LIST_ITEM_CHANGED_BKCOLOR);
		temp_task_info.Format(_T("Write Output List Item%d .Changed to \"%s\" "),lRow + 1,New_CString);
		Post_Write_Message(g_bac_instance,WRITEOUTPUT_T3000,lRow,lRow,sizeof(Str_out_point),m_output_dlg_hwnd,temp_task_info,lRow,lCol);
	}


	*pResult = 0;
}
LRESULT CBacnetOutput::Fresh_Output_List(WPARAM wParam,LPARAM lParam)
{
     
	int Fresh_Item;
	int isFreshOne = (int)lParam;

	int digital_special_output_count = 0;
	int analog_special_output_count = 0;
	if(bacnet_device_type == BIG_MINIPANEL)
	{
		digital_special_output_count = BIG_MINIPANEL_OUT_D;
		analog_special_output_count = BIG_MINIPANEL_OUT_A;
	}
	else if(bacnet_device_type == SMALL_MINIPANEL)
	{
		digital_special_output_count = SMALL_MINIPANEL_OUT_D;
		analog_special_output_count = SMALL_MINIPANEL_OUT_A;
	}
	else if(bacnet_device_type == TINY_MINIPANEL)
	{
		digital_special_output_count = TINY_MINIPANEL_OUT_D;
		analog_special_output_count = TINY_MINIPANEL_OUT_A;
	}
	else if(bacnet_device_type == T38AI8AO6DO)
	{
		digital_special_output_count = T38AI8AO6DO_OUT_D;
		analog_special_output_count = T38AI8AO6DO_OUT_A;
	}
	else if(bacnet_device_type == PID_T322AI)
	{
		digital_special_output_count = T322AI_OUT_D;
		analog_special_output_count = T322AI_OUT_A;
	}
	//if(pFrame->m_product.at(selected_product_index).product_class_id == T38AI8AO6DO)
	if((bacnet_device_type == T38AI8AO6DO) ||
		(bacnet_device_type == PID_T322AI))
	{
		OUTPUT_LIMITE_ITEM_COUNT = digital_special_output_count + analog_special_output_count;
	}
	else
	{
		OUTPUT_LIMITE_ITEM_COUNT = BAC_OUTPUT_ITEM_COUNT;
	}

	bool temp_need_show_external = false;
	for (int z= 0 ;z < (int)m_Output_data.size();z++)
	{
		if(z>= OUTPUT_LIMITE_ITEM_COUNT)
			break;
		if((m_Output_data.at(z).sub_id !=0) &&
			(m_Output_data.at(z).sub_product !=0))
		{
			temp_need_show_external = true;
			break;
		}

	}
	if(show_output_external != temp_need_show_external)
	{
		show_output_external = temp_need_show_external;
		if(temp_need_show_external)
		{
			CRect temp_rect;
			temp_rect = Output_rect;
			temp_rect.right = 1150;
			temp_rect.top = temp_rect.top + 24;
			m_output_list.MoveWindow(temp_rect);
			m_output_list.SetColumnWidth(OUTPUT_EXTERNAL,60);
			m_output_list.SetColumnWidth(OUTPUT_PRODUCT,80);
			m_output_list.SetColumnWidth(OUTPUT_EXT_NUMBER,80);
		}
		else
		{
			CRect temp_rect;
			temp_rect = Output_rect;
			temp_rect.right = 950;
			temp_rect.top = temp_rect.top + 24;
			m_output_list.MoveWindow(temp_rect);

			m_output_list.SetColumnWidth(OUTPUT_EXTERNAL,0);
			m_output_list.SetColumnWidth(OUTPUT_PRODUCT,0);
			m_output_list.SetColumnWidth(OUTPUT_EXT_NUMBER,0);
		}
	}


	if(isFreshOne == REFRESH_ON_ITEM)
	{
		Fresh_Item = (int)wParam;
	}
	else
	{
		if(m_output_list.IsDataNewer((char *)&m_Output_data.at(0),sizeof(Str_out_point) * BAC_OUTPUT_ITEM_COUNT))
		{
			//避免list 刷新时闪烁;在没有数据变动的情况下不刷新List;
			m_output_list.SetListData((char *)&m_Output_data.at(0),sizeof(Str_out_point) * BAC_OUTPUT_ITEM_COUNT);
		}
		else
		{
			return 0;
		}
	}


	CString temp1;
	//int Fresh_Item;
	//int isFreshOne = (int)lParam;
	//if(isFreshOne == REFRESH_ON_ITEM)
	//{
	//	Fresh_Item = (int)wParam;
	//}
	for (int i=0;i<(int)m_Output_data.size();i++)
	{
		if(isFreshOne)
		{
			i = Fresh_Item;
		}

		if(i>=output_item_limit_count)
			break;

		if(i>= OUTPUT_LIMITE_ITEM_COUNT)
		{
			for (int a=0;a<OUTPUT_COL_NUMBER; a++)
			{
				m_output_list.SetItemText(i,a,_T(""));
			}
			continue;
		}
		CString temp_item,temp_value,temp_cal,temp_filter,temp_status,temp_lable;
		CString temp_des;
		CString temp_units;

		MultiByteToWideChar( CP_ACP, 0, (char *)m_Output_data.at(i).description, (int)strlen((char *)m_Output_data.at(i).description)+1, 
			temp_des.GetBuffer(MAX_PATH), MAX_PATH );
		temp_des.ReleaseBuffer();
		temp_item.Format(_T("OUT%d"),i+1);
		m_output_list.SetItemText(i,OUTPUT_NUM,temp_item);
		m_output_list.SetItemText(i,OUTPUT_FULL_LABLE,temp_des);

		m_output_list.SetCellEnabled(i,OUTPUT_HW_SWITCH,0);


		//int digital_special_output_count = 0;
		//int analog_special_output_count = 0;

		m_output_list.SetItemText(i,OUTPUT_HW_SWITCH,_T(""));
		//这样加实在是情非得已,老毛非得加一堆条件,还要smart;
		if((bacnet_device_type == BIG_MINIPANEL) || ((bacnet_device_type == SMALL_MINIPANEL)) || (bacnet_device_type == TINY_MINIPANEL) || 
			(bacnet_device_type == T38AI8AO6DO) || (bacnet_device_type == PID_T322AI) )
		{
			//if(bacnet_device_type == BIG_MINIPANEL)
			//{
			//	digital_special_output_count = BIG_MINIPANEL_OUT_D;
			//	analog_special_output_count = BIG_MINIPANEL_OUT_A;
			//}
			//else if(bacnet_device_type == SMALL_MINIPANEL)
			//{
			//	digital_special_output_count = SMALL_MINIPANEL_OUT_D;
			//	analog_special_output_count = SMALL_MINIPANEL_OUT_A;
			//}
			//else if(bacnet_device_type == TINY_MINIPANEL)
			//{
			//	digital_special_output_count = TINY_MINIPANEL_OUT_D;
			//	analog_special_output_count = TINY_MINIPANEL_OUT_A;
			//}
			//else if(bacnet_device_type == T38AI8AO6DO)
			//{
			//	digital_special_output_count = T38AI8AO6DO_OUT_D;
			//	analog_special_output_count = T38AI8AO6DO_OUT_A;
			//}

			if(i < (digital_special_output_count +analog_special_output_count) )
			{
				if(m_Output_data.at(i).hw_switch_status == HW_SW_OFF)
				{
					m_output_list.SetItemText(i,OUTPUT_HW_SWITCH,_T("MAN-OFF"));		
					m_output_list.SetCellEnabled(i,OUTPUT_AUTO_MANUAL,0);

					m_output_list.SetItemTextColor(i,-1,RGB(255,0,0),0);
				}
				else if(m_Output_data.at(i).hw_switch_status == HW_SW_HAND)
				{
					m_output_list.SetItemText(i,OUTPUT_HW_SWITCH,_T("MAN-ON"));
					m_output_list.SetCellEnabled(i,OUTPUT_AUTO_MANUAL,0);

					m_output_list.SetItemTextColor(i,-1,RGB(255,0,0),0);
				}
				else
				{
					m_output_list.SetItemTextColor(i,-1,RGB(0,0,0),0);

					//if((i%2)==0)	//恢复前景和 背景 颜色;
					//	m_output_list.SetItemBkColor(i,-1,LIST_ITEM_DEFAULT_BKCOLOR,0);
					//else
					//	m_output_list.SetItemBkColor(i,-1,LIST_ITEM_DEFAULT_BKCOLOR_GRAY,0);

					m_output_list.SetItemText(i,OUTPUT_HW_SWITCH,_T("AUTO"));
					m_output_list.SetCellEnabled(i,OUTPUT_AUTO_MANUAL,1);
					if(m_Output_data.at(i).auto_manual==0)	//In output table if it is auto ,the value can't be edit by user
					{
						m_output_list.SetItemText(i,OUTPUT_AUTO_MANUAL,_T("Auto"));
						//m_output_list.SetCellEnabled(i,OUTPUT_VALUE,0);
					}
					else
					{
						m_output_list.SetItemText(i,OUTPUT_AUTO_MANUAL,_T("Manual"));
						//m_output_list.SetCellEnabled(i,OUTPUT_VALUE,1);
					}
				}
			}
			else
			{
				m_output_list.SetItemTextColor(i,-1,RGB(0,0,0),0);
				m_output_list.SetItemText(i,OUTPUT_HW_SWITCH,_T("AUTO"));
				m_output_list.SetCellEnabled(i,OUTPUT_AUTO_MANUAL,1);
				if(m_Output_data.at(i).auto_manual==0)	//In output table if it is auto ,the value can't be edit by user
				{
					m_output_list.SetItemText(i,OUTPUT_AUTO_MANUAL,_T("Auto"));
					//m_output_list.SetCellEnabled(i,OUTPUT_VALUE,0);
				}
				else
				{
					m_Output_data.at(i).auto_manual = 1;
					m_output_list.SetItemText(i,OUTPUT_AUTO_MANUAL,_T("Manual"));
					//m_output_list.SetCellEnabled(i,OUTPUT_VALUE,1);
				}
			}
		}
		else
		{
			m_output_list.SetCellEnabled(i,OUTPUT_AUTO_MANUAL,1);
			if(m_Output_data.at(i).auto_manual==0)	//In output table if it is auto ,the value can't be edit by user
			{
				m_output_list.SetItemText(i,OUTPUT_AUTO_MANUAL,_T("Auto"));
				//m_output_list.SetCellEnabled(i,OUTPUT_VALUE,0);
			}
			else
			{
				m_Output_data.at(i).auto_manual = 1;
				m_output_list.SetItemText(i,OUTPUT_AUTO_MANUAL,_T("Manual"));
				//m_output_list.SetCellEnabled(i,OUTPUT_VALUE,1);
			}
		}




			m_output_list.SetCellEnabled(i,OUTPUT_UNITE,0);
		if(m_Output_data.at(i).digital_analog == BAC_UNITS_ANALOG)
		{
			//m_output_list.SetCellEnabled(i,OUTPUT_0_PERSENT,1);
			//m_output_list.SetCellEnabled(i,OUTPUT_100_PERSENT,1);

			if(m_Output_data.at(i).range == 0)
				m_output_list.SetItemText(i,OUTPUT_RANGE,_T("Unused"));
			else if(m_Output_data.at(i).range < (sizeof(OutPut_List_Analog_Range)/sizeof(OutPut_List_Analog_Range[0])))
				m_output_list.SetItemText(i,OUTPUT_RANGE,OutPut_List_Analog_Range[m_Output_data.at(i).range]);
			else
				m_output_list.SetItemText(i,OUTPUT_RANGE,_T("Out of range"));

			if(m_Output_data.at(i).range < (sizeof(OutPut_List_Analog_Units)/sizeof(OutPut_List_Analog_Units[0])))
				m_output_list.SetItemText(i,OUTPUT_UNITE,OutPut_List_Analog_Units[m_Output_data.at(i).range]);
			else
				m_output_list.SetItemText(i,OUTPUT_UNITE,_T("Unused"));

			CString temp_low,temp_high;
			temp_low.Format(_T("%d"),0);
			temp_high.Format(_T("%d"),0);


			CString temp_value;
			temp_value.Format(_T("%.2f"),((float)m_Output_data.at(i).value) / 1000);
			m_output_list.SetItemText(i,OUTPUT_VALUE,temp_value);
#if 0
			CString cstemp_value;
			float temp_float_value;
			temp_float_value = ((float)m_Output_data.at(i).value) / 1000;
			cstemp_value.Format(_T("%.2f"),temp_float_value);
			m_output_list.SetItemText(i,OUTPUT_VALUE,cstemp_value);
#endif
			//m_output_list.SetItemText(i,OUTPUT_0_PERSENT,temp_low);
			//m_output_list.SetItemText(i,OUTPUT_100_PERSENT,temp_high);
		}
		else if(m_Output_data.at(i).digital_analog == BAC_UNITS_DIGITAL)
		{
			//m_output_list.SetCellEnabled(i,OUTPUT_0_PERSENT,0);
			//m_output_list.SetCellEnabled(i,OUTPUT_100_PERSENT,0);
			//m_output_list.SetItemText(i,OUTPUT_0_PERSENT,_T(""));
			//m_output_list.SetItemText(i,OUTPUT_100_PERSENT,_T(""));
			/*m_output_list.SetItemText(i,OUTPUT_RANGE,Digital_Units_Array[m_Output_data.at(i).range]);*/
			m_output_list.SetItemText(i,OUTPUT_UNITE,_T(""));

			if(m_Output_data.at(i).range == 0)
			{
				CString temp_value2;
				temp_value2.Format(_T("%.2f"),((float)m_Output_data.at(i).value) / 1000);
				m_output_list.SetItemText(i,OUTPUT_VALUE,temp_value2);

				m_output_list.SetItemText(i,OUTPUT_RANGE,Digital_Units_Array[0]);
			}
			else if(m_Output_data.at(i).range<=22)
				m_output_list.SetItemText(i,OUTPUT_RANGE,Digital_Units_Array[m_Output_data.at(i).range]);
			else if((m_Output_data.at(i).range >= 23) && (m_Output_data.at(i).range <= 30))
			{
				if(receive_customer_unit)
					m_output_list.SetItemText(i,OUTPUT_RANGE,temp_unit_no_index[m_Output_data.at(i).range - 23]);
				else
					m_output_list.SetItemText(i,OUTPUT_RANGE,Digital_Units_Array[0]);
			}
			else
				m_output_list.SetItemText(i,OUTPUT_RANGE,Digital_Units_Array[0]);
#if 0
			if(m_Output_data.at(i).range>=12)
				m_output_list.SetItemText(i,OUTPUT_RANGE,Digital_Units_Array[m_Output_data.at(i).range -11]);
			else
				m_output_list.SetItemText(i,OUTPUT_RANGE,Digital_Units_Array[m_Output_data.at(i).range]);
#endif
			if((m_Output_data.at(i).range>30) || (m_Output_data.at(i).range == 0))
			{
				//m_output_list.SetItemText(i,OUTPUT_UNITE,Digital_Units_Array[0]);
			}
			else
			{
				
				CStringArray temparray;

				if((m_Output_data.at(i).range < 23) &&(m_Output_data.at(i).range !=0))
					temp1 = Digital_Units_Array[m_Output_data.at(i).range];
				else if((m_Output_data.at(i).range >=23) && (m_Output_data.at(i).range <= 30))
				{
					if(receive_customer_unit)
						temp1 = temp_unit_no_index[m_Output_data.at(i).range - 23];
				}
				else
				{
					temp1.Empty();
					m_output_list.SetItemText(i,OUTPUT_VALUE,_T(""));
				}

				SplitCStringA(temparray,temp1,_T("/"));
				if((temparray.GetSize()==2))
				{
					if(m_Output_data.at(i).control == 0)
						m_output_list.SetItemText(i,OUTPUT_VALUE,temparray.GetAt(0));
					else
						m_output_list.SetItemText(i,OUTPUT_VALUE,temparray.GetAt(1));
				}
			}
		}


			CString main_sub_panel;

#pragma region External info
		if((m_Output_data.at(i).sub_id !=0) &&
			//(m_Input_data.at(input_list_line).sub_number !=0) &&
			(m_Output_data.at(i).sub_product !=0))
		{
			unsigned char temp_pid = m_Output_data.at(i).sub_product;
			if((temp_pid == PM_T3PT10) ||
				(temp_pid == PM_T3IOA) ||
				(temp_pid == PM_T332AI) ||
				(temp_pid == PM_T38AI16O) ||
				(temp_pid == PM_T38I13O) ||
				(temp_pid == PM_T34AO) ||
				(temp_pid == PM_T322AI) ||
				(temp_pid == PM_T38AI8AO6DO) ||
				(temp_pid == PM_T36CT))
			{
				CString temp_name;
				temp_name = GetProductName(m_Output_data.at(i).sub_product);
				CString show_info;
				CString temp_id;
				CString temp_number;

				bitset<8> mytest((unsigned char)m_Output_data.at(i).sub_number);
				bool highest_bit;
				highest_bit = mytest.test(7);

				unsigned char temp_sub_number = 0;
				mytest = mytest.set(7,0);
				temp_sub_number = (unsigned char)mytest.to_ulong();


				if(highest_bit)
					temp_number.Format(_T("AO%d"),temp_sub_number + 1);
				else
					temp_number.Format(_T("DO%d"),temp_sub_number + 1);




				
				m_output_list.SetItemText(i,OUTPUT_EXTERNAL,_T("External"));
				m_output_list.SetItemTextColor(i,OUTPUT_EXTERNAL,RGB(0,0,255),FALSE);
				m_output_list.SetItemText(i,OUTPUT_PRODUCT,temp_name);
				m_output_list.SetItemText(i,OUTPUT_EXT_NUMBER,temp_number);

				main_sub_panel.Format(_T("%d-%d"),(unsigned char)Station_NUM,(unsigned char)m_Output_data.at(i).sub_id);
				m_output_list.SetItemText(i,OUTPUT_PANEL,main_sub_panel);
				//temp_id.Format(_T(" Sub ID: %u        "),(unsigned char)m_Input_data.at(input_list_line).sub_id);
				//temp_number.Format(_T("Input%d"),(unsigned char)m_Input_data.at(input_list_line).sub_number + 1);
				//show_info = _T("Module:") + temp_name +_T("        ") + temp_id + temp_number;
				//m_input_item_info.SetWindowTextW(show_info);

			}	
			else
			{
				main_sub_panel.Format(_T("%d"),(unsigned char)Station_NUM);
				m_output_list.SetItemText(i,OUTPUT_PANEL,main_sub_panel);
			}

		}
		else
		{
			main_sub_panel.Format(_T("%d"),(unsigned char)Station_NUM);
			m_output_list.SetItemText(i,OUTPUT_PANEL,main_sub_panel);
		}

#pragma endregion External info




		if(m_Output_data.at(i).decom==0)
			temp_status.Format(Output_Decom_Array[0]);
		else if(m_Output_data.at(i).decom==1)
			temp_status.Format(Output_Decom_Array[1]);
		else
			temp_status.Empty();
		m_output_list.SetItemText(i,OUTPUT_DECOM,temp_status);

		CString temp_pwm_period;
		temp_pwm_period.Format(_T("%u"),(unsigned char)m_Output_data.at(i).pwm_period);
		m_output_list.SetItemText(i,OUTPUT_PWM_PERIOD,temp_pwm_period);

		CString temp_des2;
		MultiByteToWideChar( CP_ACP, 0, (char *)m_Output_data.at(i).label, (int)strlen((char *)m_Output_data.at(i).label)+1, 
			temp_des2.GetBuffer(MAX_PATH), MAX_PATH );
		temp_des2.ReleaseBuffer();
		m_output_list.SetItemText(i,OUTPUT_LABLE,temp_des2);
		if(isFreshOne)
		{
			break;
		}
	}
	copy_data_to_ptrpanel(TYPE_OUTPUT);
	Invalidate();
	return 0;
}
LRESULT CBacnetTstat::Fresh_Tstat_List(WPARAM wParam,LPARAM lParam)
{
	int Fresh_Item;
	int isFreshOne = (int)lParam;
	if(isFreshOne == REFRESH_ON_ITEM)
	{
		Fresh_Item = (int)wParam;
	}
	else
	{
		if(m_tstat_list.IsDataNewer((char *)&m_Tstat_data.at(0),sizeof(Str_TstatInfo_point) * BAC_TSTAT_COUNT))
		{
			//避免list 刷新时闪烁;在没有数据变动的情况下不刷新List;
			m_tstat_list.SetListData((char *)&m_Tstat_data.at(0),sizeof(Str_TstatInfo_point) * BAC_TSTAT_COUNT);
		}
		else
		{
			return 0;
		}
	}

	for (int i=0;i<(int)m_Tstat_data.size();i++)
	{
		if(isFreshOne)
		{
			i = Fresh_Item;
		}

		if((m_Tstat_data.at(i).product_model == 255) || ((m_Tstat_data.at(i).tst_db.id == 0)))
		{
			for (int x = 1; x < TSTAT_COL_NUMBER ; x++)
			{
				m_tstat_list.SetItemText(i,x,_T(""));
			}
			continue;
		}

		CString ModuleName;	CString Address;CString RoomTemperature;CString SerialNumber;
		CString OCCUPIED;	CString Cool_Setpoint;	CString Heat_Setpoint;	CString Room_Setpoint;
		CString CS_TSTAT_MODE;	CString CS_COOL_HEAT; CString CS_OUTPUT_STAGE;
		ModuleName = GetProductName(m_Tstat_data.at(i).product_model);
		m_tstat_list.SetItemText(i,TSTAT_PRODUCT_MODEL_TYPE,ModuleName);
		
		Address.Format(_T("%d"),m_Tstat_data.at(i).tst_db.id);
		m_tstat_list.SetItemText(i,TSTAT_ADDRESS,Address);
		SerialNumber.Format(_T("%d"),m_Tstat_data.at(i).tst_db.sn);
		m_tstat_list.SetItemText(i,TSTAT_SERIAL_NUM,SerialNumber);	

		if((m_Tstat_data.at(i).occupied == 0) || (m_Tstat_data.at(i).occupied == 1))
		{
			OCCUPIED =  CString_Occupied[m_Tstat_data.at(i).occupied];
		}
		else
		{
			OCCUPIED = CString_Occupied[2];
		}
		m_tstat_list.SetItemText(i,TSTAT_OCCUPIED,OCCUPIED);

		Cool_Setpoint.Format(_T("%.1f"),((float)m_Tstat_data.at(i).cool_setpoint)/10);
		m_tstat_list.SetItemText(i,TSTAT_COOL_SETPOINT,Cool_Setpoint);	
		Heat_Setpoint.Format(_T("%.1f"),((float)m_Tstat_data.at(i).heat_setpoint)/10);
		m_tstat_list.SetItemText(i,TSTAT_HEAT_SETPOINT,Heat_Setpoint);	
		Room_Setpoint.Format(_T("%.1f"),((float)m_Tstat_data.at(i).setpoint)/10);
		m_tstat_list.SetItemText(i,TSTAT_ROOM_SETPOINT,Room_Setpoint);
		RoomTemperature.Format(_T("%.1f"),((float)m_Tstat_data.at(i).temperature)/10);
		m_tstat_list.SetItemText(i,TSTAT_ROOM_TEM,RoomTemperature);
		CS_TSTAT_MODE.Format(_T("%d"),m_Tstat_data.at(i).mode);
		m_tstat_list.SetItemText(i,TSTAT_MODE,CS_TSTAT_MODE);
		
		if((m_Tstat_data.at(i).cool_heat_mode == 1) || (m_Tstat_data.at(i).cool_heat_mode == 2))
		{
			CS_COOL_HEAT = CString_Cool_Heat[m_Tstat_data.at(i).cool_heat_mode];
		}
		else if(m_Tstat_data.at(i).cool_heat_mode == 0)
		{
			CS_COOL_HEAT = CString_Cool_Heat[0];
		}
		else
		{
			CS_COOL_HEAT = CString_Cool_Heat[3];
		}
		m_tstat_list.SetItemText(i,TSTAT_COOL_HEAT_MODE,CS_COOL_HEAT);
		CS_OUTPUT_STAGE.Format(_T("%d"),m_Tstat_data.at(i).output_state);
		m_tstat_list.SetItemText(i,TSTAT_OUTPUT_STATE,CS_OUTPUT_STAGE);


		CString Night_Heat_Db;
		CString Night_Cool_Db;
		CString Night_Heat_Sp;
		CString Night_Cool_Sp;
		Night_Heat_Db.Format(_T("%d"),m_Tstat_data.at(i).night_heat_db);
		Night_Cool_Db.Format(_T("%d"),m_Tstat_data.at(i).night_cool_db);
		Night_Heat_Sp.Format(_T("%d"),m_Tstat_data.at(i).night_heat_sp);
		Night_Cool_Sp.Format(_T("%d"),m_Tstat_data.at(i).night_cool_sp);
		m_tstat_list.SetItemText(i,TSTAT_NIGHT_HEAT_DB,Night_Heat_Db);
		m_tstat_list.SetItemText(i,TSTAT_NIGHT_COOL_DB,Night_Cool_Db);
		m_tstat_list.SetItemText(i,TSTAT_NIGHT_HEAT_SP,Night_Heat_Sp);
		m_tstat_list.SetItemText(i,TSTAT_NIGHT_COOL_SP,Night_Cool_Sp);

	}
	return 1;
}