串口通信中十六进制问题

nightkingchen 2005-07-12 11:43:44
在串口通信中如何把string转换成十六进制向端口发送命令?谢谢了
...全文
579 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
clong320 2005-07-19
  • 打赏
  • 举报
回复
楼主所说的STRING是十六进制形式的,还是一般并且意义上的STRING?
前者用STRTOHEX(*CH,L)转换;后者用其ASCII码值。
zhuia 2005-07-18
  • 打赏
  • 举报
回复
SendChar显示为:\x01I\x02\0\x1A很正常,因为0x01在ASCII码中不是能显示的字符。所以显示\x01代表是16进制的01。你不需要管显示什么数,你只需要关心串口另一端能否接收到正确的数据。你可以找两个串口,做一根串口交叉线联好,一个串口连接串口调试工具或用windows的超级终端,一个串口是你的程序。看看串口调试程序能否接收正确。‘I’在ACSII里面是0x49。
按照你的使用方式,在没有大于0x7F的16进制数,还能用,有大于0x7F,你就要考虑使用Byte类型或unsigned char的字符串了。
jiangban 2005-07-18
  • 打赏
  • 举报
回复
强烈要求有人指点,我碰到同样的问题!!!!

magicdu(野人) : 何谓字节串?
在串口(com port)中向端口发送的是字节串。理解这点很重要。//还是不理解
magicdu 2005-07-12
  • 打赏
  • 举报
回复
把string转换成Pchar型应该不难吧。在串口(com port)中向端口发送的是字节串。理解这点很重要。
holeen 2005-07-12
  • 打赏
  • 举报
回复
char
nightkingchen 2005-07-12
  • 打赏
  • 举报
回复
协议说明书是这样描述的
第一个字节固定为0x01;
第二个字节为命令字节;
第三个字节固定为0x02;
第四个字节为数据字节;
第五个字节固定为0x1a;
例如当要发送UTAON命令时,命令数据流如下:
0x0l,'I',0x02,1,0x1a

功能描术 命令字节 数据字节
UTA 'I' 0:关闭 1:打开此功能

请问发送的命令字节串该怎么写?
以下是我用writeFile()函数写的发送数据程序(一部分)

char SendChar[5];
SendChar[0]=0x01;
SendChar[1]='I';
SendChar[2]=0x02;
SendChar[3]=0;
SendChar[4]=0x1a;
WriteFile(hComm,SendChar,5, &lrc,NULL); // 送出数据
CloseHandle(hComm);
当我调试时,SendChar显示为:\x01I\x02\0\x1A 不知是怎么会事?请指教.
zhuia 2005-07-12
  • 打赏
  • 举报
回复
这个转换还需要看看你的串口协议是什么?
一般有字串转ASCII16进制、压缩BCD码、非压缩BCD码等等。
你需要那种?
nightkingchen 2005-07-12
  • 打赏
  • 举报
回复
命令用十六进制表示,可以吗?WriteFile()函数能不能发送十六进制?

1,317

社区成员

发帖
与我相关
我的任务
社区描述
C++ Builder 网络及通讯开发
社区管理员
  • 网络及通讯开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧