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

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

2012-03-27 
VB 串口编程 问题一大堆好几年没编程了,好多都忘了。问题设置串口后,在接受字符哪里出问题,不知道什么原因P

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

热点排行
Bad Request.