SoloCodigo

CLR: .Net / Mono / Boo / Otros CLR => C# => Mensaje iniciado por: Meta en Sábado 5 de Diciembre de 2009, 23:10

Título: Código más simple si es posible
Publicado por: Meta en Sábado 5 de Diciembre de 2009, 23:10
Hola:

Teniendo este código:

Código: C#
  1. private void button_b_Click(object sender, EventArgs e)
  2.         {
  3.             byte[] mBuffer = new byte[11];
  4.             mBuffer[0] = 0x48; //ASCII letra "H".
  5.             mBuffer[0] = 0x6F; //ASCII letra "o".
  6.             mBuffer[0] = 0x6C; //ASCII letra "l".
  7.             mBuffer[0] = 0x61; //ASCII letra "a".
  8.             mBuffer[0] = 0x20; //ASCII letra " ".
  9.             mBuffer[0] = 0x6D; //ASCII letra "m".
  10.             mBuffer[0] = 0x75; //ASCII letra "u".
  11.             mBuffer[0] = 0x6E; //ASCII letra "n".
  12.             mBuffer[0] = 0x64; //ASCII letra "d".
  13.             mBuffer[0] = 0x6F; //ASCII letra "o".
  14.             mBuffer[0] = 0x2E; //ASCII letra ".".
  15.             serialPort1.Write(mBuffer, 0, mBuffer.Length);
  16.         }
  17.  
  18.  

En este caso son 11 byte para enviar por puerto serie. Si fueran 50 sería una lista muy grande hacia abajo. ¿Hay alguna forma diferente hacerlo más simplificado con el mismo resultado?

Saludo.
Título: Re: Código más simple si es posible
Publicado por: ProfesorX en Domingo 6 de Diciembre de 2009, 00:57
No se si sea mas simple, pero podrias utilizar una variable de tipo string para guardar el texto. y luego utilizar el metodo Convert.ToByte() para hacer la conversion mediante un ciclo de la siguiente forma.

Código: C#
  1.  
  2. string mensaje = "Hola mundo.";
  3. for (int indice = 0; indice < mensaje.Length; indice++)
  4. {
  5.     mBuffer[indice] = Convert.ToByte(mensaje[indice]);
  6. }
  7.  
  8.  

A ver si te funciona.

Saludos :)
Título: Re: Código más simple si es posible
Publicado por: Meta en Domingo 6 de Diciembre de 2009, 01:04
Gracias. Por casualidad funciona así:

Código: C#
  1.  
  2. using System.Drawing;
  3. using System.Linq;
  4. using System.Text;
  5. using System.Windows.Forms;
  6.  
  7. namespace PSERIE
  8. {
  9.     public partial class Form1 : Form
  10.     {
  11.         public Form1()
  12.         {
  13.             InitializeComponent();
  14.         }
  15.  
  16.         private void button1_Click(object sender, EventArgs e)
  17.         {
  18.             serialPort1.Open();
  19.             byte[] mBuffer = Encoding.ASCII.GetBytes("Hola mundo.");
  20.             serialPort1.Write(mBuffer, 0, mBuffer.Length);
  21.             serialPort1.Close();
  22.         }
  23.     }
  24. }
  25.  
  26.  
  27.  
Título: Re: Código más simple si es posible
Publicado por: tannke en Domingo 6 de Diciembre de 2009, 12:34
Si, debería funcionar bien asi, saludos