[问题] 请问要等到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
作者: kobe8112 (小B)   2023-02-05 09:08:00
ReceiveData也不会是UI执行绪执行啊

Links booklink

Contact Us: admin [ a t ] ucptt.com