|
外接设备发送到串口的数据是16进制的,我以二进制的方式读取:
m_ComPort.SetInputMode(1);
读取后数据该怎么处理才能转换为10进制的数呢?
VARIANT variant_inp;
COleSafeArray safearray_inp;
LONG len,k;
BYTE rxdata[2048]; //设置BYTE数组
CString strtemp;
if(m_ctrlComm.GetCommEvent()==2) //事件值为2表示接收缓冲区内有字符
{
variant_inp=m_ctrlComm.GetInput(); //读缓冲区
safearray_inp=variant_inp; //VARIANT型变量转换为ColeSafeArray型变量
len=safearray_inp.GetOneDimSize(); //得到有效数据长度
for(k=0;k<len;k++)
safearray_inp.GetElement(&k,rxdata+k);//转换为BYTE型数组
我这样写的时候
safearray_inp=variant_inp; //VARIANT型变量转换为ColeSafeArray型变
程序运行的时候回在这句出现异常,我看了很多资料都是这么写的,不知道为什么,请大家帮忙看看!!
|
|