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,586 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
beamspot
Respuestas: 1132
(@beamspot)
Noble Member
Registrado: hace 17 años

C# permite perfectamente pasar bytes (o arrays de bytes) por el puerto serie. Pasar un int es tan sencillo como hacer

byte[] datos = new byte[2];

datos[0]=(byte)(valor>>8);
datos[1]=(byte)(valor);
com1.Write(datos);

El tema de 'endianness' es al gusto, tal y como se puede ver.

Responder
boops
Respuestas: 1813
(@boops)
Ardero
Registrado: hace 19 años

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

La sobrecarga no admite ese formato, pero sí como lo estaban sugiriendo mas abajo, con array de int.

Responder
boops
Respuestas: 1813
(@boops)
Ardero
Registrado: hace 19 años

Sigo leyendo y contestando...

Adjunto un trozo de código (No es mio, es de yecks) pero lo hacemos así:

private byte[] Mibyte = {128,0,0,0,129};

private void butenviar_Click(object sender, EventArgs e)
{
Mibyte[1] =
Convert.ToByte(this.TextBoxLed.Text);
Mibyte[2] =
Convert.ToByte(this.textBoxVECES.Text);
Mibyte[3] =
Convert.ToByte(this.TextBoxVelocidad.Text);
this.serialPort1.Open();
this.serialPort1.Write(Mibyte, 0, 5);
this.serialPort1.Close();
}

No se si el "com1.Write(datos); " funcionará ya que la sobrecarga esta incompleta.

Responder
urriellu
Respuestas: 61
(@urriellu)
Trusted Member
Registrado: hace 18 años


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

byte numero = 180; //evidentemente solo sirve si numero<=255
char c = Convert.ToChar(numero);
PuertoSerie.write(c);

Responder
Página 2 / 2
Compartir: