Enviar parámetros de comando al puerto serie usando Python
serial-port hex (1)
La siguiente llamada a s.write()
sería la misma que la que está enviando en Hyperterminal:
s.write(''/x02/x30/x34/x3b/x30/x3f/x3a/x3d/x3b/x03'')
La solución general dependerá de cómo estén codificados tus ángulos. No puedo determinar la codificación de tu ejemplo.
Estoy usando la biblioteca pySerial de python para comunicarme con una máquina (fotómetro lunar, si es necesario). La máquina ha incorporado escenarios a los que puedo llamar enviando valores hexadecimales específicos correspondientes a esos escenarios a través de un puerto com / serial. Por ejemplo, el siguiente código funciona bien para el "Park secnario" en la máquina.
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
El código anterior funciona según lo previsto y la máquina responde a estos comandos. Sin embargo, hay un bult en el escenario Goto que se activa con el comando ''/ x02''. Mi problema es que el comando goto toma los ángulos horizontales y verticales como parámetros también en este formato Ir a donde xxxx y aaa son los dos ángulos. ¿Cómo paso esos parámetros en mi comando s.write ()? Lo he intentado: escribir (''/ x02 xxxx yyyy'') que no parece funcionar. ¿Estoy haciendo algo mal al pasar los parámetros? El comando funciona bien cuando uso hyperterminal (en modo hexadecimal) con el siguiente código:
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
EDITAR: Aquí hay un ejemplo del comando ''Park Scenario'' enviado usando hyperterminal, por las dudas.
8/1/2012 12:14:56.649 [TX] - 11
8/1/2012 12:15:07.962 [RX] - 01