私は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と通信し、並列ラインを直接読み書きできますOUTPUT
。INPORT