首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > VB >

串口通信的有关问题

2012-01-15 
串口通信的问题本人初学者,,下面是一段16进制接收的函数。。Private Sub hexReceive()On Error GoTo ErrDim

串口通信的问题
本人初学者,,下面是一段16进制接收的函数。。
Private Sub hexReceive()
 
On Error GoTo Err
  Dim receiveArr() As Byte
  Dim receiveData As String ' 数据暂存
  Dim Counter As Integer ' 接收数据个数计数器
  Dim i As Integer ' 循环变量
  Dim z As Integer
  If (MSComm.InBufferCount > 0) Then
  Counter = MSComm.InBufferCount ' 读取接收数据个数
  receiveData = "" ' 清缓冲

  receiveArr = MSComm.Input ' 数据放入数组

  For i = 0 To (Counter - 1) Step 1 ' 数据格式处理

  If (receiveArr(i) < 16) Then
  receiveData = receiveData & "0" + Hex(receiveArr(i)) & Space(1) ' 小于16,前面加0
  Else
  receiveData = receiveData & Hex(receiveArr(i)) & Space(1) ' 加空格显示
  End If

  Next i
  Txtreceive.Text = Txtreceive.Text + receiveData & vbCrLf
  End If
  text1.text=receiveArr(32)

我用串口调试软件发了:FF 01 3C 00 00 00 00 00 00 00 00 00 00 00 00 00 00 01 01 01 00 01 00 00 00 00 00 01 00 01 00 02 01 数据,,text1.text显示的内容是空,但是Txtreceive.Text接收到的是完整数据
请大家帮忙看下~

[解决办法]
LZ:你想Text1.text = receiveArr(32),实际做不到,可以将接收形成的16进制字符的最后2字符转换为10进制值西安市于Text1.texT
对你的接收代码放MSComm1_OnComm中,修改部分代码,

VB code
Option Explicit    Dim receiveData As String                                                      ' 数据暂存Private Sub Form_Load()    MSComm1.InputMode = comInputModeBinary    MSComm1.RThreshold = 1    MSComm1.PortOpen = True    Txtreceive = ""    Text1 = ""End SubPrivate Sub MSComm1_OnComm()    Dim receiveArr() As Byte    Dim i As Integer                                                                ' 循环变量    Dim z As Integer    Select Case MSComm1.CommEvent        Case 2            receiveArr = MSComm1.Input                                                  ' 数据放入数组            For i = 0 To UBound(receiveArr)                                        ' 数据格式处理                If Len(Hex(receiveArr(i))) = 1 Then                    receiveData = receiveData & "0" + Hex(receiveArr(i)) '& Space(1)    ' 小于16,前面加0                Else                    receiveData = receiveData & Hex(receiveArr(i)) '& Space(1)          ' 加空格显示                End If            Next i            Text1.Text = Val("&H" & Mid(receiveData, 65, 2))            Txtreceive.Text = receiveData & vbCrLf    End SelectEnd Sub 

热点排行