[pyar] Controlador de surtidores por TCP/IP
Python - CD Soft
python en cdsoft.com.uy
Mar Oct 4 12:09:50 ART 2011
El 04/10/2011 12:34, Marcelo Fernandez escribió:
> El día 4 de octubre de 2011 09:47, Python - CD Soft
> <python en cdsoft.com.uy> escribió:
>> El 04/10/2011 10:38, Marcelo Fernandez escribió:
>>> El día 4 de octubre de 2011 09:18, Python - CD Soft
>>> <python en cdsoft.com.uy> escribió:
>>>> Estimados, como están?
>>>>
>>>> Los molesto para consultarles los siguiente.
>>>>
>>>> Tengo que conectar mediante TCP/IP a un controlador de surtidor, y
>>>> enviarle
>>>> unos parámetros en hexadecimal para que este me devuelva una respuesta.
>>>>
>>>> Pienso usar el modulo socket, me podrían decir si esta bien al usar este
>>>> modulo, si hay algún otro, y cual es?
>>>>
>>>> Estuve probando un poco pero me da error, creo que es porque no le envió
>>>> los
>>>> datos en hexadecimal.
>>>>
>>>> Cualquier ayuda es bienvenida.
>>>>
>>>> Saludos.
>>>>
>>>> Gracias.
>>>>
>>>> Carlos.
>>>>
>>> Hola Daniel,
>>>
>>> Socket es un módulo de bastante bajo nivel que sólo te permite
>>> interactuar a nivel TCP, ¿tenés idea si maneja algún protocolo de
>>> internet o estándar para el control del dispositivo sobre TCP/IP? Se
>>> me ocurren telnet, ssh, http, etc.... python tiene módulos para todos
>>> esos y te ahorrás mucho trabajo implementándolos vos desde socket.
>>>
>>> Por otra parte, para manejarte con los datos "en hexadecimal", mirá el
>>> módulo struct.
>>>
>>> http://docs.python.org/library/struct.html
>>>
>>> Saludos
>> Gracias Marcelo por responder.
>>
>> Me pasaron un documento con el protocolo y dice "Se especifica a
>> continuación mensajería de PAM-PC para POS basado en protocolo Pos Service
>> para CEM44."
>>
>> Tambien me pasaron el software "Docklight Scripting" donde ingreso la ip y
>> el puerto y le envió la secuencia en hexadecimal y la PAM me responde.
>>
>> Voy a leer un poco de lo que me pasate.
>>
>> Gracias.
>>
> Hola Carlos (le pifié con el nombre antes, je),
>
> Uhm... viendo el software que tenés [1], lo más probable es que no
> haya protocolo más que enviar y recibir bytes "a pelo" estilo
> hyperterminal/minicom (pero en hexa, no en ascii) por el puerto TCP.
> Yo empezaría por establecer el socket TCP y enviar (socket.write()) y
> leer (socket.read()) la secuencia que tenés en hexa. La misma
> documentación de python tiene ejemplos [2], fijate el de "Echo client
> program" que es bien básico.
>
> Como dice Diego, sin meterte con struct podés usar strings estilo
> '\x00\xff' para hacer pruebas; la lectura asumo que la vas a hacer en
> bytes también, con lo cual por ahí tenés que usar el módulo binascii
> [3] para convertir desde/hacia hexa/ascii. Struct va un poco más allá
> y es más estructurado o rígido por así decirlo, pero en los casos que
> lo usé dependió de lo que había del otro lado.
>
> Por otra parte, usar twisted IMHO es un poco demasiado, al menos hasta
> no tener un prototipo funcionando, ya que Twisted tiene una curva de
> aprendizaje alta a cambio de rendimiento, y lo que vos necesitás es
> tener algo andando (de nuevo, IMHO).
>
> [1] http://www.docklight.de/udp_tcp_info.htm
> [2] http://docs.python.org/library/socket.html#example
> [3] http://docs.python.org/library/binascii.html
>
> Saludos
Gracias, Diego y Marcelo.
Voy a mirar lo que me pasaron y les cuento.
Marcelo, no le pifiaste, ya que mi segundo nombre es Daniel :)
Saludos.
More information about the pyar
mailing list