我在软件InitDlg中设置时钟3;
等时钟3到后进行 设备初始化ConectDevice();
在设备初始化函数中,发送串口命令;
在串口响应函数中 把串口接收的数据放到成员变量m_strCARXData,用MessageBox显示出来m_strCARXData为接收的数据不为空
设备初始化函数中,发送串口命令后等待300ms,读取变量m_strCARXData,用MessageBox显示m_strCARXData的值却为空,???再次调用MessageBox显示m_strCARXData的值却为正常的数据???为什么第一次调用MessageBox m_strCARXData的值却为空?第二次调用MessageBoxm_strCARXData的值却为正常的数据?
已经用过UPDataDate也没作用代码:
 //串口响应
 void CEEICalculateDlg::OnMscommCa() 
 {
 //省略
 if(m_ComCA.GetCommEvent()==2) //值为  2  表示接收缓冲区内有字符   
 {
 //省略
 //从串口读取数据到变量 m_strCARXData中
 if (m_strCARXData.Find(_T("OK"))!=-1)//接受到的数据格式为(X为数据):OK00,XXX.XX
 {
 m_strRealBr=m_strCARXData;
 m_strRealBr=m_strRealBr.Right(6);//取 从右边取5位亮度数据
 m_dCARXData = atof(m_strRealBr);
 //MessageBox(m_strCARXData);//在这里m_strCARXData可以接受到数据 
 }
 else
 {
 //MessageBox("没有接受到CA数据OK");
 m_strRealBr=m_strCARXData;//当接受到错误数据时显示出来
 }
 }
 }
 
 //设置SetTimer(3,1000,Null)
 OnTimer( UINT nIDEVENT)
 {
 if(nIDEVENT==3)
 {
 Kill(3);
 ConectDevice();//初始化设备
 }
 }
 
 ConectDevice();//初始化设备
 {
 if (OpenComCA())
 {
 
 if (SendData(1,_T("COM,1"));==1)//发送串口命令 打开Remote on
 {
 Sleep(300);//等待200ms 
 //+++串口数据,
 
 UpdateData(FALSE);
 if (m_strCARXData.Find(_T("OK"))!=-1)//需要CA210测试
 {
 m_strCAStat=_T("已连接");
 ReCode=1;
 }
 MessageBox(m_strCARXData); //第一次调用MessageBox 为空?
 MessageBox(m_strCARXData); //第二次调用MessageBox正常数据?
 }
 
 } 
 SetDlgItemText(IDC_STATIC_CA_STATE,m_strCAStat);
 }