Microcontroladores PIC en Linux.
¿Quieres reaccionar a este mensaje? Regístrate en el foro con unos pocos clics o inicia sesión para continuar.

GAMBAS Almenos es basic- Puerto Serie - PIC16F628A

5 participantes

Página 2 de 2. Precedente  1, 2

Ir abajo

GAMBAS Almenos es basic- Puerto Serie - PIC16F628A - Página 2 Empty Re: GAMBAS Almenos es basic- Puerto Serie - PIC16F628A

Mensaje por maigke Lun 7 Sep 2009 - 18:41

Esta parte es la que envia los datos a los seis servos upps, ¿de cuál fumé? si son solo 5 Laughing

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
maigke
Asiduo del Foro
Asiduo del Foro

Mensajes : 210
Fecha de inscripción : 12/04/2009
Edad : 46
Localización : Mexico

Volver arriba Ir abajo

GAMBAS Almenos es basic- Puerto Serie - PIC16F628A - Página 2 Empty Re: GAMBAS Almenos es basic- Puerto Serie - PIC16F628A

Mensaje por maigke Lun 7 Sep 2009 - 18:45

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. Very Happy

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
maigke
Asiduo del Foro
Asiduo del Foro

Mensajes : 210
Fecha de inscripción : 12/04/2009
Edad : 46
Localización : Mexico

Volver arriba Ir abajo

GAMBAS Almenos es basic- Puerto Serie - PIC16F628A - Página 2 Empty Re: GAMBAS Almenos es basic- Puerto Serie - PIC16F628A

Mensaje por maigke Sáb 12 Sep 2009 - 4:10

GAMBAS Almenos es basic- Puerto Serie - PIC16F628A - Página 2 Icon_biggrin 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:

  • 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.
Esto se puede ver claramente en la siguiente imagen
GAMBAS Almenos es basic- Puerto Serie - PIC16F628A - Página 2 Pic0841.th
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 GAMBAS Almenos es basic- Puerto Serie - PIC16F628A - Página 2 Icon_sad

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
maigke
Asiduo del Foro
Asiduo del Foro

Mensajes : 210
Fecha de inscripción : 12/04/2009
Edad : 46
Localización : Mexico

Volver arriba Ir abajo

GAMBAS Almenos es basic- Puerto Serie - PIC16F628A - Página 2 Empty Re: GAMBAS Almenos es basic- Puerto Serie - PIC16F628A

Mensaje por maigke Sáb 12 Sep 2009 - 14:49

Bueno ya es de día!! GAMBAS Almenos es basic- Puerto Serie - PIC16F628A - Página 2 Icon_biggrin 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 GAMBAS Almenos es basic- Puerto Serie - PIC16F628A - Página 2 Icon_twisted
saludos!!!
maigke
maigke
Asiduo del Foro
Asiduo del Foro

Mensajes : 210
Fecha de inscripción : 12/04/2009
Edad : 46
Localización : Mexico

Volver arriba Ir abajo

GAMBAS Almenos es basic- Puerto Serie - PIC16F628A - Página 2 Empty Re: GAMBAS Almenos es basic- Puerto Serie - PIC16F628A

Mensaje por Pikitin Lun 14 Sep 2009 - 10:54

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.

Pikitin
veterano
veterano

Mensajes : 623
Fecha de inscripción : 26/11/2008

http://linuxmicros.blogspot.com/

Volver arriba Ir abajo

GAMBAS Almenos es basic- Puerto Serie - PIC16F628A - Página 2 Empty Re: GAMBAS Almenos es basic- Puerto Serie - PIC16F628A

Mensaje por maigke Lun 14 Sep 2009 - 17:46

GAMBAS Almenos es basic- Puerto Serie - PIC16F628A - Página 2 Icon_biggrin 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 GAMBAS Almenos es basic- Puerto Serie - PIC16F628A - Página 2 Icon_cheers
maigke
maigke
Asiduo del Foro
Asiduo del Foro

Mensajes : 210
Fecha de inscripción : 12/04/2009
Edad : 46
Localización : Mexico

Volver arriba Ir abajo

GAMBAS Almenos es basic- Puerto Serie - PIC16F628A - Página 2 Empty Re: GAMBAS Almenos es basic- Puerto Serie - PIC16F628A

Mensaje por maigke Sáb 19 Sep 2009 - 22:23

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 Very Happy

saludos!!
maigke
maigke
Asiduo del Foro
Asiduo del Foro

Mensajes : 210
Fecha de inscripción : 12/04/2009
Edad : 46
Localización : Mexico

Volver arriba Ir abajo

GAMBAS Almenos es basic- Puerto Serie - PIC16F628A - Página 2 Empty Prueba Final GAMBAS-Puerto Seriel - PIC16F628A

Mensaje por maigke Dom 20 Sep 2009 - 14:12

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 GAMBAS Almenos es basic- Puerto Serie - PIC16F628A - Página 2 Icon_biggrin GAMBAS Almenos es basic- Puerto Serie - PIC16F628A - Página 2 Icon_biggrin GAMBAS Almenos es basic- Puerto Serie - PIC16F628A - Página 2 Icon_biggrin


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
maigke
Asiduo del Foro
Asiduo del Foro

Mensajes : 210
Fecha de inscripción : 12/04/2009
Edad : 46
Localización : Mexico

Volver arriba Ir abajo

GAMBAS Almenos es basic- Puerto Serie - PIC16F628A - Página 2 Empty Re: GAMBAS Almenos es basic- Puerto Serie - PIC16F628A

Mensaje por maigke Lun 21 Sep 2009 - 6:43

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
maigke
maigke
Asiduo del Foro
Asiduo del Foro

Mensajes : 210
Fecha de inscripción : 12/04/2009
Edad : 46
Localización : Mexico

Volver arriba Ir abajo

GAMBAS Almenos es basic- Puerto Serie - PIC16F628A - Página 2 Empty Re: GAMBAS Almenos es basic- Puerto Serie - PIC16F628A

Mensaje por Pikitin Miér 23 Sep 2009 - 16:04

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?

Pikitin
veterano
veterano

Mensajes : 623
Fecha de inscripción : 26/11/2008

http://linuxmicros.blogspot.com/

Volver arriba Ir abajo

GAMBAS Almenos es basic- Puerto Serie - PIC16F628A - Página 2 Empty Re: GAMBAS Almenos es basic- Puerto Serie - PIC16F628A

Mensaje por maigke Lun 28 Sep 2009 - 4:00

Una disculpa, pero no habia entrado antes al foro, debido a cuestiones de trabajo.

Pikitin escribió:He actualizado el archivo en la zona de descargas a los últimos cambios en tu proyecto.
Gracias!!!


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
maigke
Asiduo del Foro
Asiduo del Foro

Mensajes : 210
Fecha de inscripción : 12/04/2009
Edad : 46
Localización : Mexico

Volver arriba Ir abajo

GAMBAS Almenos es basic- Puerto Serie - PIC16F628A - Página 2 Empty Re: GAMBAS Almenos es basic- Puerto Serie - PIC16F628A

Mensaje por Pikitin Mar 29 Sep 2009 - 23:45

Gracias maigke.

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?
He intentado como root y 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.
Si.. estoy usando Ubuntu Hardy, lo he probado en un par de instalaciones y siempre lo mismo.

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).

Pikitin
veterano
veterano

Mensajes : 623
Fecha de inscripción : 26/11/2008

http://linuxmicros.blogspot.com/

Volver arriba Ir abajo

GAMBAS Almenos es basic- Puerto Serie - PIC16F628A - Página 2 Empty Re: GAMBAS Almenos es basic- Puerto Serie - PIC16F628A

Mensaje por tsk Miér 30 Sep 2009 - 2:41

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.

tsk
Participante
Participante

Mensajes : 11
Fecha de inscripción : 02/06/2009

Volver arriba Ir abajo

GAMBAS Almenos es basic- Puerto Serie - PIC16F628A - Página 2 Empty Re: GAMBAS Almenos es basic- Puerto Serie - PIC16F628A

Mensaje por Contenido patrocinado


Contenido patrocinado


Volver arriba Ir abajo

Página 2 de 2. Precedente  1, 2

Volver arriba

- Temas similares

 
Permisos de este foro:
No puedes responder a temas en este foro.