使用Python将命令参数发送到串行端口

时间:2012-08-01 16:09:28

标签: python serial-port hex pyserial

我正在使用python的pySerial库与机器通信(月球光度计,如果你必须知道的话)。机器内置了可以通过com /串口发送与这些场景对应的特定十六进制值的方案。例如,以下代码适用于机器中的“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场景中有一个由命令'\ x02'激活的bult。我的问题是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 

1 个答案:

答案 0 :(得分:2)

以下对s.write()的调用与您在Hyperterminal上发送的内容相同:

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

一般解决方案取决于角度的编码方式。我无法从您的示例中确定编码。