private void button1_Click(object sender, EventArgs e)
{
serialPort1.DtrEnable = false;
serialPort1.RtsEnable = false;
serialPort1.close;
//执行serialPort1.close 时程序档住不动,不在serialPort1_DataReceived中调用串口.close事件,手动点击此按钮不会出现程序档住。
} private void serialPort1_DataReceived(object sender, System.IO.Ports.SerialDataReceivedEventArgs e)
{
string Currentstring="";
//从串口收到字符串 Currentstring
//另一台计算机会发送OK字符过来,检测到OK完字符自动关闭串口 if (Currentstring == "OK")
{
button1.Invoke(new EventHandler(delegate
{
button1_Click(null, null);
}));
}
}
{
serialPort1.DtrEnable = false;
serialPort1.RtsEnable = false;
serialPort1.close;
//执行serialPort1.close 时程序档住不动,不在serialPort1_DataReceived中调用串口.close事件,手动点击此按钮不会出现程序档住。
} private void serialPort1_DataReceived(object sender, System.IO.Ports.SerialDataReceivedEventArgs e)
{
string Currentstring="";
//从串口收到字符串 Currentstring
//另一台计算机会发送OK字符过来,检测到OK完字符自动关闭串口 if (Currentstring == "OK")
{
button1.Invoke(new EventHandler(delegate
{
button1_Click(null, null);
}));
}
}
{
serialPort1.DtrEnable = false;
serialPort1.RtsEnable = false;
serialPort1.close;
//执行serialPort1.close 时程序档住不动,不在serialPort1_DataReceived中调用串口.close事件,手动点击此按钮不会出现程序档住。
}
把上面这个函数拆成两个:
void CloseSerialPort()
{
serialPort1.DtrEnable = false;
serialPort1.RtsEnable = false;
serialPort1.close; }
void button1_Click(object sender, EventArgs e)
{
CloseSerialPort();下面这个函数也改一下:
void serialPort1_DataReceived(object sender, System.IO.Ports.SerialDataReceivedEventArgs e)
{
string Currentstring="";
//从串口收到字符串 Currentstring
//另一台计算机会发送OK字符过来,检测到OK完字符自动关闭串口 if (Currentstring == "OK")
{
CloseSerialPort();
}
} }