AlfredoSC   21-10-2021, 23:16
#1
Hola:

Conversando con Shell, ofrecí poner aquí mi proyecto en Python3, que es una migración que viene de gambas3, usando el puerto paralelo (que para muchas personas ya está "muerto", pero para otro grupo de gente es un puerto importante para obtener control de dispositivos externos.

Se anexa el archivo SC6928B_PP.py comprimido.
Archivos adjuntos
.zip
SC6928B_PP.zip (Tamaño: 3.79 KB Descargas: 4)

Es mejor saber un poco de todo, que todo de muy poco. Lo primero, garantiza la supervivencia humana.
tincho   22-10-2021, 12:14
#2
Hola Alfredo, gracias por compartir.
Un saludo.

1 Saludo.
AlfredoSC   22-10-2021, 20:26
#3
(22-10-2021, 12:14)tincho escribió: gracias por compartir
Hola Tincho y Shell

Bien, en el archivo python que envié, se coloca una palabra de no mas de 6 letras en el cuadro de texto (Texto a EnviarSmile. Digamos que pongo 'Alfred' y pulso el botón 'Enviar'

En el Display físico que tengo conectado al puerto paralelo, efectivamente sale la palabra: "ALFrEd", que son los caracteres que puedo convertir a segmentos.

Una segunda "tirada" al botón 'Enviar" provoca que en el display aparezca: "ALFrE", es decir se omitió la "d".

Usando el debugger de VSCode, paso a paso, encuentro que la letra "D", que la tengo definida como una constante llamada D1 = [0,1,1,1,1,0,1], (que son los segmentos de display a,b,c,d,e,f que deben encenderse o apagarse para formar la letra "d"), poniendo el cursor en dicha variable la pone como D1 = [0,0,0,0,0,0,0] y esa es la razón por la que no aparece en mi Display.

Cómo pudo mi código cambiar los datos de D1, ya que es una constante?
Así que busqué alguna pista de dónde pudo haber sucedido eso y no la encuentro.

Pensando que era un bug de VSCode, ahora ejecuto en consola:

python3 SC6928B_PP.py

Y corre exactamente igual, con el mismo problema. Se pierde la "d" de "ALFrEd"....

Yo le llamo a esos casos extraños "Un Torito" y a veces pasa varias semanas y hasta meses en que retomo el asunto y me pasa igual que a Shell y digo "yo hice esto, antes era un genio?"...ya tengo 63 años y no quito el dedo del renglón.....

Saludos a todos.
Última modificación: 22-10-2021, 20:26 por AlfredoSC.

Es mejor saber un poco de todo, que todo de muy poco. Lo primero, garantiza la supervivencia humana.
Shell   22-10-2021, 21:34
#4
Hola AlfredoSC.

Hace tiempo que no practico Tkinter para tener formularios.

¿ Puedo ejecutar el programa sin necesidad del hardware ?.

En la placa Asus Z370-P no tengo puerto paralelo, pero en la Gigabyte B450 Aorus M, si,
ya que mediante este puerto, cable adecuado y software, estuve haciendo transferencia de imágenes de disco Amiga al Pc.

Cable Paralelo Paradise Amiga

El adaptador con puerto serie y paralelo tuve que comprarlo ya que la placa no lo incorporaba.

Por ahora lo que parece que me falta es el modulo parallel que en Synaptic es python3-parallel
Cita:python3-parallel
pyparallel - module encapsulating access for the parallel port
versión: 0.2.2-4

No tiene dependencias. ¿ Necesito alguna cosa más ?.

Encontré este vídeo del manejo del puerto paralelo y Python3.



Saludos
Última modificación: 22-10-2021, 21:35 por Shell.

"El conocimiento es la mejor inversión que se puede hacer" - Abraham Lincoln
Shell   22-10-2021, 22:37
#5
Hay una larga lista de condicionales. Para ahorrar líneas puedes usar un diccionario.
Te muestro un ejemplo. Comparalo con la lista de sentencias if's.

Código:
# Sustitución de sentencias if y elif por diccionario

A11 = [1,1,1,0,1,1,1]
B1 = [0,0,1,1,1,1,1]
C1 = [1,0,0,1,1,1,0]
D1 = [0,1,1,1,1,0,1]
E1 = [1,0,0,1,1,1,1]
F1 = [1,0,0,0,1,1,1]
G1 = [1,1,1,1,0,1,1]
H1 = [0,1,1,0,1,1,1]
I1 = [0,1,1,0,0,0,0]

diccioletras = {'A':A11,'B':B1,'C':C1,'D':D1,'E':F1,'G':G1,'H':H1,'I':I1}
letras = ['A','G','D','E','C','H']

for indice in range(0,6):
    if letras[indice] in diccioletras.keys():
        bait = (diccioletras[letras[indice]])        
        print (diccioletras[letras[indice]])

Si lo copio y pego desde el VS Code lo hace con código html, fondos, colores.

Saludos
Última modificación: 22-10-2021, 22:55 por Shell.

"El conocimiento es la mejor inversión que se puede hacer" - Abraham Lincoln
AlfredoSC   24-10-2021, 03:27
#6
(22-10-2021, 21:34)Shell escribió: ¿ Puedo ejecutar el programa sin necesidad del hardware ?.

Hola Shell: Claro que si, porque mi programa en phyton no sensa si está presente o no dicho puerto ( y posiblemente debería hacerlo, pero hoy no es importante).
(22-10-2021, 21:34)Shell escribió: en Synaptic es python3-paralle

Es posible que sea el mismo que yo bajé de GITHUB (pyparallel-master) que por ser el primero que se me puso enfrente, es el que estoy usando aunque buscando en la web encontré otros 5 o 6 mas. Lo importante, creo es saber los requisitos previos y dependencias.

El pyparallel-master que yo usé, requiere la instalación de jython (con "j") y por supuesto de python 2.2 o superior.

permisos a parport0 con sudo chmod 666 /dev/parport0

y desligar parport0 de lp (impresora) con:

sudo modprobe -r lp

Con ésto ya se tiene la comunicación desde python al puerto paralelo y se puede usar una pequeña tablilla de LEDs, como muestro en la foto:
[Imagen: 0iTDdiI.jpg]

Saludos....

(22-10-2021, 22:37)Shell escribió: Para ahorrar líneas puedes usar un diccionario

Gracas Shell, funciona perfecto con tu sugerencia...me ahorré 40 líneas y da el mismo resultado!

Saludos....
Última modificación: 24-10-2021, 03:41 por AlfredoSC.

Es mejor saber un poco de todo, que todo de muy poco. Lo primero, garantiza la supervivencia humana.
Shell   24-10-2021, 11:36
#7
(24-10-2021, 03:27)AlfredoSC escribió: El pyparallel-master que yo usé, requiere la instalación de jython (con "j") y por supuesto de python 2.2 o superior.

Aunque parece que tengo python 2.7 en el sistema suelo usar solamente python3.
Ojo, que no es lo mismo python 2 que python 3. Que cambian cosas y lo hace algo incompatible.
 
(24-10-2021, 03:27)AlfredoSC escribió: Claro que si, porque mi programa en phyton no sensa si está presente o no dicho puerto ( y posiblemente debería hacerlo, pero hoy no es importante).

Ok. Smile

Saludos

"El conocimiento es la mejor inversión que se puede hacer" - Abraham Lincoln
  
Usuarios navegando en este tema: 3 invitado(s)
Powered By MyBB, © 2002-2024 MyBB Group.
Made with by Curves UI.