void CComTestDlg::OnComm()
{
// TODO: Add your control notification handler code here
VARIANT variant_inp;//定义一个VARIANT类对象
COleSafeArray safearray_inp;//定义一个COleSafeArray对象
LONG len,k;
BYTE rxdata[2048];//设置BYTE数组 AN 8—intterthat 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=*(char*)(rxdata+k);
strtemp.Format("%c",bt);//将字符送入临时变量strtemp存放
m_strRXData+=strtemp;//加入接收编辑框对应字符串
}
}
UpdateData(FALSE);//更新编辑框内容(主要是接收编辑框中的)
}
显示代码如上,请问怎样改才能让它16进制显示
strtemp.Format("%c",bt);//将字符送入临时变量strtemp存放
%c 改为%X 不就行了
strtemp.Format("%x ",bt); // 不正确那就单步看看是否运行了这步代码、。。。
朋友你解决了么?我也有相同的问题!
我在书上看的这个程序,书上还教了如何添加一个十六进制的框,勾选之后可以将它用十六进制表示,但是我试着做了之后,发下接受框什么也没有接收到,啥也不显示……就连乱码也没有