我想设计串口通讯10个数据,在上位机的VB有10文本框中显示,是下位机采集...
发布网友
发布时间:2022-09-14 20:54
我来回答
共1个回答
热心网友
时间:2024-07-19 08:39
VB 提供了通信控件MSCOMM
,文件名为MSCOMM. VBX。该控件可设置串行通信的数据发送和接收,
对串口状态及串行通信的信息格式和协议进行设置。
在通信过程中可以触发OnComm事件,在该事件过程进行数据检验处理及检错,还可以通过编程访问CommEvent
属性来了解通信的情况,进行收发数据的处理。每个通信控件对应一个串口,如果要访问多个通信口,则要设计多个通信控件。
给你个实例,或者你上网去查一下此空间用法
Sub Form1 —load ()
form1. show ′设置COM1
comm1. commport = 1 comm1. Setting = " 9600 ,o ,8 ,1" ′波特率:9600 奇校验,8位数据,1 位停止位
comm1. Inputlen = 0 ′ 读取接收缓冲区的所有字符
comm1. OutBufferSize = 512 ′设置发送缓冲区为512 字节
comm1. InBufferSize = 512 ′ 设置接收缓冲区为512 字节
comm1. SThreshold = 0 ′禁止发送事件
comm1. RThreshold = 1 ′每一个字符到接收缓冲区都触发接收事件
′设置COM2 comm2. commport = 2 comm2. Setting = "2400 ,e ,8 ,1" ′波特率:2400 偶验,8 位数据,1 位停止位 comm2. Inputlen = 0 ′ 读取接收缓冲区的所有字符 comm2. OutBufferSize = 512 ′设置发送缓冲区为512 字节 comm2. InBufferSize = 512 ′ 设置接收缓冲区为512 字节 comm2. SThreshold = 1 ′ 发送缓冲区空触发发送事件 comm2. RThreshold = 0 ′ 禁止接收事件 ′打开COM1 ,COM2 comm1. Portopen = True comm2. Portopen = True Timer1. interval = 5000 End Sub Sub Comm1 —OnComm() Dim Inbuff as string Dim i as integer ,n as integer ,t as integer Select Case Comm1. CommEven case MSCOMM—EV—RECEIVE Inbuff = Comm1. Input n = len ( Inbuff) For i = 1 to n t = Asc (Mid ( Inbuff ,i ,1) ) or &HFF print f Next i End Select End Sub Sub Comm2 —OnComm() Select Case Comm2. CommEvent Case MSCOMM—EV—SEND Print time End Select End Sub Sub Timer1—Timer () Comm2. output = Second (Now) End sub