作者tom2911138 (蟒哥)
看板C_Sharp
标题[问题] serial port中BreakState的问题
时间Tue May 12 23:20:58 2015
我现在在做用serial port传送接收的程式
并且要监测现在是否在接收状态中
但程式执行到判断BreakState是否为true的时候就卡住了
网路上几乎找不到相关范例
想请问一下这个BreakState该如何使用?
我在尝试的简单程式码如下
一开始显示3,判断BreakState是否为true,是的话显示2,否则显示1,做完这些判断
之後显示4。可是结果一直都是3,不知道是卡在哪里?
comport = new SerialPort("COM12", 1000000, Parity.None, 8, StopBits.One);
textBox1.Text = "3";
if (comport.BreakState)
{
textBox1.Text = "2";
}
else
{
textBox1.Text = "1";
}
textBox1.Text = "4";
希望有强者可以帮忙看一下,谢谢
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 140.112.17.251
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/C_Sharp/M.1431444061.A.1A9.html
1F:推 Wermut: comport.Open()有在原本的code里面吗 05/13 05:38
谢谢,有加了,後来还找到个要加Thread的方法就不会卡在if判别不动了
tProf = new Thread(ReceiveProf);
tProf.IsBackground = true;
tProf.Start();
但是在传输接收档案时if (comport.BreakState)一直判定false(没有中断)
即使我把线拔掉他还是显示false
while (receiving)
{
Byte[] buffer = new Byte[1024];
Int32 length = comport.Read(buffer, 0, buffer.Length);
Array.Resize(ref buffer, length);
fsOut.Write(buffer, 0, length);
if (comport.BreakState)
{
text = "2";
}
else
{
text = "1";
}
Display d = new Display(DisplayText);
this.Invoke(d, new Object[] { text });
}
textbox一直显示1,怎麽拔都不会变2
※ 编辑: tom2911138 (140.112.17.251), 05/13/2015 11:45:33
2F:→ daimom: 拔掉要停一阵子才会变成timeout吧..不过在那之前 05/25 23:45
3F:→ daimom: 应该会先跳error才对. 05/25 23:46
4F:→ daimom: 刚看了一下msdn,文中是写发生於传输暂停,线路会成中断状态 05/25 23:48
5F:→ tom2911138: 有了有了,後来改用serialpingchange事件有抓到中断了 05/30 15:17
6F:→ tom2911138: 谢谢:D 05/30 15:18