本人新学VB,现在用VB做一个串口通讯的程序,看了很多关于串口通讯的资料,基本的思路也有,可就是在设计的过程中,遇到了一些麻烦,想请教各位大虾:
    用到MSComm控件,首先端口初始化,然后打开端口,端口打开后就可以接受数据了,可如何去接受数据,如何使数据显示在相应的文本框当中,这里就不好怎么实现了,麻烦各位指点迷津或给我个相关的案例代码给我看看,麻烦了!

解决方案 »

  1.   

    接收数据有轮询和事件驱动(在OnComm事件中处理)两种方式,具体可参考:
    http://www.cndw.com/tech/program/2006051873514.asp
      

  2.   

    如果MSComm1.InputLen=0 MSComm1.Sthreshold=0
      那它是否会出发MSComm1_oncomm事件呢? 
      

  3.   

    MSComm1.InputLen = 0      '设置或返回,从接收缓冲区读取的字符数,0时(默认),读取缓冲区全部字符
    MSComm1.RThreshold = 1         '接收区的“门阀值”,0时(默认),不产生OnComm事件;
      

  4.   

    以下是使用MSComm控件的2进制接收,转换为16进制显示的代码:
    Option Explicit
        Dim strData As StringPrivate Sub Form_Load()
        Dim port As Integer
        port = 1
        MSComm1.CommPort = port                   'COM端口
        MSComm1.Settings = "9600,n,8,1"
        MSComm1.InputMode = comInputModeBinary      '采用二进制传输
        MSComm1.InBufferCount = 0   '清空接受缓冲区
        MSComm1.OutBufferCount = 0  '清空传输缓冲区
        MSComm1.RThreshold = 1      '产生MSComm事件
        MSComm1.InBufferSize = 1024
        MSComm1.PortOpen = True
    End SubPrivate Sub MSComm1_OnComm() '接收数据
        Dim BytReceived() As Byte
        Dim strBuff As String
        Select Case MSComm1.CommEvent
            Case 2
                MSComm1.InputLen = 0
                strBuff = MSComm1.Input
                BytReceived() = strBuff
                Dim i As Integer
                For i = 0 To UBound(BytReceived) '接收数据处理为16进制
                    If Len(Hex(BytReceived(i))) = 1 Then
                        strData = strData & "0" & Hex(BytReceived(i))
                    Else
                        strData = strData & Hex(BytReceived(i))
                    End If
                Next
                Text1 = strData
                '数据处理代码
        End Select
      

  5.   

    非常感谢zdingyun给我提供的代码例子!
        我还想问下,我直接转成文本数据,那我在写代码的时候应该如何处理某些情况?
      

  6.   

    Option Explicit
       Dim strData As StringPrivate Sub Form_Load()
        Dim port As Integer
        port = 1
        MSComm1.CommPort = port                   'COM端口
        MSComm1.Settings = "9600,n,8,1"
        MSComm1.InputMode = comInputModeText '按文本接收
        MSComm1.InBufferCount = 0   '清空接受缓冲区
        MSComm1.OutBufferCount = 0  '清空传输缓冲区
        MSComm1.RThreshold = 1      '产生MSComm事件
        MSComm1.InBufferSize = 1024
        MSComm1.PortOpen = True
    End SubPrivate Sub MSComm1_OnComm() '接收数据
        Select Case MSComm1.CommEvent
            Case 2
                strData = strData & MSComm1.Input
                Text1 = strData
                '数据处理代码
        End Select
    End Sub