vb中怎么用MSCOMM控件获取COM端口的数据,并实时存入access,最好有代码和详细解释

 我来答
麒麟中国China
2014-02-18 · TA获得超过244个赞
知道小有建树答主
回答量:300
采纳率:0%
帮助的人:120万
展开全部
这个涉及到你的COM端口的数据协议,然后用MSCOMM控件把从COM端口获取的数据根据协议解析出来再存入数据库。下面是我以前项目的一些代码,给你参考

'设置MSCOMM控件
Public Sub psubInitComPort(intMsCommIndex As Integer, intComNo As Integer, strSettings As String, intInBuffSize As Integer, intRThreshold As Integer, blnPortOpen As Boolean)
On Error GoTo err_proc

If blnPortOpen Then '--打开串口
MSComm(intMsCommIndex).CommPort = intComNo '--使用端口Com1~8
MSComm(intMsCommIndex).Settings = strSettings '"1200,N,8,1" '--设置端口属性,设置波特率1200、无奇偶校验、8数据位和1停止位
MSComm(intMsCommIndex).InBufferSize = intInBuffSize '1024 '--设置接收缓冲区大小为1024个字节
MSComm(intMsCommIndex).RThreshold = intRThreshold ' 12 '--设置每接收n个字节触发OnComm()事件

MSComm(intMsCommIndex).InBufferCount = 0 '--清空接收缓冲区
MSComm(intMsCommIndex).InputLen = 0 '--使用Input属性时在接收缓冲区读取的字符数,0为读取整个接收缓冲区内容
MSComm(intMsCommIndex).InputMode = comInputModeBinary '--Input属性取的数据是二进制数据

If Not MSComm(intMsCommIndex).PortOpen Then '--打开串口
MSComm(intMsCommIndex).PortOpen = True
End If
Else
If MSComm(intMsCommIndex).PortOpen Then '--关闭串口
MSComm(intMsCommIndex).PortOpen = False
End If
End If

Exit Sub
err_proc:

End Sub

'MSCOMM控件接收数据
Private Sub MSComm_OnComm(Index As Integer)
On Error Resume Next
If MSComm(Index).CommEvent = comEvReceive Then '接收缓冲区收到已设定的n个字节
Select Case Index
Case 1 '→1#站加水
Call psubProcComDataCar(Index)
Case 2 '--2#站加水
Call psubProcComDataCar(Index)
Case 3 '--3#站加钢
Call psubProcComDataCar(Index)
' Case 5 '--
'
' Case 6 '--
'
' Case 7 '--
'
' Case 8 '--
End Select
End If
End Sub

'处理串口接收的数据
Public Sub psubProcComDataCar(intComPortNum As Integer)
Dim intTmpi As Integer
Dim bytTmp() As Byte
Dim strtmp As String
On Error GoTo err_proc

bytTmp = Me.MSComm(intComPortNum).Input

For intTmpi = 0 To UBound(bytTmp)
strtmp = strtmp & " " & Format(bytTmp(intTmpi), "00")
Next intTmpi

'--显示原始数据文件
Me.txtTmpRecv(intComPortNum) = Me.txtTmpRecv(intComPortNum) & strtmp
If Len(Me.txtTmpRecv(intComPortNum).Text) > 600 Then
Me.txtTmpRecv(intComPortNum).Text = ""
End If

'--写数据库
Call UpdateDatebase(strtmp)
Exit Sub
err_proc:
End Sub

'--写数据库
Public Sub UpdateDatebase(strData As String)
Dim gadoConnLocal As New ADODB.Connection
Dim gadoCmdLocal As New ADODB.Command
On Error Resume Next

gadoConnLocal.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\db1.mdb;Persist Security Info=False" '假设数据库名为db1,存放在C盘下
gadoConnLocal.CursorLocation = adUseClient
gadoConnLocal.Mode = adModeReadWrite '打开数据库为读写模式
gadoConnLocal.Open '连接数据库
gadoCmdLocal.ActiveConnection = gadoConnLocal
gadoCmdLocal.CommandType = adCmdText
gadoCmdLocal.CommandText = " insert into [数据表名] (字段1) values('" & strData & "')" '写入数据库
gadoCmdLocal.Execute
gadoConnLocal.Close '关闭数据库
Set gadoConnLocal = Nothing
Set gadoCmdLocal = Nothing
End Sub
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式