【发布时间】:2019-10-05 22:05:06
【问题描述】:
我正在尝试开发一款可以监听并与串行端口(COM3、COM5 等)对话的软件。文件“form1.cs”被复制并粘贴在下面。
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using System.IO.Ports;
namespace WindowsFormsApp1
{
public partial class Form1 : Form
{
string DispString;
public Form1()
{
InitializeComponent();
}
private void StartCOM1(object sender, EventArgs e)
{
serialPort1.PortName = "COM1";
StartCOM_General();
}
private void StartCOM3(object sender, EventArgs e)
{
serialPort1.PortName = "COM3";
StartCOM_General();
}
public void StartCOM_General()
{
serialPort1.BaudRate = 115200;
serialPort1.Parity = Parity.None;
serialPort1.StopBits = StopBits.One;
serialPort1.Handshake = Handshake.None;
try { serialPort1.Open(); } finally{ }
serialPort1.ReadTimeout = 2000;
if (serialPort1.IsOpen)
{
DispString = "";
}
}
private void ResetClosePort(object sender, EventArgs e)
{
DispString = "";
textBox1.Text = "";
serialPort1.Close();
}
private void UpdateData(object sender, SerialDataReceivedEventArgs e)
{
DispString += serialPort1.ReadExisting();
textBox1.Text = DispString;
}
}
}
我的问题是我的端口没有显示任何内容。即使我的 serialPort 对象的“DataReceived”事件设置为调用 UpdateData,我认为根本不会调用 UpdateData。
【问题讨论】:
-
这张图片根本没有为问题添加任何内容。你也没有把事件联系起来。也许你应该稍微了解一下事件
-
请阅读SerialPort.DataReceived documentation中有关线程问题的部分