VB_RS232 以二进制方式收发数据

来源:百度知道 编辑:UC知道 时间:2024/06/01 14:00:38
我现在需要通过VB界面向RS232收发16进制数据,收端可以正确接收从FPGA发来的数据。我把RS232收发短接如果直接从界面发数据收到的就不对。比如发12收到居然是31 32 。我希望把12当成一个字节,收到就是12。我想应该是发端程序有问题,在网上搜了一下,应该要定义变量,字节。但是试了还是不对。
MSComm1.InputMode = comInputModeBinary,希望程序能实现发什么就收什么
请高手帮忙。
上面问题基本解决,但还有点小问题
我采用二进制的inputmode,有个问题是,我只能以十进制方式发,或是发不带字母的十六进制数.因为在发送要用到 val(tex.txt)输入十进制是不会有问题,但带字母十六进制数就会有问题

不知道你是要收发些什么数据.
你不要管是什么进制的发.
rs232 是把字节变成串行传输然后又以字节接收.
也就是说,你可以看成是一个个字节的数据.
而字节是指机器的数.而不是你在屏幕上看到的数.
你所说的十进制和十六进制都是你编辑时的可视化数.
对232 都会转成2进制.简单点说就是用ascii码发的.
比如说,你在文本框里输入:1,2,3,4
或者:H01,H33 ,H0F
都是字符串而以.
而十进制的数字和字母刚好是一个字符对应一个ASCII码.
程序就可以直接把他们发出去.
而十六进制是一个数是用好几个字符组成.比如:H0A .
程序就会发出:H,0,A 三个字符的ASCII码.如果你在接收时没做出处
那么可能你就会觉得出错.
你要用十六进制表示.就不能用VAL(TEXT)来发送.
而要用另一个函数.

31 32 不正是 字符 1 2 的十六进制码 嘛?

要发送什么样的数据?看你的数据是从哪来的,是什么格式的数据.如果是二进制数据,直接读入到字节数组,如果是字符串,需要转换成字节数组在发送