请教一个关于vb中mscomm控件的问题

来源:百度知道 编辑:UC知道 时间:2024/05/30 13:42:47
我有一个单片机做的系统,其串口发送0-255的16进制数字,我用vb要读取这256个数字并存到access数据库中,程序如下
Public mdbpath As String
Public conn As New ADODB.Connection
Public connstr As String

Private Sub Form_Load()
Dim str As String
mdbpath = "c:\db1.mdb"
connstr = "Provider=Microsoft.Jet.OLEDB.4.0;Password=;Data Source=" & mdbpath & ";"
conn.ConnectionString = connstr
conn.CursorLocation = adUseClient
conn.Open
conn.Execute ("delete from restart_time")

MSComm1.CommPort = 1 ' 选择COM1
MSComm1.Settings = "9600,E,8,1" ' 设置通信参数
MSComm1.InBufferSize = 1024 ' 设置接收缓冲区大小
MSComm1.RThreshold = 1 '1个字节
MSComm1.InputMode = 1
MSComm1.InputLen = 0 '读入接收缓冲区全部字符(1个字节)
MSComm1.InBufferCount = 0
MSComm1.PortOpen = True '打开COM1
End Sub

Private Sub MSComm1_OnComm()
Dim ff()

执行后,access中插入的数据总不太对,是00,01,02,03,04,05,06,07,88,89,8A........。
不知道你单片机的发送的数据是怎么样的,所以请将单片机的数据也介绍一下

UBound(ff)应该是否为1,可显示总是7
MSComm1.InputLen = 1 不能是0

“ MSComm1.RThreshold = 1表示当接收缓存达到或超过1个字节时,触发MSComm1_OnComm事件,但并不代表每接收一个字节就发生一次MSComm1_OnComm事件”,这句话如何理解,

当接收缓存超过1个字节时,发送端继续发送字符,这时虽然继续触发MSComm1_OnComm事件,但不一定是一一对应的了