GAMBAS Almenos es basic- Puerto Serie - PIC16F628A
5 participantes
Página 2 de 2.
Página 2 de 2. • 1, 2
Re: GAMBAS Almenos es basic- Puerto Serie - PIC16F628A
Esta parte es la que envia los datos a los seis servos upps, ¿de cuál fumé? si son solo 5
- Código:
'************************************************************************************************
PUBLIC SUB cmdAtras_Click()
IF ttyUSB.Status = Net.Inactive THEN
Message("Primero abre el Puerto")
ELSE
PRINT #ttyUSB, "a"
ToolButton2.Background = &FF0000&
ToolButton2.Text = "A"
WAIT 0.3 'Este retardo es para el parpadeo, entre colores, pero no tiene mucho caso
ToolButton2.BackColor = &00FF00&
ToolButton2.Text = ""
ENDIF
END
PUBLIC SUB cmdAdelante_Click()
IF ttyUSB.Status = Net.Inactive THEN
Message("Primero abre el puerto")
ELSE
PRINT #ttyUSB, "11"
ToolButton1.Background = &FF0000&
ToolButton1.Text = "1"
WAIT 0.3
ToolButton1.Background = &00FF00&
ToolButton1.text = ""
ENDIF
END
'**************************************************************************
'Control del primer servo
'Para el envio de datos, fue probada la tarjeta con varios valores
'en el tiempo medido por osciloscopio, cuando la tarjeta es reiniciada
'con escala de 0.5ms por division, el tiempo en alto esta establecido a 1500ms
'tomado este valor como referencia, el slider y el spinbox, tienen el valor de
'250 de forma inicial, ya fueron medidos los tiempos de forma repetida, para
'verificar la presición del numero de datos enviados a la tarjeta.
PUBLIC SUB spnboxS1_Change()
DIM maximo AS Integer
DIM i AS Integer
sldS1.Value = spnboxS1.Value
vfin1 = spnboxS1.Value
tempo = 0
tempo = Abs(vfin1 - vini1)
'TextArea2.Text = "Vini1=" & vini1 & " Vfin1= " & vfin1 & " ciclo= " & tempo
'wait 1
IF (vfin1 - vini1) < 0 THEN
IF ttyUSB.Status = Net.Active THEN
maximo = tempo
FOR i = 1 TO maximo
PRINT #ttyUSB, "AAA"
ToolButton2.Background = &FF0000&
ToolButton2.Text = "A"
WAIT 0.1 'Este retardo es importante, ya que la tarjeta no responde muy rápido
ToolButton2.BackColor = &00FF00&
ToolButton2.Text = ""
NEXT
maximo = 0
ELSE
ENDIF
ELSE
IF ttyUSB.Status = Net.Active THEN
maximo = tempo
FOR i = 1 TO maximo
PRINT #ttyUSB, "111"
ToolButton1.Background = &FF0000&
ToolButton1.Text = "1"
WAIT 0.1
ToolButton1.Background = &00FF00&
ToolButton1.text = ""
NEXT
maximo = 0
ELSE
ENDIF
ENDIF
vini1 = vfin1
tempo = 0
fTermine = TRUE
END
'**********************************************************************************
PUBLIC SUB sldS1_Change()
DIM maximo AS Integer
DIM i AS Integer
spnboxS1.Value = sldS1.Value
vfin1 = spnboxS1.Value
tempo = 0
tempo = Abs(vfin1 - vini1)
'TextArea2.Text = "Vini1=" & vini1 & " Vfin1= " & vfin1 & " ciclo= " & tempo
'WAIT 1
IF (vfin1 - vini1) < 0 THEN
IF ttyUSB.Status = Net.Active THEN
maximo = tempo
FOR i = 1 TO maximo
PRINT #ttyUSB, "A"
ToolButton2.Background = &FF0000&
ToolButton2.Text = "A"
WAIT 0.1
ToolButton2.BackColor = &00FF00&
ToolButton2.Text = ""
NEXT
maximo = 0
ELSE
ENDIF
ELSE
IF ttyUSB.Status = Net.Active THEN
maximo = tempo
FOR i = 1 TO maximo
PRINT #ttyUSB, "1"
ToolButton1.Background = &FF0000&
ToolButton1.Text = "1"
WAIT 0.1
ToolButton1.Background = &00FF00&
ToolButton1.text = ""
NEXT
maximo = 0
ELSE
ENDIF
ENDIF
vini1 = vfin1
tempo = 0
fTermine = TRUE
END
'***********************************************************************************
'Control del segundo servo
PUBLIC SUB spnboxS2_Change()
DIM maximo AS Integer
DIM i AS Integer
sldS2.Value = spnboxS2.Value
vfin2 = spnboxS2.Value
tempo = 0
tempo = Abs(vfin2 - vini2)
'Usese solo en caso de que olvide el cable de comicacion como a mi me paso :(
'TextArea3.Text = "Vini2=" & vini2 & " Vfin2= " & vfin2 & " ciclo= " & tempo
' WAIT 1
IF (vfin2 - vini2) < 0 THEN
IF ttyUSB.Status = Net.Active THEN
maximo = tempo
FOR i = 1 TO maximo
PRINT #ttyUSB, "B"
ToolButton3.Background = &FF0000&
ToolButton3.Text = "B"
WAIT 0.1 'Este retardo es importante, ya que la tarjeta no responde muy rápido
ToolButton4.BackColor = &00FF00&
ToolButton4.Text = ""
NEXT
maximo = 0
ELSE
ENDIF
ELSE
IF ttyUSB.Status = Net.Active THEN
maximo = tempo
FOR i = 1 TO maximo
PRINT #ttyUSB, "2"
ToolButton1.Background = &FF0000&
ToolButton1.Text = "2"
WAIT 0.1
ToolButton1.Background = &00FF00&
ToolButton1.text = ""
NEXT
maximo = 0
ELSE
ENDIF
ENDIF
vini2 = vfin2
tempo = 0
END
'**********************************************************************************
PUBLIC SUB sldS2_Change()
DIM maximo AS Integer
DIM i AS Integer
spnboxS2.Value = sldS2.Value
vfin2 = spnboxS2.Value
tempo = 0
tempo = Abs(vfin2 - vini2)
IF (vfin2 - vini2) < 0 THEN
IF ttyUSB.Status = Net.Active THEN
maximo = tempo
FOR i = 1 TO maximo
PRINT #ttyUSB, "B"
ToolButton2.Background = &FF0000&
ToolButton2.Text = "B"
WAIT 0.1
ToolButton2.BackColor = &00FF00&
ToolButton2.Text = ""
NEXT
maximo = 0
ELSE
ENDIF
ELSE
IF ttyUSB.Status = Net.Active THEN
maximo = tempo
FOR i = 1 TO maximo
PRINT #ttyUSB, "1"
ToolButton2.Background = &FF0000&
ToolButton2.Text = "1"
WAIT 0.1
ToolButton2.Background = &00FF00&
ToolButton2.text = ""
NEXT
maximo = 0
ELSE
ENDIF
ENDIF
vini2 = vfin2
tempo = 0
fTermine = TRUE
END
'+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
'Control del tercer servo
PUBLIC SUB spnboxS3_Change()
DIM maximo AS Integer
DIM i AS Integer
sldS3.value = spnboxS3.Value
vfin3 = spnboxS3.Value
tempo = 0
tempo = Abs(vfin3 - vini3)
IF (vfin3 - vini3) < 0 THEN
IF ttyUSB.Status = Net.Active THEN
maximo = tempo
FOR i = 1 TO maximo
PRINT #ttyUSB, "C"
ToolButton5.BackColor = &FF0000&
ToolButton5.Text = "C"
WAIT 0.1
ToolButton5.BackColor = &00FF00&
ToolButton5.Text = ""
NEXT
maximo = 0
ELSE
END IF
ELSE
IF ttyUSB.Status = Net.Active THEN
maximo = tempo
FOR i = 1 TO maximo
PRINT #ttyUSB, "3"
ToolButton6.BackColor = &FF0000&
ToolButton6.Text = "3"
WAIT 0.1
ToolButton6.BackColor = &00FF00&
ToolButton6.Text = ""
NEXT
maximo = 0
ENDIF
END IF
vini3 = vfin3
tempo = 0
fTermine = TRUE
END
PUBLIC SUB sldS3_Change()
DIM maximo AS Integer
DIM i AS Integer
spnboxS3.value = sldS3.Value
vfin3 = sldS3.Value
tempo = 0
tempo = Abs(vfin3 - vini3)
IF (vfin3 - vini3) < 0 THEN
IF ttyUSB.Status = Net.Active THEN
maximo = tempo
FOR i = 1 TO maximo
PRINT #ttyUSB, "C"
ToolButton5.BackColor = &FF0000&
ToolButton5.Text = "C"
WAIT 0.1
ToolButton5.BackColor = &00FF00&
ToolButton5.Text = ""
NEXT
maximo = 0
ELSE
END IF
ELSE
IF ttyUSB.Status = Net.Active THEN
maximo = tempo
FOR i = 1 TO maximo
PRINT #ttyUSB, "3"
ToolButton6.BackColor = &FF0000&
ToolButton6.Text = "3"
WAIT 0.1
ToolButton6.BackColor = &00FF00&
ToolButton6.Text = ""
NEXT
maximo = 0
ENDIF
END IF
vini3 = vfin3
tempo = 0
fTermine = TRUE
END
'***********************************************************************************************************
'Control del 4to servo
PUBLIC SUB spnboxS4_Change()
DIM maximo AS Integer
DIM i AS Integer
sldS4.value = spnboxS4.Value
vfin4 = spnboxS4.Value
tempo = 0
tempo = Abs(vfin4 - vini4)
IF (vfin4 - vini4) < 0 THEN
IF ttyUSB.Status = Net.Active THEN
maximo = tempo
FOR i = 1 TO maximo
PRINT #ttyUSB, "D"
ToolButton7.BackColor = &FF0000&
ToolButton7.Text = "D"
WAIT 0.1
ToolButton7.BackColor = &00FF00&
ToolButton7.Text = ""
NEXT
maximo = 0
ELSE
END IF
ELSE
IF ttyUSB.Status = Net.Active THEN
maximo = tempo
FOR i = 1 TO maximo
PRINT #ttyUSB, "4"
ToolButton8.BackColor = &FF0000&
ToolButton8.Text = "4"
WAIT 0.1
ToolButton8.BackColor = &00FF00&
ToolButton8.Text = ""
NEXT
maximo = 0
ENDIF
END IF
vini4 = vfin4
tempo = 0
fTermine = TRUE
END
PUBLIC SUB sldS4_Change()
DIM maximo AS Integer
DIM i AS Integer
spnboxS4.value = sldS4.Value
vfin4 = sldS4.Value
tempo = 0
tempo = Abs(vfin4 - vini4)
IF (vfin4 - vini4) < 0 THEN
IF ttyUSB.Status = Net.Active THEN
maximo = tempo
FOR i = 1 TO maximo
PRINT #ttyUSB, "D"
ToolButton7.BackColor = &FF0000&
ToolButton7.Text = "D"
WAIT 0.1
ToolButton7.BackColor = &00FF00&
ToolButton7.Text = ""
NEXT
maximo = 0
ELSE
END IF
ELSE
IF ttyUSB.Status = Net.Active THEN
maximo = tempo
FOR i = 1 TO maximo
PRINT #ttyUSB, "4"
ToolButton8.BackColor = &FF0000&
ToolButton8.Text = "4"
WAIT 0.1
ToolButton8.BackColor = &00FF00&
ToolButton8.Text = ""
NEXT
maximo = 0
ENDIF
END IF
vini4 = vfin4
tempo = 0
fTermine = TRUE
END
'***********************************************************************************************************
'control Servo 5
PUBLIC SUB spnboxS5_Change()
DIM maximo AS Integer
DIM i AS Integer
sldS5.value = spnboxS5.Value
vfin5 = spnboxS5.Value
tempo = 0
tempo = Abs(vfin5 - vini5)
IF (vfin5 - vini5) < 0 THEN
IF ttyUSB.Status = Net.Active THEN
maximo = tempo
FOR i = 1 TO maximo
PRINT #ttyUSB, "E"
ToolButton9.BackColor = &FF0000&
ToolButton9.Text = "E"
WAIT 0.1
ToolButton9.BackColor = &00FF00&
ToolButton9.Text = ""
NEXT
maximo = 0
ELSE
END IF
ELSE
IF ttyUSB.Status = Net.Active THEN
maximo = tempo
FOR i = 1 TO maximo
PRINT #ttyUSB, "5"
ToolButton10.BackColor = &FF0000&
ToolButton10.Text = "5"
WAIT 0.1
ToolButton10.BackColor = &00FF00&
ToolButton10.Text = ""
NEXT
maximo = 0
ENDIF
END IF
vini5 = vfin5
tempo = 0
fTermine = TRUE
END
PUBLIC SUB sldS5_Change()
DIM maximo AS Integer
DIM i AS Integer
spnboxS5.value = sldS5.Value
vfin5 = sldS5.Value
tempo = 0
tempo = Abs(vfin5 - vini5)
IF (vfin5 - vini5) < 0 THEN
IF ttyUSB.Status = Net.Active THEN
maximo = tempo
FOR i = 1 TO maximo
PRINT #ttyUSB, "E"
ToolButton9.BackColor = &FF0000&
ToolButton9.Text = "E"
WAIT 0.1
ToolButton9.BackColor = &00FF00&
ToolButton9.Text = ""
NEXT
maximo = 0
ELSE
END IF
ELSE
IF ttyUSB.Status = Net.Active THEN
maximo = tempo
FOR i = 1 TO maximo
PRINT #ttyUSB, "5"
ToolButton10.BackColor = &FF0000&
ToolButton10.Text = "5"
WAIT 0.1
ToolButton10.BackColor = &00FF00&
ToolButton10.Text = ""
NEXT
maximo = 0
ENDIF
END IF
vini5 = vfin5
tempo = 0
fTermine = TRUE
END
'***********************************************************************************************************
Última edición por maigke el Lun 7 Sep 2009 - 18:45, editado 1 vez
maigke- Asiduo del Foro
- Mensajes : 210
Fecha de inscripción : 12/04/2009
Edad : 46
Localización : Mexico
Re: GAMBAS Almenos es basic- Puerto Serie - PIC16F628A
La última parte del código borra los textareas y manda a posicionar al servo, aqui hay una parte importante con un ciclo while - wend, y tiene mucho que ver la bandera que puse en cada seccion de movimiento de servos, ya que sin esta bandera no se saldría de dicho ciclo.
- Código:
'Area de borrados de textAreas, cada text area solo contendra la info necesaria para su propio servo
PUBLIC SUB cmdBorrar_Click()
TextArea2.Text = ""
END
PUBLIC SUB Button2_Click()
TextArea3.Text = ""
END
PUBLIC SUB Button3_Click()
TextArea4.Text = ""
END
PUBLIC SUB Button4_Click()
TextArea5.Text = ""
END
PUBLIC SUB Button5_Click()
TextArea6.Text = ""
END
'Rutina de grabar las posiciones de los servos
PUBLIC SUB cmdGrabar_Click()
IF flag1 = FALSE AND flag2 = FALSE THEN
cmdGrabar.Text = "Grabar"
S1Pos1 = spnboxS1.Value
S2Pos1 = spnboxS2.Value
S3Pos1 = spnboxS3.Value
S4Pos1 = spnboxS4.Value
S5Pos1 = spnboxS5.Value
flag1 = TRUE
ELSE IF flag1 = TRUE AND flag2 = FALSE THEN
S1Pos2 = spnboxS1.Value
S2Pos2 = spnboxS2.Value
S3Pos2 = spnboxS3.Value
S4Pos2 = spnboxS4.Value
S5Pos2 = spnboxS5.Value
flag2 = TRUE
ELSE
Message.Error("Solo dos posiciones")
cmdGrabar.Text = "Borra"
S1Pos1 = 0
S1Pos2 = 0
S2Pos1 = 0
S2Pos2 = 0
S3Pos1 = 0
S3Pos2 = 0
S4Pos1 = 0
S4Pos2 = 0
S5Pos1 = 0
S5Pos2 = 0
flag1 = FALSE
flag2 = FALSE
END IF
END
PUBLIC SUB cmdHome_Click()
s1 = spnboxS1.Value
s2 = spnboxS2.Value
s3 = spnboxS3.Value
s4 = spnboxS4.Value
s5 = spnboxS5.Value
TextArea1.text = "Home ha sido selecionado con las siguientes
posiciones " & s1 & " " & s2 & " " & s3 & " "
& s4 & " " & s5
'TabStrip1.Action =
END
PUBLIC SUB ToolButton11_Click()
'Ir a home
'Colocamos una bandera que se llama fTermine que nos indica si un ciclo de envio de datos ya termino
' ahora preguntamos si los valores del spinbox y del valor dado como home son iguales
' esto pasa si un eje no lo mueves desde un inicio, en caso de ser cierto, pues entonces
' no hace nada, ya que si no se pone el if por alguna razon entra en un bucle infinito
' si los valores actuales del spinbox y de la pos de home no son iguales,
' mandamos a modificar ahora el valor del spinbox, enviando los correspondientes
' a través del puerto serial
fTermine = FALSE
IF (spnboxS1.Value <> s1) THEN
spnboxS1.Value = s1
WHILE fTermine = FALSE
WEND
END IF
fTermine = FALSE
IF (spnboxS2.Value <> s2) THEN
spnboxS2.Value = s2
WHILE fTermine = FALSE
WEND
END IF
fTermine = FALSE
IF (spnboxS3.Value <> s3) THEN
spnboxS3.Value = s3
WHILE fTermine = FALSE
WEND
END IF
fTermine = FALSE
IF (spnboxS4.Value <> s4) THEN
spnboxS4.Value = s4
WHILE fTermine = FALSE
WEND
END IF
fTermine = FALSE
IF (spnboxS5.Value <> s5) THEN
spnboxS5.Value = s5
WHILE fTermine = FALSE
WEND
END IF
'Ir a la posicion 1
'Ir a la posicion 2
'Regresar a home
END
maigke- Asiduo del Foro
- Mensajes : 210
Fecha de inscripción : 12/04/2009
Edad : 46
Localización : Mexico
Re: GAMBAS Almenos es basic- Puerto Serie - PIC16F628A
Ya casi esta listo!, bueno, ya dandole toques finales para que sea funcional mi prueba con Gambas, después de unos meses de estar trabajando con esto, pues la verdad ha sido bien satisfactorio, el ver que ya esta mas vivo el programa.
El código, se ha quedado como se muestra, solo que hemos hecho un pequeño trucaje al servo que mostre en fotos anteriores, puesto que se transporto el potenciometro del servo que lleva interno, a una parte externa, de estar forma se hizo, debido a que el mecanismo de gusano sinfin + corona, exigia dos cosas:
Lamentablemente, la corona que va con el gusano sin fin, al estar hecha de aluminio, y soportar una gran fuerza, pues, los dientes sufrieron los estragos, desgastandose, me comenta, Ruben, que sería mejor que dichos engranes fueran hechos de bronce, espero que consigamos una pieza pronto
El codigo fuente, hasta el momento, es el que presente en post anteriores, y el programa lo deje trabajando un buen de horas solo conectado con la tarjeta de control de servomotores y funciona de forma muy adecuada, detalles aun hay muchos, sin embargo, prodria decir, ¡Ya casí esta listo!
Falta el video donde se ve como se mueve el servo con el slider del GUI desarrollado, en este momento esta de subida.
El código, se ha quedado como se muestra, solo que hemos hecho un pequeño trucaje al servo que mostre en fotos anteriores, puesto que se transporto el potenciometro del servo que lleva interno, a una parte externa, de estar forma se hizo, debido a que el mecanismo de gusano sinfin + corona, exigia dos cosas:
- El servo pudiera dar vueltas completas y varías, debido a la relacion que hay entre los engranajes
- El posicionamiento del eje deberia ser exacto, con respecto a la horizontal que forma con la base.
Lamentablemente, la corona que va con el gusano sin fin, al estar hecha de aluminio, y soportar una gran fuerza, pues, los dientes sufrieron los estragos, desgastandose, me comenta, Ruben, que sería mejor que dichos engranes fueran hechos de bronce, espero que consigamos una pieza pronto
El codigo fuente, hasta el momento, es el que presente en post anteriores, y el programa lo deje trabajando un buen de horas solo conectado con la tarjeta de control de servomotores y funciona de forma muy adecuada, detalles aun hay muchos, sin embargo, prodria decir, ¡Ya casí esta listo!
Falta el video donde se ve como se mueve el servo con el slider del GUI desarrollado, en este momento esta de subida.
maigke- Asiduo del Foro
- Mensajes : 210
Fecha de inscripción : 12/04/2009
Edad : 46
Localización : Mexico
Re: GAMBAS Almenos es basic- Puerto Serie - PIC16F628A
Bueno ya es de día!! y por fin ha subido el video donde se muestra como podemos controlar el servomotor con Gambas usando el Puerto Serial, bueno por el momento solo es un servo, pero mas adelante colocaremos mas servos para mover un mecanismo. y bueno creo que con esto doy terminado el hilo, y en la parte de proyectos continuaré con las siguientes partes y por menores.
Aqui coloco los fuentes para instalar, solo recuerda que debes tener el runtime de Gambas 2 en tu caja Linux y la version que trabajo es 2.8 de Gambas
Download testSerial_Paquetes.tar.bz2 from FileFactory.com
El hosting tiene ads y cosillas de esas, pero como usamos linux, pues no nos preocupemos
saludos!!!
Aqui coloco los fuentes para instalar, solo recuerda que debes tener el runtime de Gambas 2 en tu caja Linux y la version que trabajo es 2.8 de Gambas
Download testSerial_Paquetes.tar.bz2 from FileFactory.com
El hosting tiene ads y cosillas de esas, pero como usamos linux, pues no nos preocupemos
saludos!!!
maigke- Asiduo del Foro
- Mensajes : 210
Fecha de inscripción : 12/04/2009
Edad : 46
Localización : Mexico
Re: GAMBAS Almenos es basic- Puerto Serie - PIC16F628A
Buenísimo el proyecto.
Con tu permiso he puesto las fuentes en una nueva carpeta para cosas en gambas en la sección descargas.
Y ya nos contarás como evoluciona el tema...
Saludos.
Con tu permiso he puesto las fuentes en una nueva carpeta para cosas en gambas en la sección descargas.
Y ya nos contarás como evoluciona el tema...
Saludos.
Re: GAMBAS Almenos es basic- Puerto Serie - PIC16F628A
Claro que si!!!! y muchas gracias por colocar este pequeño trabajo en la zona de descargas!!, espero sea de gran ayuda para la comunidad el pequeño aporte que hicimos, y de cualquier forma seguiré trabajando en el, con base en las fuentes ya publicadas, y pues seguire dando los pormenores, mil gracias nuevamente, y saludos desde México!!
Pd. Por cierto este mes, es el mes de la Patria Mexicana!, mi patria
Pd. Por cierto este mes, es el mes de la Patria Mexicana!, mi patria
maigke- Asiduo del Foro
- Mensajes : 210
Fecha de inscripción : 12/04/2009
Edad : 46
Localización : Mexico
Re: GAMBAS Almenos es basic- Puerto Serie - PIC16F628A
Hola que tal, ya nadamas, para comentar que al rato subiré las modificaciones al código, puesto que tiene unos bug's, no muy graves, pero funca muy bien
saludos!!
saludos!!
maigke- Asiduo del Foro
- Mensajes : 210
Fecha de inscripción : 12/04/2009
Edad : 46
Localización : Mexico
Prueba Final GAMBAS-Puerto Seriel - PIC16F628A
Bueno aqui estan ya las correcciones
http://www.filefactory.com/file/a0a2a6h/n/mmm-testserial_0_0_5_orig_tar_gz
y bueno un video de como funciona ya este programa
Para grabar el escritorio use gtk-RecordMyDesktop y para los acercamientos use un efecto de Compiz Fusion
para convertir los videos a .AVI que genera el gtk-RecordMyDesktop use la consola con el mencoder, muy bueno, muy rápido y sencillo, el comando usado fue
mike@mike:~$ mencoder testRS232viaSSh.ogv -o testRS232viaSSh.avi -oac mp3lame -ovc lavc
Saludos!!
http://www.filefactory.com/file/a0a2a6h/n/mmm-testserial_0_0_5_orig_tar_gz
y bueno un video de como funciona ya este programa
Para grabar el escritorio use gtk-RecordMyDesktop y para los acercamientos use un efecto de Compiz Fusion
para convertir los videos a .AVI que genera el gtk-RecordMyDesktop use la consola con el mencoder, muy bueno, muy rápido y sencillo, el comando usado fue
mike@mike:~$ mencoder testRS232viaSSh.ogv -o testRS232viaSSh.avi -oac mp3lame -ovc lavc
Saludos!!
maigke- Asiduo del Foro
- Mensajes : 210
Fecha de inscripción : 12/04/2009
Edad : 46
Localización : Mexico
Re: GAMBAS Almenos es basic- Puerto Serie - PIC16F628A
Si alguien no podido instalar por dependencias en Ubuntu los paquetes que he puesto, ya que requerie que gambas 2 este instalado, pues aqui les dejo de donde bajar el Run-Time, para que corran los programas que se han puesto, gracias!!!
http://packages.ubuntu.com/search?keywords=gambas2-runtime
http://packages.ubuntu.com/search?keywords=gambas2-runtime
maigke- Asiduo del Foro
- Mensajes : 210
Fecha de inscripción : 12/04/2009
Edad : 46
Localización : Mexico
Re: GAMBAS Almenos es basic- Puerto Serie - PIC16F628A
He actualizado el archivo en la zona de descargas a los últimos cambios en tu proyecto.
Pues definitivamente tengo algo raro en mi puerto serie.
Viendo tu video veo que el programa no se te bloquea al abrir el puerto, pero a mí sí... eso me pasa también con el ejemplo que viene con Gambas.
El puerto funciona, pero la interface gráfica se queda bloqueada hasta que se cierra el puerto...
Me salen los mensajes de puerto abierto, etc.. pero una vez que se cierra.
La ventana se bloquea justo en el momento de abrir el puerto. y no puedo hacer nadfa en ella, ningún botón parece funcionar, pero si le doy al botón de cerrar el puerto pués se cierra sin problemas y entonces me muestra los mensajes que haya.
Alguna idea de porqué me puede estar pasando esto?
Pues definitivamente tengo algo raro en mi puerto serie.
Viendo tu video veo que el programa no se te bloquea al abrir el puerto, pero a mí sí... eso me pasa también con el ejemplo que viene con Gambas.
El puerto funciona, pero la interface gráfica se queda bloqueada hasta que se cierra el puerto...
Me salen los mensajes de puerto abierto, etc.. pero una vez que se cierra.
La ventana se bloquea justo en el momento de abrir el puerto. y no puedo hacer nadfa en ella, ningún botón parece funcionar, pero si le doy al botón de cerrar el puerto pués se cierra sin problemas y entonces me muestra los mensajes que haya.
Alguna idea de porqué me puede estar pasando esto?
Re: GAMBAS Almenos es basic- Puerto Serie - PIC16F628A
Una disculpa, pero no habia entrado antes al foro, debido a cuestiones de trabajo.
Es posible que Gambas te este causando algun tipo de conflicto con el servidor X, Xorg supongo, verifica en los procesos que no se quede zombie de alguna forma el proceso que se inicie con gambas, mmm una cosa, cuando usas el puerto serie, lo has intentado como root?
bueno ahora no se que distro tengas instalada en tu caja linux, pero supongo que es ubuntu, oye y si intentas desde una instalción limpia, desde el virtualbox, ya que este te da la opcion de acceso al puerto serial, en mi caso tengo el virtualbox 3.0.4.
Otra opcion que pudieras intentar es una ejecucion por pasos, colocando breakpoints en las lineas de código de abrir el boton
mira aqui
Espero te sea de utilidad la informacion que te envio!!!.
Saludos
Gracias!!!Pikitin escribió:He actualizado el archivo en la zona de descargas a los últimos cambios en tu proyecto.
Pikitin escribió:
El puerto funciona, pero la interface gráfica se queda bloqueada hasta que se cierra el puerto...
Me salen los mensajes de puerto abierto, etc.. pero una vez que se cierra.
La ventana se bloquea justo en el momento de abrir el puerto. y no puedo hacer nadfa en ella, ningún botón parece funcionar, pero si le doy al botón de cerrar el puerto pués se cierra sin problemas y entonces me muestra los mensajes que haya.
Alguna idea de porqué me puede estar pasando esto?
Es posible que Gambas te este causando algun tipo de conflicto con el servidor X, Xorg supongo, verifica en los procesos que no se quede zombie de alguna forma el proceso que se inicie con gambas, mmm una cosa, cuando usas el puerto serie, lo has intentado como root?
bueno ahora no se que distro tengas instalada en tu caja linux, pero supongo que es ubuntu, oye y si intentas desde una instalción limpia, desde el virtualbox, ya que este te da la opcion de acceso al puerto serial, en mi caso tengo el virtualbox 3.0.4.
Otra opcion que pudieras intentar es una ejecucion por pasos, colocando breakpoints en las lineas de código de abrir el boton
mira aqui
- Código:
IF ttyUSB.Status = Net.Active THEN
CLOSE ttyUSB
cmdAbreCierra.Text = "Abre"
ELSE
'Linea de parametros
ttyUSB.PortName = cmdPort.Text
'ttyUSB.PortName = txtPortText.Text
ttyUSB.Speed = cmdVelocidad.Text
ttyUSB.Parity = cmbParidad.Index
ttyUSB.DataBits = cmbDataBits.Text
ttyUSB.FlowControl = cmbControlFlujo.Index
ttyUSB.StopBits = cmbBitParo.Text
' TRY
ttyUSB.Open() '<---- Igual y aqui se trabe, yo trataba de poner un try, pero no le agarro aun :p
' IF ERROR THEN
' Message.Error(ERROR.text)
' TextArea1.Text = ""
' cmdAbreCierra.Text = "Abre"
' END IF
' END TRY
Check_Status()
TextArea1.Text = "Puerto Abierto : " & ttyUSB.PortName & " Ajustes : " &
ttyUSB.Speed & " , " & ttyUSB.Parity & " , " & ttyUSB.DataBits & " , " &
ttyUSB.StopBits & " , " & Chr(13) & Chr(10)
cmdAbreCierra.Text = "Cierra"
ENDIF
END
Espero te sea de utilidad la informacion que te envio!!!.
Saludos
maigke- Asiduo del Foro
- Mensajes : 210
Fecha de inscripción : 12/04/2009
Edad : 46
Localización : Mexico
Re: GAMBAS Almenos es basic- Puerto Serie - PIC16F628A
Gracias maigke.
Justo ahí es donde se queda... pero lo del "try" no hace nada, porque en realidad el puerto abre bién y funciona, el caso es que toda la interface se queda bloqueada hasta que se cierra el puerto.
Por ejemplo: si abro el puerto, mando algunos datos y cierro el puerto; entonces todo funciona bién y como es una cosa rápida no se boquea nada. Si abro el puerto, mando unos datos y no cierro el puerto; entonces los datos se envían correctamente, pero no me muestra el mensaje de puerto abierto y la interface gráfica queda congelada... lo único que funciona es el botón de cerrar el puerto (si lo hay), si cierro el puerto entonces me muestra los mensajes de puerto abierto y puerto cerrado, todo de golpe, y todo vuelve a funcionar.
Esto me ha pasado tanto con el ejemplo como con algún intento mío y también con tu proyecto de servos (aunque yo no tengo nada conectado para probarlo).
He intentado como root y lo mismo...Es posible que Gambas te este causando algun tipo de conflicto con el
servidor X, Xorg supongo, verifica en los procesos que no se quede
zombie de alguna forma el proceso que se inicie con gambas, mmm una
cosa, cuando usas el puerto serie, lo has intentado como root?
Si.. estoy usando Ubuntu Hardy, lo he probado en un par de instalaciones y siempre lo mismo.bueno ahora no se que distro tengas instalada en tu caja linux, pero supongo que es ubuntu, oye y si intentas
desde una instalción limpia, desde el virtualbox, ya que este te da la
opcion de acceso al puerto serial, en mi caso tengo el virtualbox 3.0.4.
Otra opcion que pudieras intentar es una ejecucion por pasos, colocando breakpoints en las lineas de código de abrir el boton
- Código:
ttyUSB.Open() '<---- Igual y aqui se trabe, yo trataba de poner un try,
Justo ahí es donde se queda... pero lo del "try" no hace nada, porque en realidad el puerto abre bién y funciona, el caso es que toda la interface se queda bloqueada hasta que se cierra el puerto.
Por ejemplo: si abro el puerto, mando algunos datos y cierro el puerto; entonces todo funciona bién y como es una cosa rápida no se boquea nada. Si abro el puerto, mando unos datos y no cierro el puerto; entonces los datos se envían correctamente, pero no me muestra el mensaje de puerto abierto y la interface gráfica queda congelada... lo único que funciona es el botón de cerrar el puerto (si lo hay), si cierro el puerto entonces me muestra los mensajes de puerto abierto y puerto cerrado, todo de golpe, y todo vuelve a funcionar.
Esto me ha pasado tanto con el ejemplo como con algún intento mío y también con tu proyecto de servos (aunque yo no tengo nada conectado para probarlo).
Re: GAMBAS Almenos es basic- Puerto Serie - PIC16F628A
Lo que se me ocurre es que estan abriendo el puerto en modo bloqueante, entonces se queda el puerto bloqueado hasta que envie y reciba la cantidad de datos, para lo cual fue programado, es decir, se queda en ttyUSB.Open() hasta que se ha vaciado el buffer de salida y el buffer de entrada.
Voy a hecharle una mirada a internet para ver como en gambas configurarlo como nobloqueante, por evento y por timeout.
Otra opción seria abrir un hilo que maneja la apertura y cierra del Puerto, y así liberar la GUI y que no espere a que el proceso de lectura y escritura acabe.
Voy a hecharle una mirada a internet para ver como en gambas configurarlo como nobloqueante, por evento y por timeout.
Otra opción seria abrir un hilo que maneja la apertura y cierra del Puerto, y así liberar la GUI y que no espere a que el proceso de lectura y escritura acabe.
tsk- Participante
- Mensajes : 11
Fecha de inscripción : 02/06/2009
Página 2 de 2. • 1, 2
Temas similares
» Otro de GAMBAS con el puerto serie
» manejo del puerto serie con Python
» no consigo conectar con el puerto serie de mi PC
» QextSerialPort: Controlando el puerto Serie con Qt
» Grabar con un bootloader a través el puerto serie o el USB
» manejo del puerto serie con Python
» no consigo conectar con el puerto serie de mi PC
» QextSerialPort: Controlando el puerto Serie con Qt
» Grabar con un bootloader a través el puerto serie o el USB
Página 2 de 2.
Permisos de este foro:
No puedes responder a temas en este foro.
|
|