Moin, ich möchte meine Kern PLE 420-3N Auslesen. Ich habe es auch hinbekommen, dass die Waage, die an das Arduino per RS232 angeschlossen ist, ihre Werte an den PC sendet. Mit Serial.write wird der ASCII Code sogar automatisch mit dem eingebauten Plotten in Klartext umgewandelt! Ich möchte die Werte im Arduino weiter verarbeiten und muss daher den ASCII Code selbst übersetzten. Die Waage gibt per Serial.println die nicht übersetzten Werte aus. Ich habe eine Excel Tabelle mit den Werten angehängt. Mir ist aufgefallen, dass vor jedem Ergebnis 4x die 32 vorkommt und jeweils mit 71 (G) und 78 (N) endet + zusätzlich ein 83 (S), wenn das die Waage stable ausgibt (die Einheit ist Grain = GN). Wie kann ich den "Mittelteil", d.H. alles nach 4x der 32 bis zum N oder S (wenn Stable) auslesen und übersetzen? Bin leider nicht so fit mit dem Arduino, aber brauche das um einen kleinen Motor anzusteuern, um automatisch ein bestimmtes Gewicht zu erreichen. Danke schon im Voraus!
Du hast mit Deinem Screenshot so ziemlich die ungünstigste Darstellung gewählt, die möglich ist. Wenn Du einfach die Zahlen gepostet hättest, oder besser den String, wäre es einfacher gewesen. Was da kommt ist "- 0.20 GNS\r\n". Du schreibst alle Zeichen in ein char[]-Array, und wenn dann "\r\n" vorbei kommt, wirst Du das dann atoi() zum Frass vor, sofern es 15 Zeichen sind. Bei jedem '\n' fängst Du im Puffer von vorne an und stellst den Zähler auf 0. Falls Du atoi() nicht benutzen willst (warum?), musst Du selbst die Dezimalzahl nach int wandeln. War das Deine Frage? Dann solltest Du fragen "Wie wandele ich eine Zahl in einem String in int um?"
Hallo Constantin, Constantin D. schrieb: > Wie kann ich den "Mittelteil", d.H. alles nach 4x der 32 bis zum N oder S > (wenn Stable) auslesen und übersetzen? Thilo R. schrieb: > Was da kommt ist "- 0.20 GNS\r\n" Sobald du diese Zeichenkette (die der Anleitung in http://dok.kern-sohn.com/manuals/files/German/PLE_N-BA-d-1725.pdf Kapitel 10.5 entspricht) wie von Thilo beschrieben aus dem seriellen Zeichenstrom in einen char ple[16] extrahiert (und mit '\0' abgeschlossen) hast, kannst du zum Beispiel mit
1 | |
2 | |
3 | |
4 | |
5 | |
6 | |
7 | |
den Messwert ermitteln. Die Einheit findest du in ple[9] bis ple[11], das 'S' für Stable in ple[12]. LG, Sebastian
Vielen Dank für die Antworten! Hab beim rumprobieren festgestellt, dass readStringUntil das anscheinend schon selbst umwandelt! Funktioniert bei mir jetzt perfekt, aber vlt könnt ihr mir ja noch ein paar Tipps geben, was man besser machen kann ;)
1 | |
2 | |
3 | |
4 | |
5 | |
6 | |
7 | |
8 | |
9 | |
10 | |
11 | |
12 | |
13 | |
14 | |
15 | |
16 | |
17 | |
18 | |
19 | |
20 | |
21 | |
22 | |
23 | |
24 | |
25 | |
26 | |
27 | |
28 | |
29 | |
30 | |
31 | |
32 | |
33 | |
34 | |
35 | |
36 | |
Hallo Zusammen, ich bin noch ganz grün hinter den Ohren ;) Ich habe eine Kern Waage mit defektem LCD und ich habe versucht über den TX Ausgang vom RS232 über ein TTL die Messwerte mit einem Arduino auszulesen und auf ein 20x4 LCD zu senden. Leider bis dato ohne Erfolg. Es kommt nur ...⸮⸮... im Serial Monitor wenn ich auf print drücke
Könnte mir jemand helfen?
hier mein Code.
1 |
|
2 |
|
3 |
|
4 |
|
5 |
|
6 |
|
7 |
|
8 |
|
9 |
|
10 |
|
11 |
|
12 |
|
13 |
|
14 |
|
15 |
|
16 |
|
17 |
|
18 |
|
19 |
|
20 |
|
21 |
|
22 |
|
23 |
|
24 |
|
25 |
|
26 |
|
27 |
|
28 |
|
29 |
|
30 |
|
31 |
|
32 |
|
33 |
|
34 |
|
35 |
|
36 |
|
37 |
|
38 |
|
39 |
|
40 |
|
41 |
|
42 |
|
43 |
|
44 |
|
45 |
|
46 |
|
47 |
|
48 |
|
49 |
|
50 |
|
51 |
|
52 |
|
53 |
|
54 |
|
55 |
|
56 |
|
57 |
|
58 |
|
59 |
|
60 |
|
61 |
|
62 |
|
Hallo, Mattus schrieb im Beitrag #7576232:
Es kommt nur ...⸮⸮... im Serial Monitor wenn ich auf print drücke
Probiere mal hier statt 9600 andere Baud-Raten.
mySerial.begin(9600);
rhf
Hallo Roland,
danke für den Hinweis doch leider ist die Baudrate laut Handbuch auch 9600
https://corina-weighing.se/wp-content/uploads/2020/04/Communication.protocol.KCP-ZB-e-1712.pdf
ggf. hilft das Handbuch weiter
9600 ist nur die Voreinstellung. Möglich sind wohl auch 1200 2400 und 4800.
Ist ja schnell getestet.
habe versucht über den TX Ausgang vom RS232 über ein TTL die Messwerte mit einem Arduino auszulesen
was sagt Hterm oder PuTTy? Die waage mal direkt mit dem PC verbunden?
Hallo, Mattus schrieb im Beitrag #7576242:
danke für den Hinweis doch leider ist die Baudrate laut Handbuch auch 9600
Dann:
was sagt Hterm oder PuTTy? Die waage mal direkt mit dem PC verbunden?
rhf
ich habe versucht über den TX Ausgang vom RS232 über ein TTL die Messwerte mit einem Arduino auszulesen .... Leider bis dato ohne Erfolg
Kein Wunder. TTL ist nicht RS232. Die Signale unterscheiden sich in Pegel und Polarität. Du solltest erstmal klären, was bei dir Sache ist.
Was hat das eigentlich mit dem Thema ASCII dieses drei Jahre alten Threads zu tun? Du hast ein ganz anderes Problem.
hier mein Code.
Bitte mal die Bedieunungsanleitung lesen und künftig die C-Tags selber einsetzen.
Antwort schreiben
Bitte melde dich an, um einen Beitrag zu schreiben.
