計算機(jī)二級VB基礎(chǔ):VB串口的基礎(chǔ)知識

字號:

一個簡單接收的程序
    Dim inputstr As String
    Private Sub Command1_Click()
    If MSComm1.PortOpen = False Then
    MSComm1.PortOpen = True
    End If
    End Sub
    Private Sub Command2_Click()
    List1.Clear
    End Sub
    Private Sub Form_Load()
    Timer1.Enabled = False
    With MSComm1
    .CommPort = 1 ’使用COM2
    .Settings = "9600,N,8,1" ’設(shè)置通信口參數(shù)
    .InBufferSize = 40
    ’設(shè)置MSComm1接收緩沖區(qū)為40字節(jié)
    .OutBufferSize = 2
    ’設(shè)置MSComm1發(fā)送緩沖區(qū)為2字節(jié)
    ’.InputMode = comInputModeBinary
    ’設(shè)置接收數(shù)據(jù)模式為二進(jìn)制形式
    .InputLen = 1
    ’設(shè)置Input 一次從接收緩沖讀取字節(jié)數(shù)為1
    .SThreshold = 1
    ’設(shè)置Output 一次從發(fā)送緩沖讀取字節(jié)數(shù)為1
    InBufferCount = 0 ’清除接收緩沖區(qū)
    .OutBufferCount = 0 ’清除發(fā)送緩沖區(qū)
    .RThreshold = 1
    ’設(shè)置接收一個字節(jié)產(chǎn)生OnComm事件
    If .PortOpen = False Then
    ’判斷通信口是否打開
    .PortOpen = True ’打開通信口
    If Err Then ’錯誤處理
    MsgBox "串口通信無效"
    Exit Sub
    End If
    End If
    End With
    End Sub
    Private Sub MSComm1_OnComm()
    Select Case MSComm1.CommEvent
     Case comEvReceive
    av = MSComm1.Input
    Text2.Text = Text2.Text & " " & Asc(av)
    ’Timer1.Enabled = True
    If av >= 0 And av <= 9 Then
    inputstr = inputstr & av
    Else
    Text3.Text = Text3.Text & inputstr & "*"
    Text1.Text = Asc(av)
    If Len(inputstr) <> 14 Then
    response = MsgBox("條碼格式不正確,取消格式限制請按“是”,否則按“否”,退出程序按“取消”數(shù)據(jù)長度=" & Len(inputstr) & " " & inputstr, vbYesNoCancel, "條碼格式")
    List1.AddItem (inputstr)
    inputstr = ""
    MSComm1.InBufferCount = 0
    Else
    List1.AddItem (inputstr)
    inputstr = ""
    MSComm1.InBufferCount = 0
    End If
    End If
    End Select
    End Sub
    Private Sub Timer1_Timer()
    Dim inputstr
    Timer1.Enabled = False
    inputstr = MSComm1.Input
    List1.AddItem (inputstr)
    End Sub