2009-07-10 42 views
0

上のシリアルポートのために書かれたコードを使用して、私はラザロ/デルファイからアクセスする必要がUSBカードリーダーを持っています。USBポート

SDKはVB6で書かれ、シリアルのポートと通信するので、WindowsではUSBポートをシリアルポートにマップするドライバをインストールします。

私は(同じコードがLinux上で動作するように、例えば)そのステップをスキップしたいのですが、私はUSBプロトコルに精通していないので、私はそれがシリアル1にマッピングする方法を知りません。

VB6コードは、各キャラクタを個別に(シリアル、つまり、シリアル)送信し、USBインターフェイスはデータのストリームを送信できます。

バイト単位で送信するか、コマンドを連結して一度に送信する必要がありますか?とにかくコンセプトはまったく違うのですか?

答えて

1

USBデバイスがCDCであれば、Linuxは自動的にシリアル通信デバイスとして検出します。あなただけの/ dev/ttyACM0(または何でも)を開いて、それを読み取り/書き込みすることができます。この場合

いずれにしても、シリアル通信デバイスとしてLinuxでUSBデバイスが検出された場合は、そのデバイスを(/ dev /を介して)開いて、シリアルデバイスと同じように扱います(ただし設定を心配する必要はありませんボーレート)。

そして、あなたのDelphiコードは「一度に文字」シリアルデバイスにデータを送信する必要がない理由はありません - あなたも、Delphiで全体のパケットを書くことができるはずですが。これは、私がシリアルポート経由でPTZ (Pan-tilt-zoom) dome camerasを制御したときにやったことです。

デバイスがLinuxのシリアルポートとして検出されない場合、インストールされている/ dev /デバイスを開き、標準のファイルI/O(read()/ write()を使用してデバイスにアクセスするだけで、 )。ここでも、一度にコマンド全体を書きます。

1

USBプロトコルはシリアルポートとはまったく異なります。これは、Linuxに適切なUSBシリアルドライバをインストールし、同じシリアルプロトコルを使用するのが最も簡単な方法です。あなたのデバイスで動作するドライバがすでに存在している可能性があります。

+0

私はプロトコルがまったく違うと思っていましたが、ハードウェアアダプタがあるので、あまりにも違うとは思っていませんでした。 私はLinuxのドライバを探しますが、それでも最適な解決策ではないため、Windowsに別のドライバを書き込む必要があります。 とにかく、私が望んでいた答えではないのに、すでに返信してくれてありがとう。 :) – lyle

関連する問題