www.mikrocontroller.net

Forum: PC-Programmierung Details des MSCOMM Objects bei VB


Autor: Christian J. (elektroniker1968)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht 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

Autor: M@D (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Christian (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Der ist doch im Anhang des Beitrages... Alt-F11 drücken.

Autor: tastendrücker (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.