首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > VB >

关于用vb编写串口通信程序的一些简单有关问题

2012-02-13 
关于用vb编写串口通信程序的一些简单问题.希望大家帮帮忙,帮我解答一下这些小问题,~~谢谢~~问题1:发送字符

关于用vb编写串口通信程序的一些简单问题.
希望大家帮帮忙,帮我解答一下这些小问题,~~谢谢~~

问题1:发送字符时把字符写给发送缓冲区,发送缓冲区是不是要把字符转换成其对应的ASCII码(二进制)?然后在发送是吗?

问题2:发送十六进制或其他进制数时,一般:
Dim dat(1) AS Byte
dat(0)=&HFF
dat(1)=&H2
MSComm1.output=dat
为什么要这样发?能不能像字符一样直接把十进制数或其他进制数发给发送缓冲区??
例如:
MSComm1.output=&H2
这样行吗?

问题3:接收数据时选择二进制接受:MSComm1.Inputmode=cominputmodebinary和选择以字符接收:
MSComm1.Inputmode=cominputmodetext两者有什么区别??发送过来的不都是二进制数吗??
两者存储在接受缓冲区的数据类型有区别吗??
到底发送缓冲区和接收缓冲区是怎样处理数据的????
(就是对字符和不同的数据都做了什么样的处理)

[解决办法]
1、你把字符写入缓冲区后,就不用你管了,那是Windows驱动的问题了。计算机处理数据都是二进制的,所以必然是二进制。
2、以二进制方式发送数据是以字节为单位的,也就是数据可以是:0~255的,你当然可以表达为十进制,前提是不能炒过255。发送单个的数字也是可以的。你可以把232串口的2、3脚短接后,使用串口调试器测试一下,把2、3脚短接的特点是发什么就收什么,只要发送和接收一致,那就OK。
3、MSComm接收数据的格式有二进制和文本方式,两者本质上没有什么不同,在缓冲区中都是二进制数据。表现出来得就是编码的表示方法不同而已。文本用字符,二进制用字符的ASCII码。
建议楼主看看这本书:
第一部分
第二部分
[解决办法]
看看这个
[解决办法]
串口是个字符设备,但在传递时是按字符的ASCII值,以高低电平按规定的时间间隔(取决于波特率)来进行传递的.当数据位是8位时字符的ASCII值为0-255,当数据位是7位时字符的ASCII值为0-127.
所谓16进制其实质就是10进制,在硬件上能对应高低电平的必然是2进制.MSComm 控件的Input 属性及InputMode 属性探究
[解决办法]
Dim hk As Variant
hk = MSComm1.Input
Text1.Text = Text1.Text & Hex(hk(0)) & " "
你在第二行的时候hk已经确定是一个数组了,既然是数组了,你要连接里面的数据就得用hk(X)来确定连接里面的某个数据,不能直接用hk。

热点排行