C#串口问题
各位高手 我有一个串口问题向大家请教,我在窗体的load事件中加入这样几句话 {
comm.NewLine = "/r/n";
comm.PortName = "COM4";
comm.BaudRate = 115200;
try
{
comm.Open();
}
catch (Exception ex)
{
//捕获到异常信息,创建一个新的comm对象,之前的不能用了。
comm = new SerialPort();
//现实异常信息给客户。
MessageBox.Show(ex.Message);
}
comm.DataReceived += comm_DataReceived; }然后在DataReceive中主要代码如下
void comm_DataReceived(object sender, SerialDataReceivedEventArgs e)
{
try
{
Listening = true;
int n = comm.BytesToRead;
byte[] buf = new byte[n];
comm.Read(buf, 0, n); }
当我关闭窗体时在窗体的closed事件中又这样操作
{
try
{
comm.Close();
}
catch (Exception ex)
{
//捕获到异常信息,创建一个新的comm对象,之前的不能用了。
comm = new SerialPort();
//现实异常信息给客户。
MessageBox.Show(ex.Message);
}
} 结果给我的提醒是端口被关闭,结果就退不出程序了,而不关串口,关闭窗口后,又提醒我有异常,无法访问以释放的对象,我怀疑是 comm.DataReceived += comm_DataReceived;这句话的问题,可是怎么也调不通了,请各位高手指教一下,小弟感激不尽了。
------解决方案--------------------在comm.Open()或Close()之前判断comm是否已打开。然后再操作。
Listening = true;
这句话用不着。
你要是参考别人的程序,全搞明白,再用。
------解决方案--------------------端口用完后,先关闭了
------解决方案-------------------- 把comm = new SerialPort();都去掉,你每用一次它前面的初始化就没用了
------解决方案--------------------或者用一次comm = new SerialPort(),把它放在最上面