C# 串行端口连接,Readline/ReadExisting不工作
我正试图与另一台机器建立串行连接。我正在使用一个虚拟串口模拟器来尝试这个。我在超级终端上使用的设置如下所示。我可以看到portopen是正确的,但我无法检查我是否可以写或读。当我尝试ReadLine方法时,它给出TimeoutException,而当它是readExisting命令时,它什么也不做。接收到的数据也不会被触发。你能帮我吗C# 串行端口连接,Readline/ReadExisting不工作,c#,serial-port,C#,Serial Port,我正试图与另一台机器建立串行连接。我正在使用一个虚拟串口模拟器来尝试这个。我在超级终端上使用的设置如下所示。我可以看到portopen是正确的,但我无法检查我是否可以写或读。当我尝试ReadLine方法时,它给出TimeoutException,而当它是readExisting命令时,它什么也不做。接收到的数据也不会被触发。你能帮我吗 private void Page1_Load(object sender, EventArgs e) { //Port na
private void Page1_Load(object sender, EventArgs e)
{
//Port name can be identified by checking the ports
// section in Device Manager after connecting your device
serialPort1.PortName = "COM14"; // that one works for me
//Provide the name of port to which device is connected
//default values of hardware[check with device specification document]
serialPort1.BaudRate = 115200;
serialPort1.Parity = Parity.None;
serialPort1.DataBits = 8;
serialPort1.StopBits = StopBits.One;
serialPort1.Handshake = Handshake.None;
serialPort1.RtsEnable = true;
serialPort1.DtrEnable = true;
serialPort1.ReceivedBytesThreshold = 8;
serialPort1.ReadTimeout = 2000;
serialPort1.DataReceived += new SerialDataReceivedEventHandler(serialPort1_DataReceived); //
// Writes data to the Serial Port output buffer
//opens the port
serialPort1.Open();
}
private void serialPort1_DataReceived(object sender, SerialDataReceivedEventArgs e)
{
inputData = serialPort1.ReadExisting();
this.Invoke((MethodInvoker)delegate { DoUpdate(); });
}
public void DoUpdate()
{
textOutput.Text = (textOutput.Text + inputData);
}
private void btnReadExist_Click(object sender, EventArgs e)
{
if ((serialPort1.IsOpen == true))
{
serialPort1.WriteLine("something");
string read= serialPort1.ReadExisting();
//string output = serialPort1.ReadLine();
textOutput.Text += read;
}
}
private void Page1_FormClosed(object sender,System.Windows.Forms.FormClosedEventArgs e)
{
// Close the Serial Port
serialPort1.Close();
}
问题似乎是您正在阅读两个代码块:首先,在按钮事件中发送文本后直接读取。其次,分配了一个事件,该事件在异步调用时读取数据。你应该决定使用哪一个,然后去掉另一个。当你说COM14适合我时,你是什么意思?你的意思是它刚刚成功连接,还是你知道模拟器正在运行的端口?你可以连接到其他东西,而不是模拟器?在使用模拟器时,我使用了其他端口,它成功连接。我的意思是,当连接到实际设备时,当我使用COM14时,连接是成功的。当我删除DataReceived事件时,连接也不起作用。我后来使用了WriteLineAllo写入方法和readexisting。我能看看我写在SerialConnection上的文本吗?