Python - Emulador de teclado

 
Vista:

Emulador de teclado

Publicado por alondra_n (4 intervenciones) el 26/07/2018 19:53:57
Tengo conectados dos ordenadores, el primero con suse y utilizo la salida usb para enviar la información. Después un conversor usb/rs232 y conectado al segundo PC con Windows. En el segundo tengo el cursor en el wordpad. Lo que quiero hacer es enviar caracteres desde el primero y que se escriban en el segundo. Tal como envio la información sale bien y llega al segundo pero se queda esperando a ser leida ya que no es interpretada como una pulsación de un teorico teclado.
Supongo que el problema es la forma de encapsular los caracteres que envio pero no doy con el fallo. Alguna idea?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
# -*- coding: utf-8 -*- 
import serial
import time
 
 
puerto   = serial.Serial(port = '/dev/ttyUSB0',
                         baudrate = 9600,
                         bytesize = serial.EIGHTBITS,
                         parity   = serial.PARITY_NONE,
                         stopbits = serial.STOPBITS_ONE)
 
try:
    puerto.write('Hola mundo'.encode('ascii'))
    #puerto.write(b'Hola mundo\r\n') 
    time.sleep(1)
    puerto.close()
 
except serial.SerialException:
    print('Puerto no disponible')
 
except serial.portNotOpenError:
    print('No se puede abrir el puerto')
    print('Fin programa')
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de kip
Val: 1.120
Bronce
Ha mantenido su posición en Python (en relación al último mes)
Gráfica de Python

Emulador de teclado

Publicado por kip (257 intervenciones) el 26/07/2018 20:52:55
Hola, puedes intentar enviar el retorno de carro respectivo:

1
puerto.write('Hola mundo'.encode('ascii') + '\r\n')
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Emulador de teclado

Publicado por alondra_n (4 intervenciones) el 26/07/2018 21:12:01
Me da fallo por intentar concatenar bytes con str.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de kip
Val: 1.120
Bronce
Ha mantenido su posición en Python (en relación al último mes)
Gráfica de Python

Emulador de teclado

Publicado por kip (257 intervenciones) el 27/07/2018 14:52:12
Tienes razón, al hacerel encode tu objeto str se transforma en bytes, entonces intenta de estas dos formas:

1
puerto.write('Hola mundo\r\n'.encode('ascii'))

1
puerto.write('Hola mundo\r\n')

Con codificar y sin codificar.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Emulador de teclado

Publicado por alondra_n (4 intervenciones) el 27/07/2018 17:56:33
Ya lo intenté así pero me lo envía como cadena de caracteres, de hecho si leo el puerto com de Windows los datos llegan. Pero lo que quiero es enviarlos como pulsaciones de teclas y que se escriban donde yo tenga el cursor. Supongo que es un error en la forma de encoder los datos. Estoy con la librería binascii a ver si tengo suerte.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 23
Ha disminuido su posición en 3 puestos en Python (en relación al último mes)
Gráfica de Python

Emulador de teclado

Publicado por Cesar (9 intervenciones) el 27/07/2018 18:13:57
Hola.

Tu informacion la estas enviando bien..

De hecho, tu misma te contestaste en tu primer mensaje "la informacion se queda esperando ser leida" (WordPad no puede leer el puerto, y nunca lo hara).

Lo que transmites por el puerto serie son bytes de un string. En otras palabras, lo que estas transmitiendo es una cadena.

Lo que tienes que hacer, es hacer otro programa, que radique en el equipo receptor de fondo (tipo servicio de Windows), lea el puerto, convierta ese string a sus equivalente codigos de teclado, y envie dichos codigos a la ventana que tenga el foco (en este caso, WordPad).

Es el mismo principio que, por ejemplo, si hicieras un programa que lea una bascula digital. Las basculas digitales todo el tiempo envian la informacion por el puerto en forma de cadena, solo hay que leer el puerto.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Emulador de teclado

Publicado por alondra_n (4 intervenciones) el 27/07/2018 18:22:05
Pues que faena. No existirá una forma de enviar los datos en hexacesimal o configurar el usb como salida de un teclado para que Windows crea que lo que tiene conectado es un teclado?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar