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 に答える