Linuxシステムのシリアルポートからデータを取得し、それをTCP/IPに変換してサーバーに送信する必要があります。これは難しいですか?基本的なプログラミングの経験はありますが、Linuxの経験はあまりありません。これを行うオープンソースアプリケーションはありますか?
socat を使用してSerial-over-LAN(SOL)接続を作成できます。 ttySを別のマシンに「転送」するために使用できるため、ローカルのマシンとして表示されるか、TCP/IPポート経由でアクセスできます。
必要なツールはすべて、最新のLinuxディストリビューションですでに利用可能です。
いくつかが指摘しているように、netcatを介してシリアルデータをパイプできます。ただし、接続があるたびに新しいインスタンスを再起動する必要があります。接続間でこれを維持するには、次の構成を使用してxinetdサービスを作成できます。
service testservice
{
port = 5900
socket_type = stream
protocol = tcp
wait = yes
user = root
server = /usr/bin/netcat
server_args = "-l 5900 < /dev/ttyS0"
}
/dev/ttyS0
を変更して、インターフェイスしようとしているシリアルデバイスに合わせてください。
Netcatでサーバーのポートを開き、リスニングを開始します。
nc -lvp port number
そして、シリアルポートを読んでいるマシンで、rootとしてnetcatで送信します:
nc <IP address> portnumber < /dev/ttyACM0
サーバーにデータを保存する場合は、データをテキストファイルにリダイレクトできます。
最初に、データを保存するファイルを作成します。
touch data.txt
そして、データの保存を開始します
nc -lvp port number > data.txt
私は数日前からこの問題に取り組んでいます。
私にとっての問題は VirtualBox /Ubuntuに由来していました。マシンに多数のUSBシリアルポートがあります。それらのいずれかをVMに割り当てようとすると、それらはすべて破壊されました。つまり、ホストと他のVMはUSBシリアルデバイスを使用できなくなりました。
私の解決策は、たまたまクローゼットの中にあるネットブックにスタンドアロンのシリアルサーバーをセットアップすることです。
私はser2netを試してみましたが、シリアルポートを回線に接続することはできましたが、remttyは機能しませんでした。ポートをVMのttyとして取得する必要があります。
socatは完全に機能しました。
ここには良い指示があります: