C# - Seriel: Hexwert über 127 auslesen

Gast #2397700
Lesenswert?

1
void sp_DataReceived(object sender, SerialDataReceivedEventArgs e)
2
{
3
 string bffr = ConvertToHex(serialPort.ReadExisting());
4
 this.BeginInvoke(new SetTextDeleg(si_DataReceived), new object[] { bffr });
5
}
6

7
public string ConvertToHex(string asciiString)
8
{
9
 string hex = "";
10
 foreach (char c in asciiString)
11
 {
12
  int tmp = c;
13
  hex += String.Format("{0:x2}", (uint)System.Convert.ToUInt32(tmp.ToString()));
14
 }
15
 return hex;
16
}

Wobei die ConvertToHex eig. einwandfrei arbeiten sollte, ich hab es mit 
"255" -> "ff" getestet.
Gast #2397846
Lesenswert?

Hier ein kleines Beispiel mit C#, Forms, .Net4. Die benutzten Textboxen
müssen natürlich in der Forms-Anwendung existieren.

1
using System;
2
using System.Windows.Forms;
3
using System.IO.Ports;
4

5
namespace SerialPortWinForms
6
{
7
  public partial class Form1 : Form
8
  {
9
    SerialPort myport;
10
    delegate void UpdateCallback(string s);
11
    
12
    public Form1()
13
    {
14
      InitializeComponent();
15
      myport = new SerialPort("com1", 9600);
16
      myport.DataReceived += OnDataReceived;
17
      myport.Open();
18
    }
19

20
    void OnDataReceived(object sender, SerialDataReceivedEventArgs e)
21
    {
22
      SerialPort sp = (SerialPort) sender;  
23
      textBox1.Invoke(new UpdateCallback(this.UpdateTheTextbox), sp.ReadExisting());
24
    }
25

26
    void UpdateTheTextbox(string s)
27
    {
28
      foreach (char c in s)
29
      {
30
        textBox1.Text += c.ToString();
31
        textBox2.Text += String.Format("{0:X02} ", (byte) c);
32
      }
33
    } 
34
  }
35
}

DropsMan

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren