void CTemDisplayDlg::OnOnCommMscomm1()
{
// TODO: Add your control notification handler code here
m_strRXData=""; //每次进入串口函数将编辑框内容清空
VARIANT variant_inp; //可以用 Variant 数据类型来替换任何数据类型,数值数据可以是任何整型或实型数
COleSafeArray safearray_inp; //定义具有任意类型的变量safearray_inp
LONG len,k; //定义长整形变量
BYTE rxdata[2048]; //设置BYTE数组
CString strtemp; //定义字符型变量
if(m_Comm.GetCommEvent()==2) //如果接收缓冲区内有字符
{
variant_inp=m_Comm.GetInput(); //读缓冲区
safearray_inp=variant_inp; //将VARIANT型变量转换为COleSafeArray型
len=safearray_inp.GetOneDimSize(); //得到有效数据长度 //一到这里就出错
for(k=0;k
safearray_inp.GetElement(&k,rxdata+k);//转换为BYTE型数组
for(k=0;k
{
BYTE bt=*(char*)(rxdata+k); //字符型
strtemp.Format("%c",bt); //将字符型送入临时变量strtemp中存放
m_strRXData+=strtemp; //加入接收编辑框对应字符串
}
m_strRXData+="\r\n";
}
UpdateData(FALSE); //更新编辑框内容
}
我是菜鸟,刚学用VisualC++编串口通信的上位机程序,想显示温度,可一到 len=safearray_inp.GetOneDimSize(); 就出错,哪位大神能帮忙看看!
跟单片机,PC机发,单片机好使,单片机发PC机显示不出来,大神有何高见啊?
数年前我先学习的MSComm串口通信,但最终放弃了,决定使用API。
若使用API,可加我为好友,一起探讨。