用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

转载于:https://www.cnblogs.com/lbnnbs/p/4784837.html

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值