问题描述
我想读取我的串口,但只有在数据到来时(我不想轮询).
I want read my serial port but only when data comes(I want not polling).
我就是这样做的.
Schnittstelle = new SerialPort("COM3");
Schnittstelle.BaudRate = 115200;
Schnittstelle.DataBits = 8;
Schnittstelle.StopBits = StopBits.Two;
....
然后我开始一个线程
beginn = new Thread(readCom);
beginn.Start();
在我的 readCom 中,我正在连续阅读(轮询:()
and in my readCom I'm reading continuous (polling :( )
private void readCom()
{
try
{
while (Schnittstelle.IsOpen)
{
Dispatcher.BeginInvoke(new Action(() =>
{
ComWindow.txtbCom.Text = ComWindow.txtbCom.Text + Environment.NewLine + Schnittstelle.ReadExisting();
ComWindow.txtbCom.ScrollToEnd();
}));
beginn.Join(10);
}
}
catch (ThreadAbortException)
{
}
catch (Exception ex)
{
System.Windows.Forms.MessageBox.Show(ex.ToString(), "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
}
}
我希望你在中断到来时阅读.但是我该怎么做呢?
I want yout read when a Interrupt is coming. But how can I do that ?
推荐答案
您必须向 DataReceived 事件添加一个 eventHandler.
You will have to add an eventHandler to the DataReceived event.
以下是来自 msdn.microsoft.com 的示例,并进行了一些修改:查看评论!:
Below is an example from msdn.microsoft.com, with some edits: see comments!:
public static void Main()
{
SerialPort mySerialPort = new SerialPort("COM1");
mySerialPort.BaudRate = 9600;
mySerialPort.Parity = Parity.None;
mySerialPort.StopBits = StopBits.One;
mySerialPort.DataBits = 8;
mySerialPort.Handshake = Handshake.None;
mySerialPort.DataReceived += new SerialDataReceivedEventHandler(DataReceivedHandler);
mySerialPort.Open();
Console.WriteLine("Press any key to continue...");
Console.WriteLine();
Console.ReadKey();
mySerialPort.Close();
}
private static void DataReceivedHandler(object sender, SerialDataReceivedEventArgs e)
{
SerialPort sp = (SerialPort)sender;
string indata = sp.ReadExisting();
Debug.Print("Data Received:");
Debug.Print(indata);
}
每次数据进入时,DataReceivedHandler 都会触发并将您的数据打印到控制台.我认为你应该能够在你的代码中做到这一点.
Everytime data comes in, the DataReceivedHandler will trigger and prints your data to the console. I think you should be able to do this in your code.
这篇关于数据到来时C#只读串口的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!