C寫入串列埠程式,有時開啟或關閉串列埠時視窗會凍結

發布 科技 2024-03-15
10個回答
  1. 匿名使用者2024-02-06

    while (m_isreceiving)

    介面卡在 DoEvents 中

    你處於乙個無休止的迴圈中!! 它會被卡住的!!

  2. 匿名使用者2024-02-05

    介面卡住了嗎? 當時是否還收到資料?

    建議使用多執行緒進行資料處理。

  3. 匿名使用者2024-02-04

    你好! 如果不關閉串列埠,拔掉串列埠,肯定會有錯誤,所以在傳送資料時可以判斷串列埠是否開啟。

  4. 匿名使用者2024-02-03

    沒有這樣的檢測技術,因為雖然不同的外設使用串列埠協議,但是對於不同的輸入,即使外設鏈結,也不一定會有返回資料,而且串列埠本身不具備自檢功能,所以串列埠只能開啟,無法確切知道是否有外設連線, 即使樓上說它不能超時。

  5. 匿名使用者2024-02-02

    serialport= new serialport(com, baudrate, parity, databits, stopbits);

    然後你就可以做到了。

    程式退出時,請務必關閉串列埠。

  6. 匿名使用者2024-02-01

    您應該啟動乙個新執行緒,或使用 backgroundworker 來執行介面更新並傳送和接收。

    您目前將所有處理都放在乙個主線程中,並且介面更新在這個主線程中,這不可避免地會導致介面凍結。

    執行緒的執行等同於過程執行,即順序執行,當操作需要時間時,不可避免地會對介面更新或資料收發產生影響。

    您可以通過電子郵件將來源**傳送給我檢視。

  7. 匿名使用者2024-01-31

    在 from1 中,將序列埠宣告為靜態變數,例如 public static serialport sp=new serialport();

    之後,你可以直接在form2中用它來控制串列埠,至於儲存設定,有很多方法,可以使用登錄檔或者ini(你可以在c中檢查ini的讀寫情況,自己找到),當你在form2開啟串列埠時,先把上面的設定儲存到ini中, 然後開啟它,同樣在 Form2 的載入中,首先閱讀這些設定,然後根據設定分配上面的這些下拉列表。

    注意:一般來說,form2 不會啟動序列埠,而是設定序列埠(即將設定寫入 ini),並在 form1 中啟動和停止序列埠(啟動時也會讀取 ini 載入設定)。

  8. 匿名使用者2024-01-30

    在樓上,這是不行的,如果你想這樣做,那就是啟動窗體,如果它結束了,所有的窗體都關閉了,所以你在啟動第乙個視窗時隱藏了窗體,然後你啟動了第二個窗體,在第二個窗體中,寫:form1 f1; 在第二種形式中將引數 form1 f1 新增到建構函式中,然後在函式中將引數提供給 f1; f1 = f1;然後,如果登入成功,則可以寫入登入名; 關閉 form2; 所以它可以非常簡單。

  9. 匿名使用者2024-01-29

    將設定寫入 txt 檔案,並在下次啟動它們時讀取它們。

    它也可以用 INI、XML 等編寫。

  10. 匿名使用者2024-01-28

    很奇怪的問題。

    對於串列埠,資料接收的速度完全取決於對方的傳送速度。

    如果接收部分出現堵塞,則資料可能會丟失且不完整,但不會變慢。

    因為發件人不會“配合”你減慢傳送速度。

    除非是問答協議,否則速度取決於查詢的頻率,您應該檢查**的那部分。

相關回答
7個回答2024-03-15

出圈問題,這個問題比較經典,但同時又慢又難,我見過乙個演算法,但效率不是很高,我自己也沒有想出來。 >>>More

8個回答2024-03-15

發現這個問題後還沒研究過怎麼選擇,不知道richTextBox能不能實現,如果只是搜尋應該不難。

4個回答2024-03-15

引用月份[12][10]; 錯。 如果沒有元素 month[12][10],最多 month[11][9],指標 p 是無用的。 還有刪除所有 +10 級對應的 *。 >>>More

4個回答2024-03-15

你使用乙個P1埠來控制8個數碼管的動態掃瞄,數碼管的動態掃瞄顯示需要被遮蔽。 >>>More

5個回答2024-03-15

bool f=0;

for(int i=1000;i>=1;我--)從最大的數字 1000 開始,然後嘗試使用較小的數字。 >>>More