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
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
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.