0

我必须将热敏打印机与基于嵌入式 linux 的 AM1808 连接。

我已经连接了一台只有单向通信的打印机,这意味着我只需要发送数据而无需从打印机接收任何内容进行验证。

我有自己的打印机,需要双向通信,我必须在其中发送数据,并且我需要从打印机接收某些东西以验证它是否已成功打印数据。

是的,我的打印机在打印了大约 4000 字节时会挂起,所以我必须重新初始化它以清空其内置缓冲区。

现在我的问题是一旦我配置了一个 UART 端口。我必须启用或禁用传输或接收吗?意味着它可以在启用传输和接收的情况下工作?我该怎么做,请帮助我。

我是否必须将打印机置于中断状态。???谢谢你。

4

2 回答 2

0

我曾经使用过的所有 UART 都有独立的 tx 和 rx 硬件。假设没有启用硬件流控制,那么如果你可以 tx OK,你应该可以 rx。

我必须让打印机中断吗?- 好吧,在抢占式多任务处理程序上,通常使用中断驱动程序(或某些变体,例如完成时带有中断的 DMA),是的。

于 2012-10-08T14:05:27.053 回答
0

我已经连接了一台只有单向通信的打印机,这意味着我只需要发送数据而无需从打印机接收任何内容进行验证。

“......不需要收到任何东西......”可能是一个错误的假设。

你的打印机应该有某种流量控制来防止数据溢出。字符显示器和行式打印机接收数据的速度通常比显示或打印数据的速度要快。这些设备使用简单的通信协议,不具备任何重新传输丢失数据的功能。因此,当设备的接收缓冲区已满时,有流控制通知主机(暂时)停止发送数据。

EIA/RS-232 串行接口可以使用硬件(通常使用 CTS 控制线)或软件(嵌入数据,通常使用 XON 和 XOF 字符)进行单端流量控制。一旦配置了串口,Linux 串口驱动程序和线路规则使流控制对应用程序不可见。

是的,我的打印机在打印了大约 4000 字节时会挂起,所以我必须重新初始化它以清空其内置缓冲区。

这似乎证明您忽略了打印机提供的任何流量控制,并导致数据溢出。

现在我的问题是一旦我配置了一个 UART 端口。我必须启用或禁用传输或接收吗?

这不是突出的问题。您需要确定打印机需要什么样的流量控制,然后实施(即配置)它。

于 2012-10-08T23:18:20.257 回答