fbpx

Expresate

Si además quieres enviarnos un Artículo para el Blog y redes sociales, pulsa el siguiente botón:

Int y Puerto Serie
 
Avisos
Vaciar todo

Int y Puerto Serie

9 Respuestas
6 Usuarios
0 Reactions
3,568 Visitas
ionthas
Respuestas: 153
Topic starter
(@ionthas)
Estimable Member
Registrado: hace 17 años

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.

Responder
8 respuestas
bastian
Respuestas: 384
(@bastian)
Ardero
Registrado: hace 17 años

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!

Responder
ionthas
Respuestas: 153
Topic starter
(@ionthas)
Estimable Member
Registrado: hace 17 años

C# no me deja pasar un numero directamente tengo k pasarlo a string.

Responder
mif
Respuestas: 1095
 Mif
(@mif)
Noble Member
Registrado: hace 19 años

No se si lo he entendido bien, pero has probado:
PuertoSerie.write((int)numero);
???

Responder
ionthas
Respuestas: 153
Topic starter
(@ionthas)
Estimable Member
Registrado: hace 17 años

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.

Responder
Página 1 / 2
Compartir: