4

我正在使用 python 的 pySerial 库与机器通信(如果你必须知道,月球光度计)。这台机器内置了一些场景,我可以通过 com/serial 端口发送与这些场景相对应的特定十六进制值来调用这些场景。例如,以下代码适用于机器中的“Park secnario”。

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 场景中有一个 bult,它由命令 '\x02' 激活。我的问题是 goto 命令也以这种格式 GoTo 将水平和垂直角度作为参数,其中 xxxx 和 yyyy 是两个角度。我如何在我的 s.write() 命令中传递这些参数。我试过: s.write('\x02 xxxx yyyy') 似乎不起作用。我在传递参数时做错了吗?当我使用带有以下代码的超级终端(以十六进制模式)时,该命令可以正常工作:

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 回答