Forum: PC-Programmierung Details des MSCOMM Objects bei VB


von Christian J. (elektroniker1968)


Angehängte Dateien:

Lesenswert?

Hallo,

meine Datenerfassung läuft soweit, zumindest mit ein paar 
programmtechnischen Verrenkungen. (siehe Excel Sheet)

Kennt sich einer gut mit dem mscomm Activex Objekt aus?

Die Aufgabe:

Ein uC sendet einen Datenstring an den PC im Ascii Format, also
zB X 23 34 45 56 56 Y. Ich habe nie eine Anwendung gesehen, die 
Binärdaten sendet, also habe ich das auch nicht gemacht, mit der split 
Funktion in VB kriegt man die schön in einen Array zerhackt.

Darin sind einige Werte codiert, die in der Tabelle erscheinen sollen. 
Der String wird alle 10s gesendet. Das X wird abgefragt, ist es nicht da 
wird der String verworfen. Ich sende mit 9600, 57600 sind zu schnell.

Nach viel Experimentieren habe ich gemerkt, dass es oft vorkommt, dass 
der Empfang aus dem Tritt kommt, denn der Input Buffer löst nur einen 
IRQ aus, wenn eine vordefinierte Anzahl Zeichen darin ist. Stelle ich 
den Threshold auf 1, also IRQ nach einem Zeichen verliere ich alle 
anderen, VB ist nicht schnell genug, um den IRQ bei jedem Byte 
auszulösen.

Derzeit schicke ich nach dem String noch 10 Nullen mit, die garantiert 
einen IRQ auslösen, also IRQ nach 25 Zeichen, gesendet werden aber 30, 
die Nullen werden verworfen, weil sie einen Srring ohnehin terminieren.

Was ich gemerkt habe: Nach jedem Empfang eines Strings MUSS ich COM1 
resetten, durch Aus und wieder einschalten, sonst enthält der Input 
Buffer immer noch die Zeichen vom letzten mal, obwohl ich den ausgelesen 
habe.

Hat da jemand vielleicht eine Patentlösung, wie das sicher geht? Es geht 
auch hier aber schön ist das nicht.

Gruss,
Christian

von M@D (Gast)


Lesenswert?

Moin!

Zeig' mal bitte ein bisserl was von Deinem Sourcecode, dann läßt sich 
wahrscheinlich recht flott sagen, wo der Wurm drinsteckt. Btw.: Hast Du 
die Eigenschaft .InputLen = 0 gesetzt?

Greetz M@D

von Christian (Gast)


Lesenswert?

Der ist doch im Anhang des Beitrages... Alt-F11 drücken.

von tastendrücker (Gast)


Lesenswert?

Die wenigsten werden sich eine EXCEL-Datei downloaden!!

Daher nur ein Tip ins blaue:

Auch wenn du Threshold auf 1 setzt, kann es sein, dass mehr als ein 
Zeichen im Input-Bufer sind. Du musst also immer den ganzen Puffer 
lesen, nicht nur ein Zeichen. Dann bekommst du auch alle mit.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.