我需要实现的是通过pc给下位机发命令,从中读取eeprom中的信息。下位机收到pc要求发送的命令以后,先发头字节(比如8个字节)给pc,pc收到后做校验,校验正确了再要求传实际的数据,实际数据有2k多,不正确的话就重发。这样反复有32次(共64k数据要发送),pc和下位机的baud是19200,这样需要20多妙的时间。在程序中应该怎么处理?我希望达到的目的是:比如按下一个command,让用户等待一段时间读取所有的信息。现在我单步调试可以实现。但是如果一直不停的读,就会出错。是不是一直读,串口的数据来不及接收呢?
在线等待!
在线等待!
不过我后来的解决方法是一边接受,一边读进内存变量中,同时将缓冲区清空。这样就保证缓冲区不溢出。我当时使用的波特率是38400,楼主根据自己的实际参数更改一下。
sub form_load()
With Com1 '控件名
If .PortOpen Then .PortOpen = False '如果端口已打开,则先关闭
.Commport = 1 '选择串口1
.RThreshold = 1 '接收缓冲区每收到每一个字符都会一个OnComm 事件
.InputLen = 0 '接收缓冲区中全部的内容
.InputMode = comInputModeText '数据传输模式为文本方式
.Settings = "38400,n,8,1" '波特率38400
.Handshaking = 0 '硬件握手方式
.InBufferCount = 0 '输入缓冲大小
.PortOpen = True '打开端口
End With
end sub