在关闭串口时,程序执行到serialPort1.Close()后无响应,各位大侠帮忙看看代码 class ReadFile
{ private byte[] ReceiveBuf;
private ushort ReceiveBufLen = 0;
private bool ReceiveDataOK = false; private SerialPort serialPort1;
/* 接收数据 */
private void serialPort1_DataReceived(object sender, SerialDataReceivedEventArgs e)
{
int n;
n = serialPort1.BytesToRead;
if (n > 0)
{
if (n > 1000) n = 1000;
ReceiveBuf = new byte[n];
ReceiveBufLen = (ushort)serialPort1.Read(ReceiveBuf, 0, n);
if (ReceiveBufLen >= 13)
{
if ((ReceiveBuf[0] == 0x53) && (ReceiveBuf[1] == 0x48) && (ReceiveBuf[2] == 0x54) )
{
ReceiveDataOK = true;
}
}
}
}
/* 构造函数 */
public ReadFile()
{
serialPort1 = new SerialPort();
serialPort1.DataReceived += new SerialDataReceivedEventHandler(serialPort1_DataReceived);
}
/* 析构函数 */
~ReadFile()
{
if (serialPort1.IsOpen)
{
serialPort1.Close();
}
}
}
{ private byte[] ReceiveBuf;
private ushort ReceiveBufLen = 0;
private bool ReceiveDataOK = false; private SerialPort serialPort1;
/* 接收数据 */
private void serialPort1_DataReceived(object sender, SerialDataReceivedEventArgs e)
{
int n;
n = serialPort1.BytesToRead;
if (n > 0)
{
if (n > 1000) n = 1000;
ReceiveBuf = new byte[n];
ReceiveBufLen = (ushort)serialPort1.Read(ReceiveBuf, 0, n);
if (ReceiveBufLen >= 13)
{
if ((ReceiveBuf[0] == 0x53) && (ReceiveBuf[1] == 0x48) && (ReceiveBuf[2] == 0x54) )
{
ReceiveDataOK = true;
}
}
}
}
/* 构造函数 */
public ReadFile()
{
serialPort1 = new SerialPort();
serialPort1.DataReceived += new SerialDataReceivedEventHandler(serialPort1_DataReceived);
}
/* 析构函数 */
~ReadFile()
{
if (serialPort1.IsOpen)
{
serialPort1.Close();
}
}
}
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货