
正文
关于vb.net串口自动识别的信息
提示:扫一扫查出行【扫一扫了解最新限行尾号】
复制提示
vb.net 怎么用事件触发的方式读取串口数据
首先:
textbox里没有显示,是因为SerialPort1和TextBox2不是同一线程创建的,需要跨线程操作。需要用到委托,这样才能显示出来。
其次:
我觉得用串口的接收数据事件更好一些。
下面代码供参考:
'----------------------
'串口接收数据事件,其实比用定时器更好,
'触发事件的条件可以自己在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
相关问答
Q1: 怎样在vb中自动检测到可用串口号的具体程序代码
j = 0
For i = 1 To 16 Step 1
If comISP.PortOpen = True Then '先关闭串口
comISP.PortOpen = False
End If
comISP.CommPort = i
On Error Resume Next '说明当一个运行时错误发生时,控件转到紧接着发生错误的语句之后的语句,并在此继续运行。访问对象时要使用这种形式而不使用 On Error GoTo。
comISP.PortOpen = True
If Err.Number 8002 Then '无效的串口号。这样可以检测到虚拟串口,如果用Err.Number = 0的话检测不到虚拟串口
If j = 0 Then
j = i
End If
cboPort.AddItem "COM" i '生成串口选择列表
End If
comISP.PortOpen = False
Next i
If j = 1 Then
cboPort.Text = "COM" j '自动打开可用的最小串口号
comISP.CommPort = j
comISP.PortOpen = True
cmdOpenCom.Caption = "关闭串口"
shpCOM.FillColor = vbGreen
If Err.Number = 8005 Then '串口已打开,vbExclamation '
comISP.PortOpen = False
cboPort.Text = ""
cmdOpenCom.Caption = "打开串口"
shpCOM.FillColor = vbRed
End If
End If
Q2: 使用vb.net如何识别com口最大的端口号
只能从大到小vb.net串口自动识别,测试端口是否可以打开vb.net串口自动识别,来判断
Q3: vb.net+判断串口发送是否空?
在 VB.NET 中,判断串口发送是否为空可以通过判断 SerialPort 类的 IsOpen 和 BytesToWrite 属性来实现。
IsOpen 属性可以判断串口是否已经打开,如果串口没有打开,则无法发送数据,因此 IsOpen 属性可以用来判断串口发送是否可行。
BytesToWrite 属性可以获取当前串口发送缓冲区中待发送的字节数,如果 BytesToWrite 属性的值为 0,则说明当前串口发送缓冲区为空,可以进行下一次发送操作。
下面是一个简单的示例代码:
```
Dim serialPort As New SerialPort()
' 设置串口参数...
If serialPort.IsOpen AndAlso serialPort.BytesToWrite = 0 Then
' 发送数据...
End If
```
在使用串口发送数据时,需要始终注意串口是否已经打开,以及当前发送缓冲区中是否有待发送的数据,否则可能会出现发送失败的情况。
Q4: VB.NET中如何处理串口通信接收的数据?
vb.net串口自动识别你可以预先约定一个截止附vb.net串口自动识别,读取的字节统统放到缓存区里,直到读到截止附再处理、显示。
vb.net串口自动识别的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于、vb.net串口自动识别的信息别忘了在本站进行查找喔。






