| |
VB.NET - Ein- und UmsteigerRS232 - Daten decodieren | | | Autor: chrisbu | Datum: 06.09.13 09:23 |
| Hallo alle zusammen,
ich habe ein Problem, bei dem ich überhaupt nicht weiterkomme.
Infos vorweg: ich habe eine Zeituhr, die über eine RS232-Schnittstelle verfügt. Laut Hersteller werden die Daten am Ende der gemessenen Zeit in eine Textdatei geschrieben, die ich mir dann abholen könnte.
Hier ist schon das Problem: wie komme ich an diese "Textdatei"?
Ich habe bereits mit Putty bzw. Hyperterminal auf den Anschluss gehört, und tatsächlich: sobald eine Zeit gemessen wurde, kommt etwas an. Nur das was ankommt, besteht aus ca. 32 Hexadezimalen Zeichen.
Letztlich bräuchte ich aber die Zeit als String, um sie in meinem bestehenden Programm zu verwenden.
Der Hersteller hat mir eine .Exe mitgegeben, die ein einfaches Textfeld beinhaltet, in dem die Zeit dann ausgegeben wird. Also funktionieren würde das ganze irgendwie. Nur das WIE weiß ich nicht.
Ich habe auch Probleme die Ausgabe des COM-Ports in mein Programm zu bringen. Verschiedene Code-Schnipsel aus dem Web gaben keine Ausgabe.
Mein Wissen über die Schnittstelle ist wirklich fast auf null, weshalb ich eure Hilfe bräuchte.
Erst wäre mal interssant die Zeichen, die mir Putty liefert, in mein Programm zu bekommen und diese dann zu decodieren.
Wenn es eine Möglichkeit gibt, die exe des Herstellers einzubinden und das Textfeld davon zu überwachen, wäre das eine gute Notlösung. Das Programm sollte nämlich Mitte nächster Woche produktiv als Beta eingesetzt werden.
Ich bedanke mich jetzt schon für Eure Vorschläge und Tips! | |
Re: RS232 - Daten decodieren | | | Autor: chrisbu | Datum: 06.09.13 11:31 |
| Hallo auch,
die Uhr ist aus dem Hause hs-electronics.de. Ich behaupte jetzt einfach mal, dass sie nicht sehr verbreitet ist, weshalb ich sie im ersten Post nicht erwähnt hatte.
Das Ergebnis aus dem Telefonat mit dem Hersteller werde ich dann gleich posten!
Bis jetzt habe ich das DataReceived Ereignis verwendet. Jetzt habe ich aber gerade gelesen, dass man das über Thresholds einstellen kann, wann es ausgelöst wird. Weiter habe ich mit ReadLine gearbeitet und ich denke, dass es hier an dem fehlenden Steuerzeichen (Abschlusszeichen) scheitert.
Sobald ich einen einigermaßen logischen Code habe, stelle ich ihn hier rein.
Danke schonmal!
EDIT:
Er meinte folgendes: die EXE schreibt in C:\ eine Textdatei RaceTime. Ob dies stimmt, kann ich erst nachvollziehen, wenn ich hier aus meinem Büro raus bin und in meinem Bastelkeller sitze
Ansonsten wäre das ja einfach zu lösen:
Sobald sich der Wert in der Textdatei ändert, den Wert einlesen und ich habe meine Zeit.
Test erfolgt heute Nachmittag ab 17.00 Uhr - Ergbenisse folgen! | |
Re: RS232 - Daten decodieren | | | Autor: sv00010 | Datum: 07.09.13 18:01 |
| chrisbu schrieb:
Zitat: | |
Weiter habe ich mit
ReadLine gearbeitet und ich denke, dass es hier an dem
fehlenden Steuerzeichen (Abschlusszeichen) scheitert. | |
Ich würde mit .BytesToRead ermitteln, wieviele Bytes im Buffer sind und dann mit .Read den Inhalt des Buffer einlesen (in ein Bytearray). 0
Beitrag wurde zuletzt am 07.09.13 um 18:02:07 editiert. | |
Re: RS232 - Daten decodieren | | | Autor: chrisbu | Datum: 08.09.13 11:08 |
| Hallo nochmal,
also tatsächlich schreibt die Uhr automatisch sobald eine Zeit vorliegt, in C:\RACE_TIME.txt die Zeit.
Diese einzulesen und zu verarbeiten klappt mit
Dim objReader As New StreamReader("C:\RACE_TIME.txt")
Dim sLine As String
sLine = objReader.ReadLine
objReader.Close() richtig gut.
Ich habe nur jetzt ein Problem:
Die Uhr öffnet die Datei, schreibt die Zeit rein und schließt sie wieder. Wenn die Datei bereits geöffnet ist, schreibt sie nichts rein, da kein Zugriff.
Um die Uhr manuell zurückzusetzen muss man 2 Knöpfe betätigen. Es gibt den Modus Automatisch, da bleiben etwa 4 Sekunden, um die Zeit einzulesen (dies geschieht aktuell noch per Button-Klick).
Das passt zwar jetzt nicht mehr zum Thema, aber wie schaffe ich es, die Zeit genau dann aus der Textdatei zu lesen, wenn sie gerade geschrieben wurde, ohne Zugriffskonflikte?
Es gibt den Filesystemwatcher, ja. Allerdings erfasst dieser bei mir quasi ständig Zugriff auf die Datei, da die Anwendung vom Hersteller die Datei im automatischen Modus immer geöffnet hält. | |
Re: RS232 - Daten decodieren | | | Autor: Manfred X | Datum: 08.09.13 12:06 |
| Ich denke, das ist wohl kaum der richtige Weg ....
Du könntest in regelmäßigen Abständen im Dateisystem eine Kopie
dieser RACE_TIME-Datei erstellen und deren Inhalt lesen.
Ein Vergleich mit der zuletzt gelesenen und intern gespeicherten
Uhr-Zeit zeigt dann, ob inzwischen ein neuer Zeit-Eintrag vorliegt.
| |
Re: RS232 - Daten decodieren | | | Autor: BuchEy | Datum: 09.09.13 09:03 |
| Guten Morgen,
den Ansatz mit der Kopie und dem Vergleich habe ich kurz umgesetzt. Es würde funktionieren.
Allerdings weiß ich nicht inwieweit es für die Fesplatte schonend ist, wenn alle 2 Sekunden eine neue Datei geschrieben wird. Ich vergesse immer an dem Rechner, wo ich das Programm schreibe, den Code dann hochzuladen. Lieferung folgt!
Wenn nicht über die Datei, wie würdet Ihr das dann machen? | |
Re: RS232 - Daten decodieren | | | Autor: chrisbu | Datum: 09.09.13 12:39 |
| Tut mir leid, da war noch unser Praktikant angemeldet.
Also keine Exe, sondern direkt vom COM-Port auslesen war auch mein erster Ansatz. Ich werde das heute noch in einer Testumgebung nachbauen.
Wie sv00010 bereits vorgeschlagen hat, werde ich dies mit BytesToRead ausprobieren.
An genaue Herstellerangaben zu kommen ist sehr schwer. Der Kerl hat die Schnittstelle eingebaut, mir nichtmal mitgeteilt mit welcher Rate sie arbeitet etc. Ein selbstgebasteltes USB auf Seriell-Kabel und die EXE und die Worte "Anschließen, Starten, fertig" kamen von ihm. | |
| Sie sind nicht angemeldet! Um auf diesen Beitrag zu antworten oder neue Beiträge schreiben zu können, müssen Sie sich zunächst anmelden.
Einloggen | Neu registrieren |
|
|
sevGraph (VB/VBA)
Grafische Auswertungen
Präsentieren Sie Ihre Daten mit wenig Aufwand in grafischer Form. sevGraph unterstützt hierbei Balken-, Linien- und Stapel-Diagramme (Stacked Bars), sowie 2D- und 3D-Tortendiagramme und arbeitet vollständig datenbankunabhängig! Weitere InfosTipp des Monats Access-Tools Vol.1
Über 400 MByte Inhalt
Mehr als 250 Access-Beispiele, 25 Add-Ins und ActiveX-Komponenten, 16 VB-Projekt inkl. Source, mehr als 320 Tipps & Tricks für Access und VB
Nur 24,95 EURWeitere Infos
|