
テスト中のデバイス(DUT)があり、以下を使用します。パワーアナライザデータロガーのデータを使用します/dev/ttyUSB0
。
問題は、DUTがデータを収集するために使用するワークステーションから離れていますが、同じネットワーク内でUSB経由でパワーアナライザに直接接続されている2番目のPCを使用する必要があることです。 USBプロキシおよび「プロキシ」システムへのSSH接続USB測定システムへのシンボリックリンクを作成します。
上の図では、最初のPCからストリームを読み取るプログラムが違いを認識しないように、最初のPCが直接接続されている/dev/ttyUSB0
2番目のPCにどのようにアクセスしますか?
答え1
socat
ここで働くこともできます。
2番目のPCでは、socat
データをリッスンし/dev/ttyUSB0
てそれをTCPポートに供給できます。たとえば、次のようになります。
socat /dev/ttyUSB0,raw,echo=0 tcp-listen:8888,reuseaddr
その後、最初のPCでsocatを使用して2番目のPCに接続し、疑似端末のアプリケーションにデータを提供できます/dev/ttyVUSB0
。
socat PTY,raw,echo=0,link=/dev/ttyVUSB0 tcp:<ip_of_pc2>:8888
これはテストされておらず、socat
多くのオプションをサポートしているため、調整が必要な場合があります。
答え2
ser2net
とを組み合わせて使用できますsocat
。たとえば、シリアルポートを介してRaspberry Piに接続されたロボットがあります。 Raspberry Piは私のローカルネットワーク(2台目のコンピュータ)に接続されています。私のラップトップは同じローカルネットワーク(最初のコンピュータと同じ)に接続されています。次に、ser2netを使用して2番目のPCでTCPを介してシリアルポートを転送し、socat
最初のPCで使用されるプロキシシリアルデバイスファイルを作成しました。
この設定はあなたにも適しています。提案されたソリューション:
ステップ1:2台目のPCにser2netパッケージをインストールします(下の画像を参照)。
sudo apt-get install ser2net
ser2netはTCPポートでリッスンし、TCPポートを介してシリアルポート間でデータを転送できます。設定ファイルを使用して「プロキシ」を生成するシリアルポートを設定できます/etc/ser2net.conf
。
ステップ2:2台目のPCでser2netを設定する
たとえば、ボーレート/dev/ttyACM0
で接続されたデバイスがあり、115200
それを localhost ポート 3333 で提供する場合は、次の行を追加できます。/etc/ser2net.conf
3333:raw:0:/dev/ttyACM0:115200,remctl
構成ファイルを作成したら、2台目のPCで実行してser2netを起動します。
ser2net
または(すでに実行している場合は、次のように再起動してください)
/etc/init.d/ser2net restart
ここで重要な点の1つはremctlオプションです。これにより、クライアント(図の最初のPC)がデバイスに接続し、シリアル接続オプションを自由に選択できます。このように、シリアル通信はデータ収集ワークスペースの観点から完全に透明であると考えています。バラより詳しくはこちらをクリック。
ステップ3:データ収集ワークステーション(最初のPC)にプロキシシリアルデバイスファイルを設定する
(socatがない場合、sudo apt-get install socat
)
socat
最後に、tcpポートを受信する最初のPCの端末にプロキシシリアルポートを作成します。
socat pty,link=$HOME/MyProxySerialPort,waitslave tcp:$ip:$port,forever,reuseaddr,keepalive
この例では、(またはip=<2nd-PC-IP-address>
2台目のコンピュータで設定したときに選択したport=3333
項目)です。/etc/ser2net.conf
ステップ4:MyProxySerialPortに接続する
$HOME/MyProxySerialPort
これで、最初のPCでデバイスへのシリアル接続を正常に開くことができます。
このブログ記事では、この設定に関する追加情報も提供します。http://techtinkering.com/2013/04/02/connecting-to-a-remote-serial-port-over-tcpip/
答え3
シンボリックリンクを使用するLinuxカーネルで/dev/バス/usb/BUS_ID/DEV_ID到着/dev/char/基本:補助 ソカット不適切なIOCTLエラーのため、そのデバイスを開けません!
したがって、この方法はUSBデバイスでは直接動作しないようです。
頑張ったうーんこれはより近い実装ですが、古いカーネルでのみサポートされています。
私の解決策はPCSC-liteを介して接続されたカードリーダーに関するものなので、環境変数を使用するより良い解決策があります。libpcsclite顧客。
export PCSCLITE_CSOCK_NAME=$HOME/.pcscd.comm
これにより、別のUnixドメインソケットを指定できます。以下を使用して、リモートホストのリーダーソケットに転送できます。ソカット:
カードリーダーを交換するには、ホストシステムでこのコマンドを実行します。
socat tcp:$CARD_READER_HOST:8888 UNIX-LISTEN:$PCSCLITE_CSOCK_NAME,fork
PCSCカードリーダーに接続されているCARD_READER_HOSTホストでこのコマンドを実行してください。
socat UNIX-CONNECT:/var/run/pcscd/pcscd.comm tcp-listen:8888,fork,reuseaddr