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

  • 相关阅读:
    smtplib文字邮件的发送
    接口测试框架分析
    UnitTest框架的快速构建与运行
    Appium + Python App自动化第一个脚本
    3个必备cookie实用方法
    单元测试框架的选择
    快速构建一个完整的Selenium框架
    SSH原理与运用
    springboot 集成 spring-data-elasticsearch
    Java 集合排序
  • 原文地址:https://www.cnblogs.com/lbnnbs/p/4784837.html
Copyright © 2011-2022 走看看