4

私はpythonのpySerialライブラリを使用してマシンと通信しています(知っておく必要がある場合は月光度計)。マシンには、com/serial ポート経由でそれらのシナリオに対応する特定の 16 進値を送信することで呼び出すことができるシナリオが組み込まれています。たとえば、次のコードは、マシンの「パーク シナリオ」に対して正常に機能します。

s.write('\x11') #s is my serial object, '\x11' is the command for the park senario
s.write('\x12') #'\x12' is the command for the TrackSun scenario

上記のコードは意図したとおりに機能し、マシンはこれらのコマンドに応答します。ただし、Goto シナリオには、コマンド '\x02' によって起動されるバルトがあります。私の問題は、goto コマンドがパラメーターとして水平角度と垂直角度を取り、この形式の GoTo で xxxx と yyyy が 2 つの角度であることです。s.write() コマンドでこれらのパラメーターを渡すにはどうすればよいですか。私は試しました: s.write('\x02 xxxx yyyy') 動作していないようです。パラメータを渡すのに何か問題がありますか? 次のコードでハイパーターミナルを(16進モードで)使用すると、コマンドは正常に機能します。

8/1/2012 11:37:36.048 [TX] - 02 30 34 3B 30 3F 3A 3D 3B 03 
8/1/2012 11:37:51.166 [RX] - 01 

編集: 念のため、ハイパーターミナルを使用して送信された「Park Scenario」コマンドの例を次に示します。

8/1/2012 12:14:56.649 [TX] - 11 
8/1/2012 12:15:07.962 [RX] - 01 
4

1 に答える 1

2

次の呼び出しs.write()は、ハイパーターミナルで送信しているものと同じです。

s.write('\x02\x30\x34\x3b\x30\x3f\x3a\x3d\x3b\x03')

一般的な解決策は、角度がどのようにエンコードされているかによって異なります。あなたの例からエンコーディングを判断できません。

于 2012-08-01T17:51:59.497 に答える