写了一个MFC程序,想把传感器的数据通过MSComm 读取出来。现在的问题是程序不出错,但是数据显示不出来。代码如下:
void CEmapDlg::OnCommMscomm1()
{
// TODO: 在此处添加消息处理程序代码
//printf("system is running here");
static unsigned int cnt = 0;
VARIANT variant_inp;
COleSafeArray safearray_inp;
long len,k;
unsigned int data[1024]={0};
byte rxdata[1024];//set byte array
CString strtemp;
if(m_mscomm.get_CommEvent()==2)//value is 2 when there is byte data in receive buffer
{
cnt++;
variant_inp = m_mscomm.get_Input();//read message from buffer
safearray_inp = variant_inp; //data change format
len = safearray_inp.GetOneDimSize();//get the valid length of data
for(k=0;k<len;k++)
{
safearray_inp.GetElement(&k,rxdata+k);//data format change to byte array
}
for(k=0;k<len;k++)//change format from array to CString
{
strtemp.Format(_T("%x"),*(rxdata+k));
m_EditReceive+=strtemp;
CString temp=_T("\r\n");
m_EditReceive+=temp;
}
}
UpdateData(FALSE);
}
调试截图
建议你先使用串口调试助手之类的工具,看看你的传感器是否有数据返回?
如果有你想要的数据返回,再来分析你提供的代码。
从你提供的代码来看,不是好的串口处理方式。建议你在网上看看使用 MSComm 的示例代码吧。
这种问题,自己要学会调试,问是问不出什么的,人家也没有你的设备,只能爱莫能助。