编写了一个串口通信的工具,为什么发送AT命令后,回显的AT命令在我的Edit Box上显示的都是数字,这是为何?是因为从接收缓冲区接受VARIANT型数据后转换成CString型的数据,这个过程出错了吗?过程就在以上代码中
void CPortCommDlg::OnOnCommMscomm()
{
UpdateData(FALSE);
switch(m_COM.GetCommEvent())
{
case 1: //GetCommEvent()==1: event of comEvSend
{
OnSend();
}
break;
case 2: //GetCommEvent()==2: event of comEvReceive
{
VARIANT variant_inp;
COleSafeArray safearray_inp;
LONG len,k,mReCount=0;
BYTE rxdata[2048];
CString strtemp;
variant_inp=m_COM.GetInput(); //read the Receive buffer & delete
safearray_inp=variant_inp;
len=safearray_inp.GetOneDimSize();
for(k=0;k <len;k++)
{
safearray_inp.GetElement(&k,rxdata+k); //rxdata指向radata[0]
}
for(k=0;k <len;k++)
{
mReCount++;
BYTE bt=*(char*)(rxdata+k);
strtemp.Format("%02x",bt);
m_Output+=strtemp;
}
if((mReCount>0)&&((mReCount%16)==0))
{
strtemp.Format("\r\n");
m_Output+=strtemp;
}
UpdateData(FALSE);
if((mReCount/16)>=13)
{
m_ScrollBarControl.SendMessage(EM_SCROLL,SB_LINEDOWN,0);
}
this->UpdateData(FALSE);
}
break;
case 1009: //GetCommEvent()==1009: error of comEventRxParity
{
::AfxMessageBox("奇偶校验错误,请跳楼!");
}
break;
default:
break;
}
this->UpdateData(FALSE);
}
void CPortCommDlg::OnOnCommMscomm()
{
UpdateData(FALSE);
switch(m_COM.GetCommEvent())
{
case 1: //GetCommEvent()==1: event of comEvSend
{
OnSend();
}
break;
case 2: //GetCommEvent()==2: event of comEvReceive
{
VARIANT variant_inp;
COleSafeArray safearray_inp;
LONG len,k,mReCount=0;
BYTE rxdata[2048];
CString strtemp;
variant_inp=m_COM.GetInput(); //read the Receive buffer & delete
safearray_inp=variant_inp;
len=safearray_inp.GetOneDimSize();
for(k=0;k <len;k++)
{
safearray_inp.GetElement(&k,rxdata+k); //rxdata指向radata[0]
}
for(k=0;k <len;k++)
{
mReCount++;
BYTE bt=*(char*)(rxdata+k);
strtemp.Format("%02x",bt);
m_Output+=strtemp;
}
if((mReCount>0)&&((mReCount%16)==0))
{
strtemp.Format("\r\n");
m_Output+=strtemp;
}
UpdateData(FALSE);
if((mReCount/16)>=13)
{
m_ScrollBarControl.SendMessage(EM_SCROLL,SB_LINEDOWN,0);
}
this->UpdateData(FALSE);
}
break;
case 1009: //GetCommEvent()==1009: error of comEventRxParity
{
::AfxMessageBox("奇偶校验错误,请跳楼!");
}
break;
default:
break;
}
this->UpdateData(FALSE);
}
解决方案 »
- Custom Control怎么用?
- 关于在对话框界面内 直接给任意控件设置不同风格字体的疑问
- 为何到DoModal()时程序提示Debug Assertion Failed
- 请问在嵌入到对话框里的clistview控件如何使用啊???
- xml保存问题--菜鸟困惑
- 能在局域网内在机器开机时能够获得他的ip地址等一些信息吗?
- 出现这类错误从哪下手找毛病?
- 在线程函数里调用recvfrom的时候为什么没有阻塞住,而是继续执行下去?
- 请问用ATL OLE DB访问ACCESS数据库,制作成安装盘,在没装VC的电脑上安装,出现无法访问数据库是什么原因?
- wininet API 登录网站失败
- 对话框访问视图
- 请教:代码太长了怎么办?
你把过程转换为数字了(十六进制)...............
AT指令集,建议用ASCII显示("%c")或者用16进制显示("%02X")。
结果返回F4
这是什么原因?
为什么会显示"F4"啊啊