作者greenlinux (GreenLinux)
看板C_Sharp
标题[问题] 请问要等到UART收到IRQ再往下跑的写法
时间Sun Dec 29 21:30:58 2024
抱歉各位, 请问在 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不该做太耗时的工作.
请问正确应该要怎样写??? 谢谢..
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 36.229.44.237 (台湾)
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/C_Sharp/M.1735479060.A.5EF.html
1F:推 ian90911: 关键字应该是委派delegate 12/30 00:52
2F:推 selfhu: 资料先扔进queue後交给task执行後面要跑的程式 12/30 02:30
3F:→ selfhu: task那边再从queue拉出来继续 12/30 02:31
4F:→ greenlinux: 谢谢两位,我google一下相关资料,谢谢. 12/30 08:51
5F:→ greenlinux: @ian90911 请问那里要加delegate? 12/30 13:38
6F:推 ian90911: 就你其实可以写一个自订类别来包装想给主程序订阅的事件 12/30 16:16
7F:→ ian90911: 我猜你是写winform,怕中断UIThread也可用Task做非同步 12/30 16:19
8F:→ greenlinux: @ian90911 是的, 是WinForm 12/30 16:30
9F:→ kobe8112: ReceiveData也不会是UI执行绪执行啊 02/05 09:08