java串口发送16进制数据_MFC串口通信发送16进制数据的方法
本文实例为大家分享了MFC串口通信发送16进制数据的具体代码,供大家参考,具体内容如下
MFC串口通信会使用m_mscomm控件。
发送数据一般是在edit control 里输入自己想发送的内容,然后点击send button。
如果直接发送字符串内容,通过下面代码(send button内写入)即可:
UpdateData(true); //读取编辑框内容
m_mscomm.put_Output(COleVariant(m_EditSend));
m_EditSend.Empty(); //发送后清空输入框
UpdateData(false); //更新编辑框内容
但是这样发送的是字符串内容,而串口通信常常需要发送16进制数据,接收端直接按HEX格式接收就可以了,不用再进行字符串转HEX。因此最好在发送端就将字符串转成16进制数据发送,下面代码即可实现该功能:
(1)send button
CByteArray HexDataBuf;
int i = 0;
BYTE SendBuf[128]={0};
BYTE GetData[256]={0};
int SendLen = 0;
int GetLen = 0;
UpdateData(TRUE);//获取编辑框内容
if(m_EditSend.IsEmpty())
{
AfxMessageBox(_T("发送数据为空!"));
return;
}
HexDataBuf.RemoveAll(); //清空数组
GetLen = m_EditSend.GetLength();
for(i=0; i
{
GetData[i] = (BYTE)m_EditSend.GetBuffer()[i];
}
StringtoHex(GetData, GetLen, SendBuf, &SendLen);//将字符串转化为字节数据
HexDataBuf.SetSize(SendLen); //设置数组大小为帧长度
for(i=0; i
{
HexDataBuf.SetAt(i,SendBuf[i]);
}
m_mscomm.put_Output(COleVariant(HexDataBuf)); //发送十六进制数据
UpdateData(false); //更新编辑框内容
(2)stringtoHex函数
void StringtoHex(BYTE *GB, int glen, BYTE* SB, int* slen)
{
int i; //遍历输入的字符串
int a = 0;
char temp; //接收字符,用来判断是否为空格,若是则跳过
char temp1,temp2; //接收一个字节的两个字符 例如EB,则temp1='E',temp2 = 'B'
*slen = 0; //输出的16进制字符串长度
for(i=0;i
{
temp = GB[i];
if(temp==' ')
continue;
if(a == 0)
temp1 = GB[i];
if(a == 1)
temp2 = GB[i];
a++;
if(a==2)
{
a = 0;
temp1 = temp1 - '0';
if (temp1>10)
temp1 = temp1 -7;
temp2 = temp2 - '0';
if (temp2>10)
temp2 = temp2 -7;
SB[*slen] = temp1*16+temp2;
(*slen)++;
}
}
}
通过以上代码即可发送16进制数据,如下图是用串口调试工具的仿真结果,发送数据字节之间是否存在空格对结果没有影响。
另外,在数据发送中用到了CByteArray类,这是一种支持字节的动态数组,详情可在MSDN上查询。
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。
java串口发送16进制数据_MFC串口通信发送16进制数据的方法相关推荐
- Qt5学习笔记之串口助手四:增加16进制/ASCII切换、周期发送
目录 1. 概述 2. 16进制/ASCII发送 2.1 功能实现 2.2 界面修改 3. 接收框显示发送内容 3.1 以16进制/ASCII显示 3.1.1 界面修改 3.1.2 功能实现 3.2 ...
- [计算机网络]java 实现 udp 通信发送 16 进制报文
最近有个项目,需要根据卡号生成韦根信号,然后发送给韦根转换器,再让韦根转换器把我发送的内容解析成韦根信号 用的韦根转换器是这家公司的: 韦根26转网络维根转TCP/网络转韦根26TCP转维根 根据人家 ...
- 串口通信——发送和接收数据(8位和16位数据之间的转换)
1. 实验目的 1.发送两个字节数据,就是16位的数据,每一次发送8位,发送两次,这里要进行数据的拆分,如发送一个0XFF56,接收得到的也是FF56(16进制显示); 2.接收两个字节的数据(这里通 ...
- java串口发送十六进制数,本文实例为大家分享了Java实现串口通信的具体代码,供大家参考,具体内容如下1.介绍使用Java实现的串口通信程序,支持十六进制数据的发送与接收。 源码:...
本文实例为大家分享了Java实现串口通信的具体代码,供大家参考,具体内容如下 1.介绍 使用Java实现的串口通信程序,支持十六进制数据的发送与接收. 源码:SerialPortDemo 效果图如下: ...
- 关于signed char类型的16进制数据转成带符号的10进制问题
文章目录 前言 signed char类型的16进制数据如何转成带符号的10进制数? 总结 前言 在最近的学习中,遇到了一个疑惑,三组16进制的数据分别为0xFF,0xF3,0x2A;这三组16进制的 ...
- Python串口通信发送浮点型数据
发送步骤 导入pyserial库--import serial 用于操作串口(详情见serial简介) 初始化串口--serial.Serial portx = "/dev/ttyUSB0& ...
- pythonprint字节按照16进制输出_对python以16进制打印字节数组的方法详解
对python以16进制打印字节数组的方法详解 一.问题描述 如果直接用print打印bytes的话,有时候会直接显示ascii对应的字符,看起来很蛋疼. 二.运行效果 上面一行是直接用print打印 ...
- 51单片机stc15w204s串口通信发数据接收数据串口中断发中文字符串完美运行软件延时发送一字节函数全注释
这里写自定义目录标题 KEIL自己先调试通了然后再说下面的事 51单片机stc15w204s串口通信直接上文件 KEIL自己先调试通了然后再说下面的自己看看就可 KEIL自己先调试通了然后再说下面的事 ...
- 5.IDA-文本搜索、二进制搜索(16进制字节序列)、替换16进制
1.文本搜索 IDA文本搜索相当于对反汇编列表窗口进行子字符串搜索.通过Search▶Text(热键:ALT+T)命令启动文本搜索 选择Find all occurences(查找所有结果),IDA将 ...
最新文章
- 计算机存储盘教程,计算机操作系统 --- 磁盘存储器
- python爬取百度贴吧中的所有邮箱_使用 Python 编写多线程爬虫抓取百度贴吧邮箱与手机号...
- LOJ#2302 整数
- Gin实际编写中间件
- 类似pyinstaller_Python 打包工具对比,Nuitka vs Pyinstaller
- [渝粤教育] 中国海洋大学 求职OMG 参考 资料
- BZOJ3251: 树上三角形
- Crtmpserver编译
- python对日志处理的封装
- matlab绘制爱心
- 中国的粮食储备,多的远超你想象,抢粮的人纯粹是傻冒
- 今日头条搜索应该怎么做?头条搜索SEO排名和信息流排名课程
- 数据结构与算法入门教程(C语言实现版)
- 模糊图像的倒谱matlab,基于倒谱分析方法的离焦模糊图像特征鉴别
- org.jasypt.exceptions.EncryptionOperationNotPossibleException: null
- 微信小程序实现锚点跳转
- 服务器系统升级介绍,服务器操作系统升级方案
- R语言实战-读书笔记 (第8章 回归)
- 电阻式压力传感器变送器技术选型及接线图解
- 气象站可以用计算机分析什么数据,自动气象站监控软件窗口显示信息分析与应用...