VB 串口编程 问题一大堆
好几年没编程了,好多都忘了。
问题 设置串口后,在接受字符哪里出问题,不知道什么原因
Private Sub Command2_Click()
MSComm1.CommPort = 1 '设置通信端口号为COM1
MSComm1.Settings = 19200 & "," & "n,8,1"
MSComm1.InputMode = 0 '接收文本型数据
MSComm1.PortOpen = True '打开通信端口1
End Sub
'接收字符
Private Sub Timer1_Timer()
Dim buf$
Dim shou()
Dim shou1()
Dim i
Dim j
buf = Trim(MSComm1.Input) '将缓冲区内的数据读入buf变量中
If Len(buf) <> 0 Then '判断缓冲区内是否存在数据
TextReceive.Text = TextReceive.Text + buf 'Chr(13) + Chr(10)
TextReceive.SelLength = 1 '光标设置到文本框的最后一行
TextReceive.SelStart = Len(TextReceive.Text) '光标设置到文本框的最后一行
End If
End Sub
'停止程序运行
Private Sub Cmdquit_Click()
Unload Me
End Sub
[解决办法]
Option ExplicitPrivate Sub Form_Load() MSComm1.CommPort = 1 '设置通信端口号为COM1 MSComm1.Settings = "19200,n,8,1" MSComm1.InputMode = comInputModeText '接收文本型数据 MSComm1.PortOpen = True '打开通信端口1End Sub
[解决办法]
串接收不要用timer控件,要用mscomm的触发事件。
[解决办法]
我的做法是mscomm事件来触发一个timer,这样就不会有数据丢失的问题,否则当数据量很大时,若单纯用一个mscomm事件来收难免会丢失数据量,特别在波特率可以任意调整时或下位机有多串数据相应且很慢时。