RS232 Software UART String lesen
Posted: Mon Sep 12, 2011 10:06 am
Hallo
ich habe einen Energiezähler der über einen Optokoppler folgende serielle Daten sendet:
8Datenbits / 1Startbit /1 Stopbit / 1920 Baud
Zählerstand Leistung Spannung Strom CRC
T123456,7<Space>P1234,5<Space>U123<Space>I12,34<Space>C1<CR>
Dabei stehen T, P, U, I, C und , für die ASCII Werte.
<Space> steht für das Leerzeichen = ASCII 0x20
<CR> steht für den Wagenrücklauf (Carriage Return) = ASCII 0x0D
12… für die Messwerte mit führenden Nullen
Eine Anzeige wäre zum Beispiel:
T000018,6 P0115,0 U230 I00,50 Cx<CR>
Dies bedeutet:
Total 18,6 kWh
Leistung 115 Watt
Spannung 230 Volt
Strom 0,5 Ampere
CRC 120 (Ascii Wert von ‚x’)
Das CRC ist eine Addition aller gesendeten ASCII-Zeichen bis und mit dem <SPACE> nach dem Strom Teil und kann einen Wert zwischen 0-255 haben.
Im CRC enthaltene Daten:
Zählerstand Leistung Spannung Strom
T123456,7<Space>P1234,5<Space>U123<Space>I12,34<Space>
Ich bekomme auch die Daten. Ich kann Sie aber nicht filtern.
Entweder nur Zahlen oder nur Zeichen.
Ich würde die Zeichen T,P,U..... lesen und die Zahl dann im Display anzeigen.
Vielen Dank und Grüße
Im Anhang meine Versuche.
ich habe einen Energiezähler der über einen Optokoppler folgende serielle Daten sendet:
8Datenbits / 1Startbit /1 Stopbit / 1920 Baud
Zählerstand Leistung Spannung Strom CRC
T123456,7<Space>P1234,5<Space>U123<Space>I12,34<Space>C1<CR>
Dabei stehen T, P, U, I, C und , für die ASCII Werte.
<Space> steht für das Leerzeichen = ASCII 0x20
<CR> steht für den Wagenrücklauf (Carriage Return) = ASCII 0x0D
12… für die Messwerte mit führenden Nullen
Eine Anzeige wäre zum Beispiel:
T000018,6 P0115,0 U230 I00,50 Cx<CR>
Dies bedeutet:
Total 18,6 kWh
Leistung 115 Watt
Spannung 230 Volt
Strom 0,5 Ampere
CRC 120 (Ascii Wert von ‚x’)
Das CRC ist eine Addition aller gesendeten ASCII-Zeichen bis und mit dem <SPACE> nach dem Strom Teil und kann einen Wert zwischen 0-255 haben.
Im CRC enthaltene Daten:
Zählerstand Leistung Spannung Strom
T123456,7<Space>P1234,5<Space>U123<Space>I12,34<Space>
Ich bekomme auch die Daten. Ich kann Sie aber nicht filtern.
Entweder nur Zahlen oder nur Zeichen.
Ich würde die Zeichen T,P,U..... lesen und die Zahl dann im Display anzeigen.
Vielen Dank und Grüße
Im Anhang meine Versuche.