求助:VB串行通信问题 点击:663 | 回复:1



yiyix

    
  • 精华:0帖
  • 求助:0帖
  • 帖子:1帖 | 0回
  • 年度积分:0
  • 历史总积分:6
  • 注册:2006年3月12日
发表于:2006-06-17 10:43:00
楼主
要求:用VB编写程序,采集电子数显千分表的数据,放入list1中,以备处理。
 
数显表的接口参数:波特率 4800,数据位8位,无奇偶校检,1位停止位,以ACSII 码传送数据,

可能要每隔几秒采集一次数据。数显表的专用接口线与计算机RS232(9针)连接。

  问题:用下面这个程序运行没反应或者全是0,怎么延时?怎么放数据到list中?
  
由于刚接触VB,下面这个程序是拼凑起来的,可能很离谱,希望帮忙改正。

Dim receive_data(1 To 20) As Byte
Private Sub Command1_Click()
For i = 1 To 20
List1.AddItem Val(receive_data(i))
Text1.Text = Text1.Text & Str(receive_data(i))
Next i
End Sub '把采集到的数据放入list1中

Private Sub Command2_Click()
MSComm1.PortOpen = flase
End
End Sub '结束

Private Sub MSComm1_OnComm()
Dim InBuffer As Valiant
Select Case MSComml.CommEvent
Case comEvReceive
Do Until MSComml.InBuffeiCount <> 0
Ret = DoEvents()
Loop
InBuffer = MSComml.Input
receive_data = InBuffer
End Select
End Sub

Private Sub Form_Load()
MSComm1.PortOpen = True
MSComm1.CommPort = 1
MSComm1.Settings = "4800,n,8,1"
MSComm1.InBufferSize = 40
MSComm1.InputMode = comInputModeBinary
MSComm1.InputLen = 1
MSComm1.InBufferCount = 0
End Sub



卡布基诺

  • 精华:0帖
  • 求助:0帖
  • 帖子:2帖 | 7回
  • 年度积分:0
  • 历史总积分:63
  • 注册:2005年5月20日
发表于:2006-07-13 15:04:00
1楼
参考以下串口收发程序,或许会有收获!
Private Sub Button_RECV_C_Click()
  Text_RECV.Text = ""
  Text_SEND.SetFocus
  
End Sub

Private Sub Button_SEND_C_Click()
    Text_SEND.Text = ""
    Text_SEND.SetFocus
End Sub

Private Sub Button_SEND_Click()
    Dim x As String
    If Text_SEND.Text = "" Then
      x = MsgBox("发送数据不能为空", 16)
    Exit Sub
  End If
  If Not MSComm.PortOpen Then
      MSComm.PortOpen = True
  End If
    MSComm.Output = Text_SEND.Text + Chr$(13)
    For i = 1 To 20000000
    Next
    
    
End Sub

Private Sub Form_Load()
    MSComm.CommPort = 1
    MSComm.Settings = "9600,n,8,1"
    MSComm.InputLen = 0
    MSComm.InBufferSize = 1024
    MSComm.OutBufferSize = 512
    MSComm.PortOpen = True
    MSComm.SThreshold = 0
    MSComm.RThreshold = 1
    MSComm.InBufferCount = 0
    MSComm.OutBufferCount = 0
    Text_SEND.Text = ""
    Text_RECV.Text = ""
    
End Sub

Private Sub MSComm_OnComm()
    Select Case MSComm.CommEvent
    Case comEventOverun
      Text_SEND.Text = ""
      Text_RECV.Text = ""
      Text_SEND.SetFocus
    Exit Sub
    Case comEventRxOver
      Text_SEND.Text = ""
      Text_RECV.Text = ""
      Text_SEND.SetFocus
    Exit Sub
    Case comEventTxFull
      Text_SEND.Text = ""
      Text_RECV.Text = ""
      Text_SEND.SetFocus
    Exit Sub
    Case comEvReceive
      Dim str As String
        str = MSComm.Input
        Text_RECV.Text = Text_RECV.Text + str
         End Select
End Sub

热门招聘
相关主题

官方公众号

智造工程师