デフォルトのI / Oアドレス0x378の代わりに/ dev / usb / lp0を使用するように並列ソースを変更します。

デフォルトのI / Oアドレス0x378の代わりに/ dev / usb / lp0を使用するように並列ソースを変更します。

私はDiamond Rioという非常に古いMP3プレーヤーを持っています。 25ピンパラレルアダプタとパラレルインタフェースを備えています。 Debianパッケージのrioはデバイスと通信できるようです(https://packages.debian.org/sid/rio)しかし、古いプライマリI / Oアドレス0x278、0x378を使用するようにハードコードされています。

専用のパラレルポートを持つコンピュータが残っていません。 USB-パラレルアダプタを購入しましたが、デバイスは/dev/usb/lp0と表示されます。

現在存在しないハードコーディングされたレジスタアドレス0x278、0x378の代わりに新しい/dev/tty/lp0デバイスと対話するようにrioプログラム(ソースコード付き)を変更する簡単な方法はありますか?

ベストアンサー1

最も簡単な方法は隙間埋めるものコードから。オーバーライドされた関数を指すように rio.cpp のOUTPORT定義を変更します。INPORT

BASE_PORT(デフォルトは0x378)に書き込むのは、USBエミュレートデバイスに書き込むのと同じくらい簡単です。

ただし、ステータスポート(データは一度に0.5バイトずつデバイスからホストに受信されます。詳細については、rio.txtを確認してください)を読むのは難しいかもしれません。実際のパラレルポートの状態は、USBアダプタによって(再)解釈される可能性があるためです。 。そして、まだ制御ポートにアクセスする方法を見つける必要があります。アダプタは、ビットタッピングではなく印刷用に設計されています。

別のオプションはPCIパラレルポートカードです。

または、Arduinoなどの他のレイヤーを追加し、プログラム-> USB-> Arduino->並列に移動します。 Arduinoは接続方法によってバイトだけを渡すので、Firmadataライブラリで十分です(Arduinoでプログラムする必要はありません)。しかし、そうでなくてもArduino用に書くプログラムは非常に簡単です。

以前はArduino用のDB25シールドがありましたが、幸運にも見つけることができます。しかしArduino+DB25イノベーションうまく機能し、プロトタイプを作成できます。

私の提案は次のとおりです。 rioのソースコードにシムを追加してUSB経由でArduinoと通信し、並列ラインを直接読み書きできますOUTPUTINPORT

おすすめ記事