Offline
Newbie
Karma: 0
Posts: 8
|
 |
« on: October 16, 2011, 10:57:24 pm » |
Hola a todos, Tengo un problema, para mi grande problema, ya que soy una patata programando…. Tengo un programa, basado en Windows y necesito “coger” los datos que envía por Usb. Lo datos que envía son estos: chr(255) startbyte chr(1) slave id chr(1) output chr(crc) a crc8 of slave id and output Me gustaría poder leer estos datos (esencialmente salve id y output), asignarlos a unas variables para después poder… digamos enviarlos a los pine de arduino. Mi problema es que no se como hacerlo, me he ido leyendo y probando muchos códigos, pero no lo he conseguido Os agradecería una ayuda. Gracias de antemano.
|
|
|
|
« Last Edit: October 29, 2011, 09:00:58 am by peptro »
|
Logged
|
|
|
|
|
|
|
0
Offline
Edison Member
Karma: 13
Posts: 1241
Arduino rocks
|
 |
« Reply #2 on: October 17, 2011, 01:05:36 am » |
mira mi firma.
ademas, pon el código con el que estes trabajando y que todavia no te funciona
|
|
|
|
|
Logged
|
|
|
|
|
Offline
Newbie
Karma: 0
Posts: 8
|
 |
« Reply #3 on: October 17, 2011, 01:53:25 am » |
Hola Sergegsx el código con el que estoy trabajando es int ledPin = 12; char* val = "0";
void setup() { Serial.begin(9600); pinMode(ledPin, OUTPUT); }
void loop(){ if ( Serial.available()>0){
val[0]=Serial.read(); val[1]=Serial.read(); val[2]=Serial.read(); val[3]=Serial.read(); int a = atoi(val); Serial.println(a); digitalWrite(12,a); } }
pero....
|
|
|
|
|
Logged
|
|
|
|
|
Offline
Newbie
Karma: 0
Posts: 30
|
 |
« Reply #4 on: October 17, 2011, 02:14:00 am » |
Desde Windows, simplemente leyendo el puerto serie virtual, deberia de ser trivial en cualquier lenguaje, Pascal, C, etc.
|
|
|
|
|
Logged
|
|
|
|
|
Offline
Newbie
Karma: 0
Posts: 8
|
 |
« Reply #5 on: October 17, 2011, 02:16:58 am » |
Hola, os explico lo que quiero hacer. Tengo un programa, PyroIgnitionControl_V1.3.1; es un programa para “piromusicales”. Con este programa se “carga” un motivo musical, se le añaden salidas y tiempos y al iniciar el Show envía, por medio de "PyroTronic.dll" estos datos (esto son relativo a la salida1 del box 1) chr(255) startbyte chr(1) slave id chr(1) output chr(crc) a crc8 of slave id and output Lo que querría hacer es recoger estos datos y usarlo para decir a arduino, cuando el box es igual a 1 y output es igual a 1, envía la señal a pin x de arduino1; cuando el box es igual 2 y output es igual a 1, envía la señal a pin x de arduino2. Creo que así es un poco más claro lo que quiero hacer. Un saludo
|
|
|
|
|
Logged
|
|
|
|
|
Offline
Newbie
Karma: 0
Posts: 30
|
 |
« Reply #6 on: October 17, 2011, 02:26:02 am » |
Pues ningun problema !!, lees los datos, y envias las conclusiones a los Arduinos por los diferentes puertos, los Arduinos los leen (en los ejemplos del apartado de comunicaciones se ve como recibe el Arduino) y acabaremos.
Tomas las decisiones con if o switch y tema cerrado!!!
|
|
|
|
|
Logged
|
|
|
|
|
Offline
Newbie
Karma: 0
Posts: 30
|
 |
« Reply #7 on: October 17, 2011, 02:32:03 am » |
Doy por supuesto que estas usando "PyroTronic.dll" y que utilizando alguna de sus funciones consigues copia de los datos que se estan transmitiendo o estan disponibles.
|
|
|
|
|
Logged
|
|
|
|
|
Offline
Newbie
Karma: 0
Posts: 8
|
 |
« Reply #8 on: October 17, 2011, 02:57:04 am » |
Pues ningun problema !!, lees los datos, y envias las conclusiones a los Arduinos por los diferentes puertos,
es lo que no se hacer... 
|
|
|
|
|
Logged
|
|
|
|
|
0
Offline
Edison Member
Karma: 8
Posts: 1040
Arduino rocks
|
 |
« Reply #9 on: October 17, 2011, 04:57:11 am » |
Que ilu, con lo que me gusta a mi la pirotecnia. Tengo que decir que llevo polvora en mi sangre, pero literal porque me queme con una carcasa hace muchos años. Bueno como veo que has empezado con el codigo voy ayudarte un poco, como dice el @SrDongato hay gente que le tiene mucha cara y quiere que le hagan el programa. Veo que la estructura de la trama es chr(255) startbyte chr(1) slave id chr(1) output chr(crc) a crc8 of slave id and output Lo mas importante es controlar el CRC, asi sabemos que el mensaje ha llegado bien y no tiene ningun error. Mirate el proyecto de jpmzometa, hay muchas cosas que sirven para lo que quieres hacer inclusive el control del checksum. http://sites.google.com/site/jpmzometa/arduino-mbrtTe dejo también otro CRC
|
|
|
|
|
Logged
|
|
|
|
|
Euskadi
Offline
God Member
Karma: 10
Posts: 600
Arduinotarrak
|
 |
« Reply #10 on: October 17, 2011, 05:46:21 am » |
Hola peptro,
Mejor que declares un val con lugar suficiente para la cadena que vayas a meterle (los 4 bytes más el cero final):
char val[5];
val[0]=Serial.read(); val[1]=Serial.read(); val[2]=Serial.read(); val[3]=Serial.read();
// Y al final le pones el carácter 0 val[4]= '\0' ;
int a = atoi(val);
|
|
|
|
|
Logged
|
|
|
|
|
Offline
Newbie
Karma: 0
Posts: 30
|
 |
« Reply #11 on: October 17, 2011, 07:28:48 am » |
Para peptro
A ver que me aclare, que no sabes hacer???
Usar la DLL? obtener los datos que envia tu programa? enviarlos al Arduino???
Porque no se si te estoy respondiendo a lo que preguntas.
|
|
|
|
|
Logged
|
|
|
|
|
Offline
Newbie
Karma: 0
Posts: 8
|
 |
« Reply #12 on: October 17, 2011, 08:00:59 am » |
Para peptro
A ver que me aclare, que no sabes hacer???
Usar la DLL? obtener los datos que envia tu programa? enviarlos al Arduino???
Porque no se si te estoy respondiendo a lo que preguntas.
Hola Jacint54 Con arduino quiero leer los datos que envia un programa. los dato que envia este programa son chr(255) startbyte chr(1) slave id chr(1) output chr(crc) a crc8 of slave id and output y después quiero usarlo usarlo para decir a arduino, cuando el box es igual a 1 y output es igual a 1, envía la señal a pin x de arduino1; cuando el box es igual 2 y output es igual a 1, envía la señal a pin x de arduino2.
|
|
|
|
|
Logged
|
|
|
|
|
Ciudad Real
Offline
God Member
Karma: 1
Posts: 747
Arduino rocks
|
 |
« Reply #13 on: October 17, 2011, 09:24:10 am » |
debes ..
leer del puerto serrie --> en los ejemplos del IDE puedes ver como se hace
leer 3 bytes a partir del byte que sea igual a 255
hacer varios If con esos datos y segun valga 1 o 0 activar una salida o no
imagino que tendras que hacer alguna cuenta con el ultimo bye CRC para saber si has recibido todo bien.
esto no tiene complicacion
repito, no te vamos a hacer el codigo
|
|
|
|
|
Logged
|
|
|
|
|
Offline
Newbie
Karma: 0
Posts: 30
|
 |
« Reply #14 on: October 17, 2011, 09:34:12 am » |
Si desde Arduino quieres leer lo que envia el programa, es lo que te dice DonGato, hay ejemplos en el propio IDE, es lo que te comentaba, una serie de IFs o un SWITCH, y adelante, es trivial y no reviste mayor complejidad.
|
|
|
|
|
Logged
|
|
|
|
|
|