[問題] 請問要等到UART收到IRQ再往下跑的寫法

作者: greenlinux (GreenLinux)   2024-12-29 21:30:58
抱歉各位, 請問在 C# 要怎樣可以做以下情形:
public void Test1()
{
do_something1();
.....
while(uart0_IRQ);
do_something2();
}
就是指做完 do_something1() 後, 我在等收到uart0的 Interrupt後
再往下做do_something2();
原本我寫好UART0 的Rx ReceiveData() func:
public bool uart0_IRQ = false;
public void ReceiveData(object s, SerialDataReceivedEventArgs e)
{
uart0_IRQ = true;
}
但這樣Test1() 好像永遠都收不到這個 uart0_IRQ 變成true.
我不想將 do_something2() 及後面的流程放在 ReceiveData()內,
因為 Interrupt Func不該做太耗時的工作.
請問正確應該要怎樣寫??? 謝謝..
作者: ian90911 (xopowo)   2024-12-30 00:52:00
關鍵字應該是委派delegate
作者: selfhu (水管爆了)   2024-12-30 02:30:00
資料先扔進queue後交給task執行後面要跑的程式task那邊再從queue拉出來繼續
作者: greenlinux (GreenLinux)   2024-12-30 08:51:00
謝謝兩位,我google一下相關資料,謝謝.
作者: ian90911 (xopowo)   2024-12-30 16:16:00
就你其實可以寫一個自訂類別來包裝想給主程序訂閱的事件我猜你是寫winform,怕中斷UIThread也可用Task做非同步
作者: greenlinux (GreenLinux)   2024-12-30 16:30:00
@ian90911 是的, 是WinForm

Links booklink

Contact Us: admin [ a t ] ucptt.com