8-bit of 7-bit instelling digitale meter

IDE gerelateerde berichten
Berichten: 2
Geregistreerd: 18 Mrt 2020, 15:37

8-bit of 7-bit instelling digitale meter

Berichtdoor AndreasSchepens » 08 Apr 2020, 15:14

Ik heb een vraag omtrent de bit-instelling als ik mijn digitale meter uitlees.
Ik lees de telegrammen van een slimme meter uit doormiddel van een Arduino Uno, werkt perfect.
Echter heb ik toch een vraag. Mijn digitale meter verstuurd, volgens de datasheets, zijn gegevens volgens 8N1 bit instelling.
Het programma dat ik gebruik ziet er uit als onderstaande;
Waarom wordt in dit programma gebruik gemaakt van een 7-bit instelling terwijl de gegevens volgens 8-bit instelling verzonden worden?

#include <AltSoftSerial.h>
// AltSoftSerial always uses these pins:
//
// Board Transmit Receive PWM Unusable
// ----- -------- ------- ------------
// Teensy 2.0 9 10 (none)
// Teensy++ 2.0 25 4 26, 27
// Arduino Uno 9 8 10
// Arduino Mega 46 48 44, 45
// Wiring-S 5 6 4
// Sanguino 13 14 12

AltSoftSerial altSerial;
char c;

void setup() {
Serial.begin(115200);
altSerial.begin(115200);
}

void loop() {
if (altSerial.available()) {
c = altSerial.read();

// --- 7 bits instelling ---
c &= ~(1 << 7);
char inChar = (char)c;

Serial.print(c);
}
}

Advertisement

Gebruikers-avatar
Berichten: 2655
Geregistreerd: 06 Aug 2016, 01:03

Re: 8-bit of 7-bit instelling digitale meter

Berichtdoor Koepel » 08 Apr 2020, 20:11

Heel vroeger, ongeveer vlak na de uitvinding van het spijkerschrift, was tekst altijd 'char'. Dat is dus een signed 8-bit waarde.
Tegenwoordig is dat meestal unsigned 8-bit, Dat is 'uint8_t' of 'byte'. Maar toch hebben nog veel functies de 'char' of een 'char' pointer.
Die signed 'char' is tegenwoordig alleen maar lastig, met UTF-8 is gewoon 8-bit zonder sign veel handiger.

Er waren oudere meters die 9600, 7E1 gebruikten. Blijkbaar gemaakt door mensen die nog in 1970 waren blijven hangen.

Als je code hebt die het parity-bit leeg maakt, dan kijk je even via een tijd-portaal naar 1970.

In andere woorden: Je kunt "c &= ~(1 << 7);" weglaten en ik geef de voorkeur aan 'uint8_t' of 'byte'.

Gebruikers-avatar
Berichten: 241
Geregistreerd: 22 Jan 2013, 16:40

Re: 8-bit of 7-bit instelling digitale meter

Berichtdoor zuid » 08 Apr 2020, 21:58

Na het spijkerschrift is er ook nog de ECMA code geweest een 6 bit variant.
:)

Terug naar Arduino IDE

Wie is er online?

Gebruikers in dit forum: Geen geregistreerde gebruikers en 14 gasten