码迷,mamicode.com
首页 > 其他好文 > 详细

用VB6.0实现串口通信

时间:2015-09-06 12:25:01      阅读:150      评论:0      收藏: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

用VB6.0实现串口通信

标签:

原文地址:http://www.cnblogs.com/lbnnbs/p/4784837.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!