VB 串口接收不到数据(急!)
VB与单片机的通信运行结果Text1 , Text2 接收到“A”,Text3 却没有收到,即使多发几个也一样没收到,请各位高手帮帮小弟,感激不尽!!(程序如下)
单片机发送用MATLAB仿真过,没有问题
Dim str_buff As String
Private Sub rungo_click()
If MSC.PortOpen = False Then
MSC.InputMode = comInputModeText '文本接收
MSC.Settings = "4800,n,8,1" '设置波特率4800,无校验,8位数据位,1位停止位
MSC.InputLen = 0 '一次读出输入缓冲区中的所有数据
MSC.InBufferCount = 0 '清空接收缓冲区
MSC.OutBufferCount = 0 '清空发送缓冲区
MSC.OutBufferSize = 512 '发送缓冲区字节
MSC.RThreshold = 0 '不触发OnComm()事件
MSC.PortOpen = True '打开COM1
End If
Call runstart
End Sub
Private Sub runstart()
MSC.Output = addr '一段 BYTE 数据(2字节)
Call comEvent
Text1= str_buff '显示接收到的“A”
MSC.Output = hexdata '一段 BYTE 数据(512字节)
Call comEvent
Text2 = str_buff '显示接收到的“A”
MSC.Output = hexdata2 '一段 BYTE 数据( < 512字节)
Call comEvent
Text3 = str_buff '显示接收到的“A”
MSC.PortOpen = False '关闭com1
End Sub
Private Sub comEvent()
Do
'MSC.InputLen = 1 '接收一个字节
DoEvents
str_buff = MSC.Input
Loop Until str_buff = "A" '当接收到"A"继续发送下一段
MSC.InBufferCount = 0 '清空接收缓冲区
MSC.OutBufferCount = 0 '清空发送缓冲区
End Sub
--------------------编程问答-------------------- Option Explicit
Dim str_buff As String
Dim addr
Dim hexdata
Dim hexdata2
Private Sub Form_Load()
addr = "01"
hexdata = "0123456789"
hexdata2 = "9876543210"
End Sub
Private Sub rungo_click()
If MSC.PortOpen = False Then
MSC.InputMode = comInputModeText '文本接收
MSC.Settings = "9600,n,8,1" '设置波特率4800,无校验,8位数据位,1位停止位
MSC.InputLen = 0 '一次读出输入缓冲区中的所有数据
MSC.InBufferCount = 0 '清空接收缓冲区
MSC.OutBufferCount = 0 '清空发送缓冲区
MSC.OutBufferSize = 512 '发送缓冲区字节
MSC.RThreshold = 0 '不触发OnComm()事件
MSC.PortOpen = True '打开COM1
End If
Call runstart
End Sub
Private Sub runstart()
MSC.Output = addr '一段 BYTE 数据(2字节)
Call comEvent
Text1 = str_buff '显示接收到的“A”
MSC.Output = hexdata '一段 BYTE 数据(512字节)
Call comEvent
Text2 = str_buff '显示接收到的“A”
MSC.Output = hexdata2 '一段 BYTE 数据( < 512字节)
Call comEvent
Text3 = str_buff '显示接收到的“A”
'MSC.PortOpen = False '关闭com1
End Sub
Private Sub comEvent()
Do
MSC.InputLen = 1 '接收一个字节
str_buff = MSC.Input
DoEvents
Loop Until str_buff = "A" '当接收到"A"继续发送下一段
MSC.InBufferCount = 0 '清空接收缓冲区
MSC.OutBufferCount = 0 '清空发送缓冲区
End Sub
--------------------编程问答-------------------- 谢谢了!
不过不行。
我原来的数据差不多是这样的
addr(0)=&hf0
addr(1)=&h0
hexdata(0)=&hf0 …… hexdata(511)=&hf0
hexdata(0)=&hf0 …… hexdata(n<512)=&hf0
--------------------编程问答-------------------- Option Explicit
Dim str_buff As String
Dim addr(1) As Byte
Dim hexdata(511) As Byte
Dim hexdata2(511) As Byte
Dim i As Integer
Private Sub Form_Load()
addr(0) = &HF0
addr(1) = &H0
For i = 0 To 511
hexdata(i) = &HF0
hexdata2(i) = &HF0
Next
End Sub
Private Sub rungo_click()
If MSC.PortOpen = False Then
MSC.InputMode = comInputModeText '文本接收
MSC.Settings = "9600,n,8,1" '设置波特率4800,无校验,8位数据位,1位停止位
MSC.InputLen = 0 '一次读出输入缓冲区中的所有数据
MSC.InBufferCount = 0 '清空接收缓冲区
MSC.OutBufferCount = 0 '清空发送缓冲区
MSC.OutBufferSize = 512 '发送缓冲区字节
MSC.RThreshold = 0 '不触发OnComm()事件
MSC.PortOpen = True '打开COM1
End If
Call runstart
End Sub
Private Sub runstart()
MSC.Output = addr '一段 BYTE 数据(2字节)
Call comEvent
Text1 = str_buff '显示接收到的“A”
MSC.Output = hexdata '一段 BYTE 数据(512字节)
Call comEvent
Text2 = str_buff '显示接收到的“A”
MSC.Output = hexdata2 '一段 BYTE 数据( < 512字节)
Call comEvent
Text3 = str_buff '显示接收到的“A”
MSC.PortOpen = False '关闭com1
End Sub
Private Sub comEvent()
Do
MSC.InputLen = 1 '接收一个字节
str_buff = MSC.Input
DoEvents
Loop Until str_buff = "A" '当接收到"A"继续发送下一段
MSC.InBufferCount = 0 '清空接收缓冲区
MSC.OutBufferCount = 0 '清空发送缓冲区
End Sub
--------------------编程问答-------------------- 将
MSC.Settings = "9600,n,8,1" '设置波特率4800,无校验,8位数据位,1位停止位
改为:
MSC.Settings = "4800,n,8,1" '设置波特率4800,无校验,8位数据位,1位停止位 --------------------编程问答-------------------- 很有可能是COM口通讯线有问题 --------------------编程问答-------------------- 单片机和控件的波特率要一样 --------------------编程问答-------------------- 谢谢各位!!
自已解决了 --------------------编程问答-------------------- lz要干嘛? --------------------编程问答-------------------- 好像没那么简单,呵呵. --------------------编程问答-------------------- 是怎么解决地呀? --------------------编程问答-------------------- 其实找个串行口助手测试一下就可以了,注意最好采用十六进制
补充:VB , 资源