想问一下,用MScomm控件如何接收16进制数?我用了下面的程序,怎么接收不到数据?
VARIANT variant_inp;
COleSafeArray safearray_inp ;
LONG len,k ;
BYTE rxdata [2048] ; //设置BYTE 数组An 8 - bit integerthat is not signed.
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 型数组
for (k=0;k<len;k++) // 将数组转换为Cstring 型变量
{
BYTE bt=*(int * ) (rxdata+k) ;
strtemp.Format ("%02x",bt);//将字符送入临时变量strtemp存放
m_display+=strtemp; //加入接收编辑框对应字符串
}
} |