zoukankan      html  css  js  c++  java
  • 用VB6.0实现串口通信

    Function ConvertHexChr(str As String) As Byte
    Dim t As String
    If Len(str) <= 2 Then       ' 1位或2位
        t = "&H" & str
        If IsNumeric(t) Then
            ConvertHexChr = CByte(t)
        Else
            ConvertHexChr = 0          'byte 类型取值范围为 0-255 ,不能为-1
        End If
    Else
        ConvertHexChr = 0              'byte 类型取值范围为 0-255 ,不能为-1
    End If
    End Function

    Function strHexToByteArray(strText As String, bytByte() As Byte) As Integer
    '二位16进制转化为 BYTE 数组
    Dim j As String
    Dim i As Long
    Dim o As Long

    j = Replace(strText, "", "")       '去掉空格
    i = Len(j)

    If i And 1 = 1 Then         '奇数
        j = Left(j, i - 1) & "0" & Mid(j, i, 1)     '少一位,最后一个数补一位
        i = i + 1
    End If
    strHexToByteArray = i / 2
    ReDim bytByte(strHexToByteArray)

    For o = 1 To strHexToByteArray
        bytByte(o) = ConvertHexChr(Mid(j, o * 2 - 1, 2))
    Next o

    End Function

    字串转为 byte 数组后,再发送.

    ----------------------------------------------------------
    '这个例子中,是读到指定的字符就结束,否则就循环
    Private Sub Form_Load ()
       ' 保存输入子串的缓冲区
       Dim Instring As String
       ' 使用 COM1。
       MSComm1.CommPort = 1
       ' 9600 波特,无奇偶校验,8 位数据,一个停止位。
       MSComm1.Settings = "9600,N,8,1"
       ' 当输入占用时,
       ' 告诉控件读入整个缓冲区。
       MSComm1.InputLen = 0
       ' 打开端口。
       MSComm1.PortOpen = True
       ' 将 attention 命令送到调制解调器。
       MSComm1.Output = "ATV1Q0" & Chr$(13) ' 确保
       ' 调制解调器以"OK"响应。
       ' 等待数据返回到串行端口。
       Do
          DoEvents
       Buffer$ = Buffer$ & MSComm1.Input
       Loop Until InStr(Buffer$, "OK" & vbCRLF)
       ' 从串行端口读 "OK" 响应。

       ' 关闭串行端口。
       MSComm1.PortOpen = False
    End Sub

    ---------------------------------------------------------
    '这个例子中,当 com 口有事件发生时去操作
    OnComm 事件示例
    下例说明如何处理通讯错误和事件。可以在相关的 Case 语句之后插入代码来处理特定的错误或事件。

    Private Sub MSComm_OnComm ()
       Select Case MSComm1.CommEvent
       ' Handle each event or error by placing
       ' code below each case statement

    ' 错误
          Case comEventBreak   ' 收到 Break。
           Case comEventCDTO   ' CD (RLSD) 超时。
          Case comEventCTSTO   ' CTS Timeout。
          Case comEventDSRTO   ' DSR Timeout。
          Case comEventFrame   ' Framing Error
          Case comEventOverrun   '数据丢失。
          Case comEventRxOver'接收缓冲区溢出。
          Case comEventRxParity' Parity 错误。
          Case comEventTxFull   '传输缓冲区已满。
          Case comEventDCB   '获取 DCB] 时意外错误

       ' 事件
          Case comEvCD   ' CD 线状态变化。
          Case comEvCTS   ' CTS 线状态变化。
          Case comEvDSR   ' DSR 线状态变化。
          Case comEvRing   ' Ring Indicator 变化。
          Case comEvReceive   ' 收到 RThreshold # of
    chars.
          Case comEvSend   ' 传输缓冲区有 Sthreshold 个字符                     '
                         '
          Case comEvEof   ' 输入数据流中发现 EOF 字符
                         '
       End Select
    End Sub

  • 相关阅读:
    Siege 3.0 正式版发布,压力测试工具
    Pomm 1.1.2 发布,专为 PG 设计的 ORM 框架
    Whonix 0.5.6 发布,匿名通用操作系统
    国内开源 java cms,Jspxcms 2.0 发布
    EZNamespaceExtensions.Net v2013增加对上下文菜单、缩略图、图标、属性表的支持
    GNU Guile 2.0.9 发布,Scheme 实现
    jdao 1.0.4 发布 轻量级的orm工具包
    OpenSearchServer 1.4 RC4 发布
    Percona Server for MySQL 5.5.3030.2
    Samba 4.0.5 发布
  • 原文地址:https://www.cnblogs.com/lbnnbs/p/4784837.html
Copyright © 2011-2022 走看看