【发布时间】:2023-03-22 09:10:02
【问题描述】:
我正在为工作中的测试平台编写一个 Arduino 数据记录/处理程序,并在 VB.net 中进行编码,因为我在该语言方面有几年的经验,并且认为它比重新学习 C# 更快。 我目前遇到的问题是有时在调试 Serialport.Datarecieved 事件期间不会触发并且不会触发,直到我删除事件处理程序代码块并重新创建它。 这样做时,我复制子的内容,删除块并重新创建它,然后将代码粘贴回块中,然后我又得到了。 我尝试在程序开始时通过 addhandler 调用处理程序,以便在 form1.load 上以编程方式设置它,但这没有帮助。
Imports System
Imports System.ComponentModel
Imports System.Threading
Imports System.IO.Ports
Public Class Form1
Public WithEvents com1 As New IO.Ports.SerialPort
'serial port recreated and connection details set.
com1 = New IO.Ports.SerialPort(cb_Comms.Text, cb_Baud.Text, Parity.None, 8, StopBits.One)
com1.Handshake = Handshake.None
com1.WriteTimeout = 10
com1.ReadTimeout = 10
Private Sub com1_DataReceived() (sender As Object, e As SerialDataReceivedEventArgs)
Me.BeginInvoke(Sub() PortRead())
End Sub
任何帮助将不胜感激。谢谢
【问题讨论】:
-
不明白删除和重新创建处理程序事件将如何帮助任何人,老实说,我希望这将是一个巧合,可能与您必须重新启动应用程序的事实有关。也许您可以发布 PortRead() 块。也许问题是让端口处于无法接收更多数据的状态
-
嗨赫西,感谢您的回复。我在下面发布了 portread() 块。重新启动应用程序没有帮助,我同意我不知道删除处理程序事件如何修复它,但是当我删除 com1_DataRecieved() 块并重新创建它时,它又可以工作了。因此,为什么我会卡住并想知道我是否做过其他愚蠢的事情
标签: vb.net serial-port visual-studio-2019