串口有关问题和鼠标乱飘的有关问题
求助串口问题和鼠标乱飘的问题
首先是串口问题,我使用网上的listening和Closing方法,解决了不会卡死的问题,但是出现了新的问题,就是在关闭串口的时候需要关闭两次才能关闭成功。关闭一次我按暂停发现程序一直停在DoEvent()中。
private void button1_Click(object sender, EventArgs e)
{
try
{
if (serialPort1.IsOpen == false)
{
serialPort1.PortName = comnu.Text; //端口名
serialPort1.BaudRate = int.Parse("9600");//设置波特率
button1.Text = "关闭";
Closing0 = false;
try
{
serialPort1.Open(); //打开串口
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
}
else
{
Closing0 = true;
while (listening0) Application.DoEvents();
value.Clear();
try
{
serialPort1.Close();
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
Closing0 = false;
button1.Text = "打开串口";
}
}
catch
{
MessageBox.Show("请先打开串口");
}
}
这是关闭按钮。每次关闭串口都要按两下按钮才能关闭完然后按钮上的Text变成打开串口。
这个求大神解答一下。。。
2.还有一个问题是我现在机器上连接了2个485转USB通信的端口,它们会一直有数据从下位机里发送出来,然后我PC经常会一开机鼠标就不听使唤,一直乱飘,需要拔掉2个485转USB接头再插好,鼠标才不会飘。。这个该怎么解决。。求各位帮帮忙。
新人一枚,分给的不多,见谅。。
------解决方案--------------------
想要关闭串口的时候不要与串口线程冲突,最好的办法就是打开关闭的操作都放到线程函数里去.
按钮只负责开一个线程或告诉线程可以关闭了.
线程在启动的时候打开串口,并循环处理数据.
要关闭的时候,退出循环,关闭串口.
------解决方案--------------------
1,添加一个静态变量static int nThreads,用于保存delegate启动次数.在进入delegate块后nThreads++,delete块结束前nThreads--
首先是串口问题,我使用网上的listening和Closing方法,解决了不会卡死的问题,但是出现了新的问题,就是在关闭串口的时候需要关闭两次才能关闭成功。关闭一次我按暂停发现程序一直停在DoEvent()中。
private void button1_Click(object sender, EventArgs e)
{
try
{
if (serialPort1.IsOpen == false)
{
serialPort1.PortName = comnu.Text; //端口名
serialPort1.BaudRate = int.Parse("9600");//设置波特率
button1.Text = "关闭";
Closing0 = false;
try
{
serialPort1.Open(); //打开串口
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
}
else
{
Closing0 = true;
while (listening0) Application.DoEvents();
value.Clear();
try
{
serialPort1.Close();
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
Closing0 = false;
button1.Text = "打开串口";
}
}
catch
{
MessageBox.Show("请先打开串口");
}
}
这是关闭按钮。每次关闭串口都要按两下按钮才能关闭完然后按钮上的Text变成打开串口。
这个求大神解答一下。。。
2.还有一个问题是我现在机器上连接了2个485转USB通信的端口,它们会一直有数据从下位机里发送出来,然后我PC经常会一开机鼠标就不听使唤,一直乱飘,需要拔掉2个485转USB接头再插好,鼠标才不会飘。。这个该怎么解决。。求各位帮帮忙。
新人一枚,分给的不多,见谅。。
------解决方案--------------------
想要关闭串口的时候不要与串口线程冲突,最好的办法就是打开关闭的操作都放到线程函数里去.
按钮只负责开一个线程或告诉线程可以关闭了.
线程在启动的时候打开串口,并循环处理数据.
要关闭的时候,退出循环,关闭串口.
------解决方案--------------------
1,添加一个静态变量static int nThreads,用于保存delegate启动次数.在进入delegate块后nThreads++,delete块结束前nThreads--