读书人

VB 串口编程 有关问题一大堆

发布时间: 2012-03-27 13:44:24 作者: rapoo

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



[解决办法]

VB code
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事件来收难免会丢失数据量,特别在波特率可以任意调整时或下位机有多串数据相应且很慢时。

读书人网 >VB

热点推荐