在接收框中以十六进制显示

 标签: MFC  

在接收框中以十六进制显示

    这就容易多了:  在主对话框中加入一个复选接钮,IDC_CHECK_HEXDISPLAY Caption: 十六进制显示,再利用ClassWizard为其添加控制变量:m_ctrlHexDiaplay。 然后修改CSCommTestDlg::OnComm()函数:

void CSCommTestDlg::OnComm()
{
// TODO: Add your control notification handler code here
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=*(char*)(rxdata+k); //字符型
if(m_ctrlHexDisplay.GetCheck())
strtemp.Format("%02X ",bt); //将字符以十六进制方式送入临时变量strtemp存放,注意这里加入一个空隔
else
strtemp.Format("%c",bt); //将字符送入临时变量strtemp存放

m_strRXData+=strtemp; //加入接收编辑框对应字符串
}
}
UpdateData(FALSE); //更新编辑框内容
}

测试:在串口调试助手发送框中输入00 01 02 03 A1 CC等十六进制字符,并选上以十六进制发送,单击手动发送,在本程序运行后选上以十六进制显示,在串口调试助手中单击手动发送或自动发送,则在本程序的接收框中应该可以看到00 01 02 03 A1 CC了。


  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
网上找到的各种串口工具功能都不是够齐全,比如预设命令这块,很多都没有。有的有也只是一条。 该工具最多可设置15条预设命令,并且可设置自动响应发出预设命令,即当串口收到预设的数据时自动发出预设命令。 预设命令可保存,下次再启动工具时无需重新输入。且预设命令可加入备注。在命令存档文件命令行的后面用//加注释即可。注释可在鼠标停留在命令行时提示。 其次接收数据可以方便的进行十六进制、文本格式显示转换。十六进制显示时可选择是否同时显示ASCII码。转换时并不会清除当前数据,因此若接收数据已够多时转换过程会比较慢,所以接收数据过多时建议清除下。 接收数据时可选择是否显示时间,时间可选择是否精确到毫秒。时间是从电脑串口缓冲区接收到数据时的时间,与用户实际发送数据的时间会有出入,因此有时时间显示会把用户发送的一段文字分为几个时间段,属正常。 接收数据需暂停显示时,工具提供了暂停按钮,不必关掉串口连接。 发送数据可发送大段文字,并可直接发送整个文件。 串口名称列表时除了显示串口号,还同显示了串口设备名,方便用户识别。这点对于目前主要应用的USB转过来的串口识别很有帮助。 串口可选择所有电脑上支持的串口,比如编号为10以上的串口。工具对串口列表是实时更新的,新增加串口时不必重新启动工具。串口移除时会自动断开连接。 波特率方面还支持一些非标的波特率。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值