Vb.net vb比较来自串行端口的应答
如何通过比较REPLY Textbox OK和REF Textbox OK使结果Textbox显示通过 我的问题是结果文本框显示NG甚至回复文本框与REF文本框相同。它应该显示“通过结果”文本框 在有机会接收之前比较接收到的文本,在9600bps和串行端口开销下,单个字符的到达时间将大于1ms,但您的签入将在微秒内到达下一个语句Vb.net vb比较来自串行端口的应答,vb.net,Vb.net,如何通过比较REPLY Textbox OK和REF Textbox OK使结果Textbox显示通过 我的问题是结果文本框显示NG甚至回复文本框与REF文本框相同。它应该显示“通过结果”文本框 在有机会接收之前比较接收到的文本,在9600bps和串行端口开销下,单个字符的到达时间将大于1ms,但您的签入将在微秒内到达下一个语句 在处理DataReceived事件的过程中,您需要移动复选框,直到收到数据为止。我已通过添加另一个按钮更改了代码,该按钮将比较REPLYtxtbox和REFtxtbox
在处理DataReceived事件的过程中,您需要移动复选框,直到收到数据为止。我已通过添加另一个按钮更改了代码,该按钮将比较REPLYtxtbox和REFtxtbox,并在RESULTtxtbox中显示结果。结果仍然相同,在RESULTtxtbox@Art76那样的话请编辑问题,以包括各种控件的文本属性值。使用调试器获取实际值,不要依赖用户界面中的剪切和粘贴。设备传输、处理命令和返回回复需要时间。毫秒,你期望它在几分之一纳秒内发生。ReadExisting是一种危险的方法,尽管它准确地描述了它的功能。它只返回现有的数据,波特率为9600波特,通常只有1个字符。发送OK响应的设备通常允许使用ReadLine。
Imports System
Imports System.Threading
Imports System.IO.Ports
Imports System.ComponentModel
Public Class Form1
Delegate Sub SetTextCallBack(ByVal [text] As String)
Private Sub writeButton_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles writeButton.Click
SerialPort1.Close()
SerialPort1.PortName = "COM5"
SerialPort1.BaudRate = "9600"
SerialPort1.Open()
SerialPort1.Write(inputTextBox.Text & vbCr)
If REPLYtxtBox.Text = REFtxtBox.Text Then
RESULTtxtBox.Text = "PASS"
Else
RESULTtxtBox.Text = "NG"
End If
End Sub
Private Sub SerialPort1_DataReceived(ByVal sender As System.Object, ByVal e As System.IO.Ports.SerialDataReceivedEventArgs) Handles SerialPort1.DataReceived
ReceivedText(SerialPort1.ReadExisting())
End Sub
Private Sub ReceivedText(ByVal [text] As String)
If Me.REPLYtxtBox.InvokeRequired Then
Dim x As New SetTextCallBack(AddressOf ReceivedText)
Me.Invoke(x, New Object() {(text)})
Else
Me.REPLYtxtBox.Text &= [text]
End If
End Sub
End Class
SerialPort1.Write(inputTextBox.Text & vbCr)
If REPLYtxtBox.Text = REFtxtBox.Text Then