串口通讯中的数据转换
我看了很多的提问,有点糊涂了
我知道在通讯的时候是使用二进制传输的,我现在做一个通讯应答程序,我要向单片机发一条指令,指令格式是十六进制的,我应该将指令代码存入一个二进制的数组里,然后发送吗?
在接收单片机返回数据时,怎么把接收的二进制数转换为十六进制的或者是十进制的呢?
望高手赐教
[解决办法]
数据进制不过是数据的一种表现形势,你看着不一样,但对计算机来说是一样的。二进制和16进制和其他进制都是一样的嘛。
[解决办法]
指令格式完全可是十六进制文本方式的,而由代码来2字节2字节的转成BYTE数据类型.
http://community.csdn.net/Expert/topic/5383/5383313.xml?temp=7.020205E-02
上述网址有简化的串口调试精灵代码,你可参考串口通讯中的数据转换.
[解决办法]
programart_life说的对,数据发送没有格式要求,反正计算机会给你转化为AscII的,接受数据时候,可以设mscomm控件的inputmode属性,具体查一下msdn吧,剩下的就是格式转换,调用相应的函数就可以了
[解决办法]
串口是字符设备,串口通信实质是发送字符的ASCII码值。在DOS下,字符的ASCII码值为0-127,。对屏幕可显示的字符直接用字符表示,对VB下屏幕不可显示的字符可用CHR()函数来表示。在WINDOWS下,串口通信ASCII码扩展为0-255,而128-255字符屏幕不可显示,就涉及用16进制字符形式表示0-255字符,就带来进制转换问题。
10进制的0-255,用16进制表示为00-FF
VB中可用HEX函数将10进制数转换为16进制数的字符形式,
如 A = HEX(255)
TEXT1 = A
在文本框内显示为FF
在发送时需转换为BYTE数据,用:
&HFF表示。前&H表示16进制数,后FF是255的16进制数的字符形式