-1

有什么方法可以在 c# 中进行数据发送(TX 缓冲区为空或“UART 发送完成”)事件,就像在低级语言中可用的那样?

这是明确要求使用“UART 发送完成”中断的大学项目的一部分

4

1 回答 1

3

操作系统确实有一个信号,带有 EV_TXEMPTY 选项的 WaitCommEvent()。但这根本没有在 SerialPort 类中公开。您所拥有的是 BytesToWrite 属性,它告诉您传输缓冲区中还剩下多少字节。没有事件,您必须使用计时器对其进行轮询。

在 SerialPort 类中不公开 EV_TXEMPTY 事件无疑是故意的,添加它会非常容易。该事件的问题在于,知道串行端口发生的任何事情都是毫无用处的。它只是说发送缓冲区是空的,它没有说明端口是否完成发送数据。现代 UART 芯片在芯片上有一个缓冲区,通常为 16 字节深,用于在发送字节之前存储字节。有助于降低中断开销并避免字节之间的间隙。根本没有信号表明他的缓冲区也是空的。它从未添加到本机驱动程序接口中。

完全不清楚你为什么需要这个。信息很明确,您不需要这个。

于 2013-06-10T16:55:17.623 回答