
正文
vb.net串口扫描 vb串口接收数据处理
提示:扫一扫查出行【扫一扫了解最新限行尾号】
复制提示
VB.net串口通信数据处理问题,大家帮帮忙
上述网址的问题与本题一样,提问者:jlfly7671,与你是一个人吧?
用MSCOMM控件实现
定义数组a=mscomm1.input
因为程序需要两个窗体,mscomm配置连接等代码写在frm1中
在frm2中写入操作返回数据的代码总是报错,所以我想将a写在模块中调用,不知道能否解决?若可以的话 模块中a该怎么写?
刚才试过不能用a=frm1.mscomm1.input 定义
分不多,心意尽到 大家帮帮忙
另外像这样的情况frm2中需要拖一个MSCOMM控件吗?
相关问答
Q1: vb.net 怎么用事件触发的方式读取串口数据
首先:
textbox里没有显示vb.net串口扫描,是因为SerialPort1和TextBox2不是同一线程创建的vb.net串口扫描,需要跨线程操作。需要用到委托,这样才能显示出来。
其次:
我觉得用串口的接收数据事件更好一些。
下面代码供参考:
'----------------------
'串口接收数据事件,其实比用定时器更好,
'触发事件的条件可以自己在form_load中设置ReceivedBytesThreshold属性数值,默认为ReceivedBytesThreshold=1
Private Sub SerialPort1_DataReceived(ByVal sender As Object, ByVal e As System.IO.Ports.SerialDataReceivedEventArgs) Handles SerialPort1.DataReceived
Dim strRecvData As String = ""
strRecvData = SerialPort1.ReadExisting
Call disPlayComData(strRecvData)
End Sub
Delegate Sub callback(ByVal strT As String) '定义委托
Sub showString(ByVal comdata As String) '显示结果
Me.TextBox1.Text = "结果:" comdata
End Sub
Sub disPlayComData(ByVal strTmp As String) '判定是否为跨线程
If Me.TextBox1.InvokeRequired Then
Dim d As New callback(AddressOf showString)
Me.Invoke(d, New Object() {strTmp})
Else
Me.TextBox1.Text = strTmp
End If
End Sub
Q2: 怎样在vb中自动检测到可用串口号的具体程序代码
vb.net的话
For
Each
sp
As
String
In
My.Computer.Ports.SerialPortNames
cbxport.Items.Add(sp)
Next
vb6.0的话要调用API查看串口相关信息存在的注册表。
HKEY_LOCAL_MACHINE\HARDWARE\DEVICEMAP\SERIALCOMM
通过读注册表的方法获得串口数量,当然也可以获得串口号了。
Option
Explicit
Private
Declare
Function
RegOpenKey
Lib
"advapi32.dll
"
Alias
"RegOpenKeyA
"
(ByVal
hKey
As
Long,
ByVal
lpSubKey
As
String,
phkResult
As
Long)
As
Long
Private
Declare
Function
RegQueryInfoKey
Lib
"advapi32.dll
"
Alias
"RegQueryInfoKeyA
"
(ByVal
hKey
As
Long,
ByVal
lpClass
As
String,
lpcbClass
As
Long,
ByVal
lpReserved
As
Long,
lpcSubKeys
As
Long,
lpcbMaxSubKeyLen
As
Long,
lpcbMaxClassLen
As
Long,
lpcValues
As
Long,
lpcbMaxValueNameLen
As
Long,
lpcbMaxValueLen
As
Long,
lpcbSecurityDescriptor
As
Long,
lpftLastWriteTime
As
Long)
As
Long
Private
Const
HKEY_LOCAL_MACHINE
=
H80000002
'
获得当前系统的
COM
口的数量
Function
GetCOMCount()
As
Integer
Dim
ret
As
Long,
cntCOM
As
Long
RegOpenKey
HKEY_LOCAL_MACHINE,
"HARDWARE\DEVICEMAP\SERIALCOMM
",
ret
RegQueryInfoKey
ret,
"
",
0,
0,
0,
0,
0,
cntCOM,
0,
0,
0,
GetCOMCount
=
cntCOM
End
Function
Private
Sub
Command1_Click()
MsgBox
"您的机器有
"
GetCOMCount
"
个串口。
",
vbOKOnly,
"串口数量
"
End
Sub
Q3: VB.NET使用AxMSComm实现串口通信的发送读取问题?
上面的代码看不出问题vb.net串口扫描,如果初始化串口控件时已经注册了AxMSComm1_OnCommvb.net串口扫描,有数据接收应该能触发vb.net串口扫描,至于为什么没有触发,要看看vb.net串口扫描你的接收方是否已经收到vb.net串口扫描你的发出指令,是否已经有响应数据回发。
建议分开调试,用一个通用的串口助手,如格西烽火串口助手之类的,分别调试你的上位机和下位机。格西烽火串口助手能轻松的定制如你上面的发送数据。
Q4: vb.net 读取扫描枪USB接口数据的实例
USB比较难抓数据,建议是USB模拟串口,或者直接就是串口,这样数据比较好抓。
USB上传模式是鼠标光标在哪数据就上传在哪,所以你抓USB的数据的很难!
X猫-思刊办公专营店
vb.net串口扫描的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于vb串口接收数据处理、vb.net串口扫描的信息别忘了在本站进行查找喔。





