我在软件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);
}
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货