我得功能简单,VB界面通过串口控制单片机.这里我只说数据传输的部分,有运行停止2各主要命令,默认运行后自动传输200个数据,如果之间停止则重新传输200个数据(这些在单片机中实现).我用串口调试工具时都很正常.但是用VB控制时出现错误,如果我数据传输中途停止,比如这时已经传输10个数据,它重新传输时传到190个就停止了.我开始怀疑是VB中的变量设置有问题,程序大概说明如下:
Private datasheet(1 To 200) '设置全局变量,数据列表
Private datacount As Byte
Private Sub run_Click()     '运行命令,省略
Private Sub stop_Click()    '停止命令,省略.此时清空datacount,datasheet
Private Sub Form_Load()
MSComm1.CommPort = 1                 '初始化串口通信
MSComm1.Settings = "9600,n,8,1"
MSComm1.InputMode = 1
MSComm1.PortOpen = True
MSComm1.OutBufferCount = 0
MSComm1.RThreshold = 5
MSComm1.InputLen = 5
MSComm1.InBufferCount = 0
End Sub
Private Sub MSComm1_OnComm()   '数据就赋值给datasheet,datacount
End Sub
大致结构这样,但是我用示波器看串口接收数据,发现传到190个数据就停止了,这样说来就不是全局变量的问题了.如果说我串口工具测试时正常,那么单片机程序应该没问题.我现在怀疑是不是我MSComm控件参数设置的问题,比如我停止时已经有这么多数据存在接收缓冲区中.因为以前我看过文章说即使RThreshold = 5,其实实际工作时缓冲区并不是接受5字节就进事件MSComm1.CommEvent,它实际一次接受很多数据.我想是不是这里出错?
写了不少,不知道说清楚没,请大家提些意见!