3

私は socat を使用して、いくつかの仮想シリアル ポートを作成しています。1 つは単純な C プログラム (termios を使用) で接続し、もう 1 つは Ardupilot Mega Planner (RC 用) というプログラムを使用して接続したいと考えています。ただし、Planner は仮想ポート (/dev/pts の下にリストされている) を認識せず、tty デバイスと /dev/serial デバイスのみを認識します。これを機能させるには、ある種の特別なマウントを行う必要がありますか? または、私が試すことができる回避策はありますか?既存のシリアルポート (ttyS0 など) を「リンク」しようとしましたが、そのようなもの (仮想ポートから実ポート、実ポートから実ポート) を試みると、「不適切な ioctl」エラーが発生します。何か案は?

編集: プログラム (Mission Planner) のソース コードを表示すると、すべての /dev/ttyS* デバイス、/dev/serial/by-id/* デバイスのみを「認識」(またはポートを追加) しているようです。デバイス、/dev/USB0、および /dev/ACM0。そのため、ソース コードを編集するか、ttyS* ポートを「検証」する方法を見つける必要があります。Mission Planner は、S1 または S0 以外の ttyS* デバイスには接続しないようです。何か案は?どういうわけか、それらが正しく構成されていないためだと感じています。

編集 2: ようやく ArdupilotMega Planner のソース コードを入手し、/dev/pts/ のデバイスが含まれるように変更しました。しかし、私はまだ同じ問題を抱えています。Planner がポートを開くと、何らかの問題が発生します。プログラムが接続できるようにするために、すぐに確認/変更する必要がある設定はありますか? 研究に行き、シリアルポート通信をより完全に理解しようとしています...

4

3 に答える 3

2

そうです、アカウントを持っていないため、回答にコメントできないことがわかりました。とにかく、このコマンドを試してください:

socat PTY,link=/dev/ttyS10 PTY,link=/dev/ttyS11

プログラムを ttyS10 と ttyS11 にリンクします。

于 2012-07-25T18:26:39.013 に答える
2

私は同じ問題を抱えていて、TCP経由でシリアルのものを送信することで解決しました:

socat tcp-l:5760 /dev/YOURPORT,raw,echo=0,bHEREBAUDRATE

次に、Misson プランナーで「TCP」、サーバー: 127.0.0.1、ポート: 5760 を選択します。

この方法で、エミュレートされたシリアル ポートに正常に接続できます。

于 2013-12-18T07:39:28.557 に答える
0

ttyS10 以上など、上位の ttyS にリンクしようとしましたか。これらは通常、何にも割り当てられていません。編集:また、シリアルポートを作成するためにどのコマンドを使用していますか

于 2012-07-25T14:51:05.093 に答える