下面是我做的一个测试程序:
成都创新互联成立于2013年,先为安定等服务建站,安定等地企业,进行企业商务咨询服务。为安定企业网站制作PC+手机+微官网三网同步一站式服务解决您的所有建站问题。
'TextReceive =
' 初始化程序:主要完成对串口的设置,包括选择串口、设置波特率、设置数据格式、打开串口等。
' 注意:在程序开始之前,必须清空发送和接收缓冲区,以免出错。
Private Sub Form_Load()
MSComm1.Settings = "9600,n,8,1" ' 设置波特率和发送字符格式
MSComm1.CommPort = 1 ' 设置通讯串口
MSComm1.InputLen = 0 ' 设置或返回一次从接收缓冲区中读取字节数,0表示一次读取所有数据
MSComm1.InBufferSize = 2 ' 设置接收缓冲区2Byte
MSComm1.InBufferCount = 0
MSComm1.OutBufferSize = 2 ' 设置发送缓冲区2Byte
MSComm1.OutBufferCount = 0
MSComm1.RThreshold = 1 ' 每个字符到接收缓冲区都触发接收事件
MSComm1.SThreshold = 1
MSComm1.InputMode = comInputModeBinary '采用二进制传输
MSComm1.PortOpen = True ' 打开串口
End Sub
Private Sub Command1_Click()
Dim number As Integer
Dim outbyte(0) As Byte
number = Val(170)
outbyte(0) = CByte(number)
MSComm1.Output = outbyte
Label4 = outbyte(0)
Print outbyte(0)
End Sub
VB与单片机通信。如 VB 为上位机,单片机为下位机。
通讯必须以协议形式,不然分不清 是第一字节数据,还是第几个字节数据。
通讯协议可以 自己设计 如
指令码 - (多机通讯需要加从机 号)- 数据1 - 数据n - 校验码 - 结束码。
接收数据 首先 判断 指令码, 接着开始接收 数据,
校验码 是为了判断 接收的数据 与 发送的数据 是否一致,不一致 就是数据受到干扰错误。
结束码 表示 数据 发送 或者 接收 完毕,等待接收 下一组数据,这样就不会出错。
串口传送数据实质是传送ASCII码,如是8位二进制数据,其ASCII码值(10进制)为0-255。用二进制表示为00000000 - 11111111
16进制表示为 00 - FF
传送数据大于255,则用16位二进制(即2字节ASCII码组成)。10进制范围-32768到+32767。
如有小数,则应由上下位机约定,不进行串送。
串口通信中数制转换必须相当重视。
以上是以二进制方式收发数据。
也可直接以ASCII码的文本方式发送数据,而字节量大。