VARIANT variant_inp;
COleSafeArray safearray_inp;
LONG len,k;
BYTE rxdata[2048]; //设置BYTE数组 An 8-bit integerthat is not signed.
CString strtemp,strtemphex;
if(m_CMSCommJG.GetCommEvent()==2) //事件值为2表示接收缓冲区内有字符
{ ////////以下你可以根据自己的通信协议加入处理代码
variant_inp=m_CMSCommJG.GetInput(); //读缓冲区
safearray_inp=variant_inp; //VARIANT型变量转换为ColeSafeArray型变量
len=safearray_inp.GetOneDimSize(); //得到有效数据长度
for(k=0;k<len;k++)
safearray_inp.GetElement(&k,rxdata+k);//转换为BYTE型数组
for(k=0;k<len;k++) //将数组转换为Cstring型变量
{
BYTE bt=*(char*)(rxdata+k); //字符型
strtemp.Format("%c",bt); //将字符送入临时变量strtemp存放
strcom2+=strtemp; //加入接收编辑框对应字符串
BYTE bthex=*(char*)(rxdata+k); //字符型
strtemphex.Format("%02X ",bthex); //将字符以十六进制方式送入临时变量strtemp存放,注意这里加入一个空隔
strcom2hex+=strtemphex;
}
}
OnComm事件的过程代码,能相应OnComm事件,但是
variant_inp=m_CMSCommJG.GetInput(); //读缓冲区
safearray_inp=variant_inp; //VARIANT型变量转换为ColeSafeArray型变量
len=safearray_inp.GetOneDimSize(); //得到有效数据长度
这里的variant_inp safearray_inp 调试的时候得到的结果都是{???}len得到的长度都是0,偶尔出现过能正常显示的状态,请问是否有高手能帮我解决这个问题,QQ:309727874,在线急盼.......
输入输出都没错,用串口监控软件也能读到数据,而且m_CMSCommJG.GetCommEvent()==2这里也执行了,可是就是读不到反馈的数据,补充下,好像和电脑有关,有的可以读到有的读不到,程序的健壮性比较郁闷,但是读不到电脑上的用串口调试助手又是正常能收发读取数据