VB与单片机的通信
运行结果Text1 , Text2 接收到“A”,Text3 却没有收到,即使多发几个也一样没收到,请各位高手帮帮小弟,感激不尽!!(程序如下)
单片机发送用MATLAB仿真过,没有问题Dim str_buff As StringPrivate 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 SubPrivate 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 SubPrivate 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
运行结果Text1 , Text2 接收到“A”,Text3 却没有收到,即使多发几个也一样没收到,请各位高手帮帮小弟,感激不尽!!(程序如下)
单片机发送用MATLAB仿真过,没有问题Dim str_buff As StringPrivate 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 SubPrivate 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 SubPrivate 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
Dim str_buff As String
Dim addr
Dim hexdata
Dim hexdata2Private Sub Form_Load()
addr = "01"
hexdata = "0123456789"
hexdata2 = "9876543210"
End SubPrivate 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 SubPrivate 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 SubPrivate 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
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 SubPrivate 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 SubPrivate 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 SubPrivate 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位停止位