Tengo un problema y querría saber si podríais ayudarme. El caso es que estoy haciendo pruebas con el serial para comunicar pc-arduino.
Tengo el ide de arduino con el serial monitor y gambas abiertos a la vez para comprobar que info envían y reciben(para aprender), y me he dado cuenta que si cierro el serial monitor...
dejan de comunicarse...
No entiendo nada... el motivo de ese comportamiento me está rompiendo la cabeza y me fustra. Pienso pasarme a python pero eso de no tener un ide gráfico al estilo gambas no me seduce.
Gracias por vuestra ayuda y saludos.
Conexión Gambas-Arduino
Objetivo: Conexión Gambas-Arduino
última edición por celtilander el Lunes, 31 Marzo 2014, 13:22; editado 1 vez
última edición por celtilander el Lunes, 31 Marzo 2014, 13:22; editado 1 vez
Objetivo: Re: Conexión Gambas-Arduino
última edición por Shell el Lunes, 31 Marzo 2014, 11:15; editado 1 vez
celtilander:
Vaya, no puedo ayudarte con el tema de Arduino.
En cuanto a lo que comentabas luego, tendrías que crear un tema nuevo.
Solo por no mezclar cosas. Me parece interesante pero se hablaría de otra cosa
y no tendría nada que ver con la pregunta original.
Saludos
Vaya, no puedo ayudarte con el tema de Arduino.
En cuanto a lo que comentabas luego, tendrías que crear un tema nuevo.
Solo por no mezclar cosas. Me parece interesante pero se hablaría de otra cosa
y no tendría nada que ver con la pregunta original.
Saludos
última edición por Shell el Lunes, 31 Marzo 2014, 11:15; editado 1 vez
Objetivo: Re: Conexión Gambas-Arduino
@celtilander
Supongo que estás comunicando el Arduino a través del interface USB/serie que trae. En realidad, si fuese un puerto serie rs-232 sólo tendría acceso exclusivo al puerto físico un sólo dispositivo, pero en USB lo desconozco. Como también desconozco si en Linux es posible monitorizar comunicaciones serie entre dos dispositivos desde un tercero...
Siento no ser de más ayuda, pero si nos ilustras con un par de esquemas lo que estás tratando de hacer, quizás pueda encontrar información al respecto en alguno de mis libros.
Saludos
Supongo que estás comunicando el Arduino a través del interface USB/serie que trae. En realidad, si fuese un puerto serie rs-232 sólo tendría acceso exclusivo al puerto físico un sólo dispositivo, pero en USB lo desconozco. Como también desconozco si en Linux es posible monitorizar comunicaciones serie entre dos dispositivos desde un tercero...
Siento no ser de más ayuda, pero si nos ilustras con un par de esquemas lo que estás tratando de hacer, quizás pueda encontrar información al respecto en alguno de mis libros.
Saludos
Objetivo: Re: Conexión Gambas-Arduino
celtilander:
Nos tienes que decir que modelo de arduino estas usando (porque algunos son realmente puerto series y los más modernos son ya USB reales)
Yo he usado dos modelos de arduino, que fisicamente se conectan con un cable USB al PC, pero el más antiguo era una emulacion del puerto serie-Usb, y el nuevo modelo de arduino era un USB real. A efectos prácticos, lo que cambia es el nombre del puerto:
- Arduino modelo Diecimila: /dev/ttyUSB0
- Arduino modelo UNO o Leonardo: /dev/ttyACM0
Realmente solo con gambas, puedes ver (y representar), lo que recibes del arduino, y lo que envias desde gambas, también lo puedes escribir en un textbox, por ejemplo.,para ver que están haciendo... (ver ejemplo: http://jsbsan.blogspot.com.es/2011/...basarduino.html )
Supongo que eso pasa porque al cerrar la ventana del ide de arduino, estas cerrando el puerto (sin querer).
En las aplicaciones que he hecho, nunca he tenido necesidad de tener el IDE de Arduino (ni la ventana del puerto Serie) abierto para comunicarme entre los programas y el Arduino.
Lo que hacia era grabar el programa en el Arduino, salia del IDE de Arduino, y luego trabajaba con el programa hecho en Gambas.
Prueba el ejemplo que te he indicado, a ver si te da problemas, y nos cuentas.
Saludos
Julio
Citar:
Nos tienes que decir que modelo de arduino estas usando (porque algunos son realmente puerto series y los más modernos son ya USB reales)
Yo he usado dos modelos de arduino, que fisicamente se conectan con un cable USB al PC, pero el más antiguo era una emulacion del puerto serie-Usb, y el nuevo modelo de arduino era un USB real. A efectos prácticos, lo que cambia es el nombre del puerto:
- Arduino modelo Diecimila: /dev/ttyUSB0
- Arduino modelo UNO o Leonardo: /dev/ttyACM0
Citar:
Realmente solo con gambas, puedes ver (y representar), lo que recibes del arduino, y lo que envias desde gambas, también lo puedes escribir en un textbox, por ejemplo.,para ver que están haciendo... (ver ejemplo: http://jsbsan.blogspot.com.es/2011/...basarduino.html )
Citar:
Supongo que eso pasa porque al cerrar la ventana del ide de arduino, estas cerrando el puerto (sin querer).
En las aplicaciones que he hecho, nunca he tenido necesidad de tener el IDE de Arduino (ni la ventana del puerto Serie) abierto para comunicarme entre los programas y el Arduino.
Lo que hacia era grabar el programa en el Arduino, salia del IDE de Arduino, y luego trabajaba con el programa hecho en Gambas.
Prueba el ejemplo que te he indicado, a ver si te da problemas, y nos cuentas.
Saludos
Julio
Objetivo: Re: Conexión Gambas-Arduino
He hecho pruebas con el soft de JBSAN.
Resultado:
-Ejecuto la aplicación en gambas con el ide abierto de arduino, funciona. Si abro el serial monitor, el led, deja de encenderse/apagarse.
-Ejecuto la aplicación de gambas con el ide y el serial monitor, funciona aun cerrando el serial monitor, pero falla los mensajes, parte del mensaje "Arduino: He apagado el led 13" se visualiza en el serial monitor y otra parte en el TextArea.
Resumiendo... sigo "viendo" cosas muuuy raras que no se a que achacarlo... el caso es que me resulta muy inestable conectar gambas/arduino.
Uso 2 Arduinos UNO R3, uno original y el otro de Sparkfun. Ambos reaccionan igual. El S.O. Ubuntu 12.04 y gambas 3.5.2
Mi idea era hacerme un robot y mezclar:
Arduino (para recibir datos de sensores y enviar/recibir datos de los servos para pasarselos al pc)
Un Pc Radxa que haría de cerebro y con capacidad de hacer un programa (suficientemente complejo y grande para procesar los datos enviados por arduino de las lecturas de sensores y servos) que arduino no podría, y que este decida las ordenes a pasar al arduino y este a los servos. Para un segundo paso, dejo el tema de la cámara, del que ya os pregunté.
Creo que me he explicado...:(
Saludos.
Resultado:
-Ejecuto la aplicación en gambas con el ide abierto de arduino, funciona. Si abro el serial monitor, el led, deja de encenderse/apagarse.
-Ejecuto la aplicación de gambas con el ide y el serial monitor, funciona aun cerrando el serial monitor, pero falla los mensajes, parte del mensaje "Arduino: He apagado el led 13" se visualiza en el serial monitor y otra parte en el TextArea.
Resumiendo... sigo "viendo" cosas muuuy raras que no se a que achacarlo... el caso es que me resulta muy inestable conectar gambas/arduino.
Uso 2 Arduinos UNO R3, uno original y el otro de Sparkfun. Ambos reaccionan igual. El S.O. Ubuntu 12.04 y gambas 3.5.2
Mi idea era hacerme un robot y mezclar:
Arduino (para recibir datos de sensores y enviar/recibir datos de los servos para pasarselos al pc)
Un Pc Radxa que haría de cerebro y con capacidad de hacer un programa (suficientemente complejo y grande para procesar los datos enviados por arduino de las lecturas de sensores y servos) que arduino no podría, y que este decida las ordenes a pasar al arduino y este a los servos. Para un segundo paso, dejo el tema de la cámara, del que ya os pregunté.
Creo que me he explicado...:(
Saludos.
Objetivo: Re: Conexión Gambas-Arduino
celtilander.
Haz la siguiente prueba:
-> Solo ejecuta el programa de gambas (sin ide de Arduino y sin serial monitor (que supongo que es el del Ide de Arduino))
Te debe de salir todo en el textArea...
No se si este mini pc tiene capacidad para ejecutar gambas...
Haz la siguiente prueba:
-> Solo ejecuta el programa de gambas (sin ide de Arduino y sin serial monitor (que supongo que es el del Ide de Arduino))
Te debe de salir todo en el textArea...
Citar:
No se si este mini pc tiene capacidad para ejecutar gambas...
Objetivo: Re: Conexión Gambas-Arduino
En el caso que me ocupa me pasa esto:
-Si no abro el serialmonitor, no funciona.
-Si tengo abierto el serial monitor, funciona, pero recibo 2 mensajes de arduino
La aplicación trata de enviar desde un textbox un texto tipo "LETRA,NUMERO,NUMERO", arduino lo recibe y contesta con lo recibido que visualizo en un TextArea. El caso es que como he dicho en el primer caso... la aplicación de gambas no recibe nada y en el segundo recibe 2 mensajes, el primero con la info enviada y un segundo vacío.
Perdonar por la longitud del mensaje pero no se hacerlo de otra forma.
Código gambas
Código Arduino
-Si no abro el serialmonitor, no funciona.
-Si tengo abierto el serial monitor, funciona, pero recibo 2 mensajes de arduino
La aplicación trata de enviar desde un textbox un texto tipo "LETRA,NUMERO,NUMERO", arduino lo recibe y contesta con lo recibido que visualizo en un TextArea. El caso es que como he dicho en el primer caso... la aplicación de gambas no recibe nada y en el segundo recibe 2 mensajes, el primero con la info enviada y un segundo vacío.
Perdonar por la longitud del mensaje pero no se hacerlo de otra forma.
Código gambas
' gambas class file
Public velocidad As Integer ' 9600
Public paridad As Integer ' 0-none 1-even 2-odd
Public bits_de_datos As Integer ' 5.6.7.8
Public bits_de_parada As Integer ' 1,2
Public s As String
Public Sub Form_Close()
If SportA.Status = Net.Active Then Close SPortA
Me.Close
End
Public Sub SPortA_Read() ' Arduino Azul
Dim sBuffer As String
Read #SportA, sBuffer, Lof(SportA)
TextArea1.Text = TextArea1.Text & " " & sBuffer
End
Public Sub Form_Open()
Me.center
velocidad = 57600
paridad = 0
bits_de_datos = 8
bits_de_parada = 1
End
Public Sub Label1_MouseDown()
If SportA.Status = Net.Active
Close SportA
Else
SportA.PortName = "/dev/ttyACM0"
SportA.Speed = velocidad
SportA.Parity = paridad
SportA.DataBits = bits_de_datos
SportA.StopBits = bits_de_parada
SportA.FlowControl = paridad
SportA.Open()
Print #SportA, TextBox1.text
End If
End
Public velocidad As Integer ' 9600
Public paridad As Integer ' 0-none 1-even 2-odd
Public bits_de_datos As Integer ' 5.6.7.8
Public bits_de_parada As Integer ' 1,2
Public s As String
Public Sub Form_Close()
If SportA.Status = Net.Active Then Close SPortA
Me.Close
End
Public Sub SPortA_Read() ' Arduino Azul
Dim sBuffer As String
Read #SportA, sBuffer, Lof(SportA)
TextArea1.Text = TextArea1.Text & " " & sBuffer
End
Public Sub Form_Open()
Me.center
velocidad = 57600
paridad = 0
bits_de_datos = 8
bits_de_parada = 1
End
Public Sub Label1_MouseDown()
If SportA.Status = Net.Active
Close SportA
Else
SportA.PortName = "/dev/ttyACM0"
SportA.Speed = velocidad
SportA.Parity = paridad
SportA.DataBits = bits_de_datos
SportA.StopBits = bits_de_parada
SportA.FlowControl = paridad
SportA.Open()
Print #SportA, TextBox1.text
End If
End
Código Arduino
const int lonbuffer=5; // longitud del buffer
char buffer[lonbuffer]; // buffer para almacenar el comando
int val1; // valor de primer parámetro
int val2; // valor de segundo parámetro
void setup()
{
Serial.begin(57600);
}
void loop()
{
if (Serial.available());
{
comunicar();
}
}
void comunicar()
{
if (Serial.available() > 0)
{
int lonComando;
lonComando=Serial.readBytesUntil(',', buffer, lonbuffer);
buffer[lonComando]='\0'; // Añadimos el terminador de cadena
// el buffer debe contener un comando.
val1=Serial.parseInt();
val2=Serial.parseInt();
// Recibimos los dos parámetros. Si el número de parámetros varía dependiendo del comando, deberemos primero ver qué comando es para saber qué y cuántos parámetros recibiremos
Serial.print("Comando recibido: ");
Serial.println(buffer);
Serial.print("Param1: ");
Serial.println(val1);
Serial.print("Param2: ");
Serial.println(val2);
}
}
char buffer[lonbuffer]; // buffer para almacenar el comando
int val1; // valor de primer parámetro
int val2; // valor de segundo parámetro
void setup()
{
Serial.begin(57600);
}
void loop()
{
if (Serial.available());
{
comunicar();
}
}
void comunicar()
{
if (Serial.available() > 0)
{
int lonComando;
lonComando=Serial.readBytesUntil(',', buffer, lonbuffer);
buffer[lonComando]='\0'; // Añadimos el terminador de cadena
// el buffer debe contener un comando.
val1=Serial.parseInt();
val2=Serial.parseInt();
// Recibimos los dos parámetros. Si el número de parámetros varía dependiendo del comando, deberemos primero ver qué comando es para saber qué y cuántos parámetros recibiremos
Serial.print("Comando recibido: ");
Serial.println(buffer);
Serial.print("Param1: ");
Serial.println(val1);
Serial.print("Param2: ");
Serial.println(val2);
}
}
Objetivo: Re: Conexión Gambas-Arduino
Pues si. Solo abriendo gambas, responde correctamente.
Estupendo, pues entonces cerraré siempre el ide de arduino para realizar pruebas. Gracias.
Respecto a que el miniPc pueda ejecutar gambas... ni me lo había planteado... como tiene arranque dual Android/Ubuntu me imaginé que podría.
Es un Quad core ARM Cortex-A9 a 1.6Ghz con 2 Gb de RAM...
jsbsan escribió: [Ver mensaje]
Pues si. Solo abriendo gambas, responde correctamente.
Estupendo, pues entonces cerraré siempre el ide de arduino para realizar pruebas. Gracias.
Respecto a que el miniPc pueda ejecutar gambas... ni me lo había planteado... como tiene arranque dual Android/Ubuntu me imaginé que podría.
Es un Quad core ARM Cortex-A9 a 1.6Ghz con 2 Gb de RAM...
Objetivo: Re: Conexión Gambas-Arduino
celtilander:
No, no es necesario abrir el serialmonitor....
Esta parte de tu codigo esta mal, le falta el "THEN"
No se si hay version para ARM de gambas3, se que estan haciendo alguna version para raspberry pi (que tambien es ARM), pero no se si ya funciona bien.
Citar:
No, no es necesario abrir el serialmonitor....
Esta parte de tu codigo esta mal, le falta el "THEN"
Citar:
No se si hay version para ARM de gambas3, se que estan haciendo alguna version para raspberry pi (que tambien es ARM), pero no se si ya funciona bien.
Página 1 de 2
No puede crear mensajesNo puede responder temas
No puede editar sus mensajes
No puede borrar sus mensajes
No puede votar en encuestas
No puede adjuntar archivos
Puede descargar archivos
No puede publicar eventos en el calendario
Está utilizando la versión (Lo-Fi). Para ver la versión completa del foro, haga clic aquí.
Powered by Icy Phoenix based on phpBB
Design by DiDiDaDo
Página generada en:: 0.4623s (PHP: -66% SQL: 166%)
Consultas SQL: 46 - Debug off - GZIP Activado