vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#
Brandneu! sevEingabe v3.0 - Das Eingabecontrol der Superlative!  
 vb@rchiv Quick-Search: Suche startenErweiterte Suche starten   Impressum  | Datenschutz  | vb@rchiv CD Vol.6  | Shop Copyright ©2000-2024
 
zurück

 Sie sind aktuell nicht angemeldet.Funktionen: Einloggen  |  Neu registrieren  |  Suchen

VB.NET - Ein- und Umsteiger
RS232 - 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!
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: RS232 - Daten decodieren 
Autor: Manfred X
Datum: 06.09.13 11:06

Hallo!

Ich würde zunächst raten, den Hersteller und die genaue Typbezeichnung der Uhr zu nennen.
Vielleicht kennt jemand das Teil....
Du kannst auch beim Hersteller nachfragen, wie er die Zeit codiert hat bzw. wo diese
Textdatei ggf. abgelegt wird (interner Speicher der Uhr?).

Wenn die Uhr etwas über die Schnittstelle sendet, sollte es in Deinem Programm
auch ankommen. Wie bist du bisher vorgegangen?

http://stackoverflow.com/questions/5101217/rs232-serial-port-communication-c-sharp-win7-net-framework-3-5-sp1







Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

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!
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

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.
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

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.
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

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.



Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: RS232 - Daten decodieren 
Autor: ronnie
Datum: 09.09.13 09:00

Hallo,
ich denke auch nicht das der Weg über die Datei optimal ist.
Aber wenn du das trotzdem machen willst wäre vielleicht der "Filesystemwatcher" was für dich.

http://msdn.microsoft.com/de-de/library/system.io.filesystemwatcher%28v=vs.80%29.aspx
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

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?
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: RS232 - Daten decodieren 
Autor: ModeratorDaveS (Moderator)
Datum: 09.09.13 09:39

Bist du denn chrisbu? Bitte nur einen Nick verwenden. Und sinnvoll wäre es natürlich einfach die Daten direkt auszulesen wie die exe das auch macht, was keine große Sache wäre. Im Forum findest du viele Beispiele für SerialPort und wenn es auf Anhieb nicht klappt dann können wir wahrscheinlich weiter helfen. Nur bitte Code posten und gut erklären was genau passiert (Fehlermeldung, Exception, Ergebnisse usw). Sinnvoll wäre es beim Hersteller nachzufragen welsche Daten gesendet werden wenn es nicht in der Doku steht.

________
Alle Angaben ohne Gewähr. Keine Haftung für Vorschläge, Tipps oder sonstige Hilfe, falls es schiefgeht, nur Zeit verschwendet oder man sonst nicht zufrieden ist

Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

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.
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

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

Funktionen:  Zum Thema  |  GesamtübersichtSuchen 

nach obenzurück
 
   

Copyright ©2000-2024 vb@rchiv Dieter Otter
Alle Rechte vorbehalten.
Microsoft, Windows und Visual Basic sind entweder eingetragene Marken oder Marken der Microsoft Corporation in den USA und/oder anderen Ländern. Weitere auf dieser Homepage aufgeführten Produkt- und Firmennamen können geschützte Marken ihrer jeweiligen Inhaber sein.

Diese Seiten wurden optimiert für eine Bildschirmauflösung von mind. 1280x1024 Pixel