Это очень простая реализация. Я надеюсь, что это помогает
ужно прочитать данные из моего виртуального COM-порта и обнаружить сообщение «Dreq». Как только я нажимаю кнопку подключения, он подключается к моему порту COM8 и начинает читать в новой теме. У меня также есть кнопка отключения, в которой я хочу закрыть чтение и отключиться от порта COM8. Однако у меня есть проблемы с закрытием BeginRead.
public partial class Form1 : Form
{
SerialPort sp;
Stream stream;
IAsyncResult recv_result;
private void button1_Click(object sender, EventArgs e)
{
sp = new SerialPort("COM8", 9600);
sp.Open();
sp.ReadTimeout = 50000;
sp.NewLine = "\n\r\0";
stream = sp.BaseStream;
recv_result = stream.BeginRead(new byte[1], 0, 0, new
AsyncCallback(ReadCallBack), stream);
}
private void ReadCallBack(IAsyncResult ar)
{
Stream stream = (Stream)ar.AsyncState;
string temp;
while (stream.CanRead)
{
temp = sp.ReadLine();
// ... do something with temp
}
}
private void disconnectButton_Click(object sender, EventArgs e)
{
stream.EndRead(recv_result);
sp.Close();
}
}