串口发十六进制数据char($FD)的问题 发送的十六进制的数据char($FD)的后面如果加上其他字符如“ab”,发送就会出现乱码:“?b”,这该怎么解决?往串口发送十六进制的数据该如何操作? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 我估计数据没有错你显示一下收到数据的长度,看看是不是3还有,比如你把收到的数据,保存在变量s中你showmessage(s[2]);看看那 #$FD + 'a' 被系统看成了一个WideChar(多字节字符)~~存储是正确的,就是显示不对,不知道你使用在什么地方?~~ 这是个发给下位机的命令,我用啸锋工作室出的“串口调试助手V2.1”选择用十六进制发"fd4142"(即char($FD)+ab)命令给下位机下位机就能返回数据。但是我用如下语句mscomm1.output:=char($FD)+'ab',结果单步运行时查看output的值为:“?b”,不知道实际发的是什么数据,反正下位机没有了反映。怎么回事? 参考:http://218.56.11.178:8020/web/technology.aspx -》串口通讯应用程序的解决方案 下载基地有例子和相关控件tubropower/spcomm to kuangning:前段时间才装的宽带,没事就溜来灌灌~~ mscomm1.output:=char($FD)+'ab'实际是发送FD6162三个十六进制数。发送FD4142可以使用mscomm1.output:=char($FD)+char($41)+char($42);说明:a的ACSII码是$61,这样应该明白了吧! 我后面的ab是我为了说明简单简化的,其实有好长一串:如FD**13588888888FE要把他按十六进制发出去给下位机该怎么写简便总不能mscomm1.output:=char($FD)+char($41)+char($43)+char($45)+char($48)+char($48)+char($48)+……………………;这么长把,而且这个命令里的数字是变的。 var OutputBytes:array of Byte;SetLength(OutputBytes,n);OutputBytes[0]:=$FD;OutputBytes[1]:=$41;...MSComm1.Output:=OutputBytes; 其实你原来使用的方法是对的,mscomm1.output:=char($FD)+'ab'将从串口发送$FD$61$62,至于调试时显示乘'?b'是因为系统将$FD$61看成一个全角字符!(我调试串口程序时,一般使用一条串口通讯线将com1和com2连接起来,使用串口调试程序可以观察我的程序发出何种数据。你也可以这样做。) WH_CALLWNDPROC为什么拦截不到WM_CLOSE 关于数据库连接 各位请问:以下代码的意思啊? Dephi读取Excel文件的问题!(急!在线等!50分!) 我想把一组UNICODE的字符串。想把它转化成汉字,我如何是好呀,谁会立即给分%%%就是十六进制转化为字符串 delphi使用USB的问题 怎么无法启动NT4.0上的DCOM服务,应用服务器放在本地是可以执行的 请帮忙修改代码 辛苦了 哪个API能得到当前连接到本机的其它机器的列表? 如何扫描局域网共享资源(及进行密码验证)-只想知道原理无其它意思 如何在Tedit中自定双精度型字段变量的显示格式? 如何填充不规则区域??
你显示一下收到数据的长度,看看是不是3
还有,比如你把收到的数据,保存在变量s中
你showmessage(s[2]);看看那
存储是正确的,就是显示不对,不知道你使用在什么地方?~~
我用啸锋工作室出的“串口调试助手V2.1”选择用十六进制发"fd4142"(即char($FD)+ab)命令给下位机下位机就能返回数据。
但是我用如下语句mscomm1.output:=char($FD)+'ab',
结果单步运行时查看output的值为:“?b”,不知道实际发的是什么数据,反正下位机没有了反映。怎么回事?
发送FD4142可以使用mscomm1.output:=char($FD)+char($41)+char($42);
说明:a的ACSII码是$61,这样应该明白了吧!
总不能mscomm1.output:=char($FD)+char($41)+char($43)+char($45)+char($48)+char($48)+char($48)+……………………;
这么长把,而且这个命令里的数字是变的。
OutputBytes:array of Byte;SetLength(OutputBytes,n);
OutputBytes[0]:=$FD;
OutputBytes[1]:=$41;
...
MSComm1.Output:=OutputBytes;
(我调试串口程序时,一般使用一条串口通讯线将com1和com2连接起来,使用串口调试程序可以观察我的程序发出何种数据。你也可以这样做。)