作者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/m.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