デフォルトの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

答え2

これにより、デフォルトで通信スタック全体を再実装する必要があります。特定のアドレスへの書き込みを通じて IBM PC パラレル・ポート・コントローラーで実行される操作は、メモリー・マッピング装置ではなく USB 装置のコントローラーにはまったく適用されません。

正直なところ、rioプロトコルがコードでどのように機能するかを理解してください。コードがコントローラメモリに直接書き込まれるすべての場所を、/dev/usb/lp0を使用して正しい操作を実行するコードに置き換えることが唯一の方法です。 Linuxカーネルはlpインタフェースを文書化するので、そうではありません。それioctl難しいですが、おそらく正しいことを自分で見つけなければなりません。

私が直接使ったことはありませんが(必要なこともありません)自由 1284これを簡単に作成でき、好みのオペレーティングシステムのパッケージマネージャから簡単にインストールできます。

通常、これを完了すると、次の操作を実行できません。それ既存のコードがたくさん残っています。 rio.cppをチェックしてください。コードは、単にPCハードウェアについてもはや誤った仮定をします。その代わりに、実際にLinuxのLPポートドライバインフラストラクチャを使用すると、同じプログラムがx86 PC、Linuxを実行するMacBook、Android携帯電話(カーネルでlpが有効になっていると仮定)で実行されることを保証できますが、実際にはこれが本当であると想像するできます。 )とRaspberryPi:IBM PCハードウェアだけでなくLinuxでも動作しなくなりました。

それは価値がありますか?おそらくそうではありません。パラレルポート時代のMP3プレーヤーは、チップが許容可能なMP3ビットレートも処理できなかったため音が不便でした(64kb/sステレオが「高品質」であることを想像できますか? 不気味になります。できるかどうかは、128kb / s、まだかなり悪いレベルです。)そして、内部メモリの量は許容可能な品質のオーディオ関連量を保存できないからです。パラレルポートを介して関連量のデータを転送することはありません!
彼らは朝食でバッテリーを食べ、ユーザーインターフェイスは非常に粗雑です。

今、私はこれがあなたが余裕がある唯一のMP3プレーヤーであるので、これをしないとほとんど確信しています。あなたはすでにUSB-LPTアダプタを購入しており、それは通常少なくとも「新しい」MP3プレーヤーと同じくらい高価です。プレイヤー自体がかなり古いですが)。
それでは歴史的理由や香水を呼び起こす理由でこのことをしているかもしれませんが、私が判断する対象は誰ですか?

関連情報