Si además quieres enviarnos un Artículo para el Blog y redes sociales, pulsa el siguiente botón:
Buenas a todos.
Estoy haciendo un programilla en C#. Lo que quiero que haga es que pase un int por puerto serie y que el PIC lo guarde en una variable como int.
Pondré un ejemplo para explicar los problemas que tengo:
Programa en C#
---------------------------------------------------------------------------------------------------
// Numero que quiero pasar por el puerto serie.
int numero = 180;
String cadena = numero.toString();
// Problema 1: No puedo pasar el int tengo que pasar un char o string.
PuertoSerie.write(numero);
---------------------------------------------------------------------------------------------------
Si le paso un char no le paso todo el número ya que 180 es un string.
Programa en C CCS
---------------------------------------------------------------------------------------------------
int numero = 0
// Problema 2: Eso solo coge un char no todo el numero por lo que no funciona.
// Otro aspecto es que devuelve el valor ASCII del char que se ha enviado.
numero = getc();
---------------------------------------------------------------------------------------------------
(No se si se ha entendido)
Hay alguna forma de pasar un int de 3 dígitos directamente por puerto serie? Me podéis dar alternativas o explicar como hacerlo?
Saludos y gracias.
Hola!
Si el entero es pequeño (<=255 = 8 bits) lo puedes pasar como caracter:
unsigned char numero=180;
PuertoSerie.write(numero);
Si el entero es mayor (16 bits o más) puedes enviarlo a tozos de un byte como char... no se si es eso lo que quieres.
EDITO: Por cierto, creo que el tipo int en CCS es de 8 bits, lo que cuadra con que te coja un char y no el entero; prueba con int16 o int32
Salu2!
C# no me deja pasar un numero directamente tengo k pasarlo a string.
No se si lo he entendido bien, pero has probado:
PuertoSerie.write((int)numero);
???
He estado haciendo pruebas y al final lo he hecho así.
Pasar los valores en C#:
COM.Write("1");
COM.Write("8");
COM.Write("0");
Cogerlos con el programa del PIC:
int getGraus(){
int total = 0;
input[2] = getc();
input[1] = getc();
input[0] = getc();
total += (input[2] - ascii0) * multi[2];
total += (input[1] - ascii0) * multi[1];
total += (input[0] - ascii0) * multi[0];
return total;
}
Muchas gracias a los dos.
Saludos.