[問題] serial port中BreakState的問題

看板C_Sharp (C#)作者 (蟒哥)時間10年前 (2015/05/12 23:21), 10年前編輯推噓1(105)
留言6則, 3人參與, 最新討論串1/1
我現在在做用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://www.ptt.cc/bbs/C_Sharp/M.1431444061.A.1A9.html

05/13 05:38, , 1F
comport.Open()有在原本的code裡面嗎
05/13 05:38, 1F
謝謝,有加了,後來還找到個要加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

05/25 23:45, , 2F
拔掉要停一陣子才會變成timeout吧..不過在那之前
05/25 23:45, 2F

05/25 23:46, , 3F
應該會先跳error才對.
05/25 23:46, 3F

05/25 23:48, , 4F
剛看了一下msdn,文中是寫發生於傳輸暫停,線路會成中斷狀態
05/25 23:48, 4F

05/30 15:17, , 5F
有了有了,後來改用serialpingchange事件有抓到中斷了
05/30 15:17, 5F

05/30 15:18, , 6F
謝謝:D
05/30 15:18, 6F
文章代碼(AID): #1LKXfT6f (C_Sharp)
文章代碼(AID): #1LKXfT6f (C_Sharp)