Hallo bin auf der Suche nach einen Terminal Program (auf WIndows10 läuft) was mit einen selbst definierten Datenstring zur Seriellen ( USB Com Port) rausschickt. ABER - ich muss bei jedem Bit die Partiy setzen oder löschen können. Beispiel 2 Byte die in nacheinander gesendet werden. 9600Baud 9bit/parity 12H 12H das erste Byte mit partity=1 und das zweite Byte mit Parity = 0 Die beiden Bytes sollen als sequenz gespeichert sein und auf Knopdruck gesendet werden. Also dann die beiden Bytes raus auf der COM... oder anders Beispiel 10 bytes: das erste und letzte Byte mit parity = 1 udn die anderen mit parity = 0 HINWEIS: Habe Docklight. Da geht das - nur das Programm hat einen Bug. (ist gemeldet) Docklight baut eine Pause von 50-60ms zwischen die beiden Bytes im ersten Beispiel ein. => Logic Analyser ! Grrr mfg Roger
:
Bearbeitet durch User
So ein Programm müsstest Du Dir schon selbst schreiben. Der Sinn ist vermutlich das Nachbilden von 9N1, was manche Microcontroller verwenden können. Nachteil: Die Sache wird sehr, sehr langsam, denn für jedes einzelne zu übertragende Byte muss jeweils die UART neu initialisiert werden. Alternative: Schnapp' Dir einen Arduino o.ä. µC mit zwei UARTs, verbinde die eine davon mit dem PC und lass' darauf ein normales Protokoll (8n1) laufen. Du sendest auf dieser Schnittstelle ein spezielles Textprotokoll, für jedes zu sendende Nutzbyte sendest Du vorher ein zusätzliches Byte, das angibt, ob mit gerader oder ungerader Parity gesendet werden soll: Nutzdaten: "Hallo" zu senden: "EHOaElOlEo" Der µC empfängt dieses Protokoll und schaltet jeweils seine UART um. Wenn der µC eine 9-bit-fähige UART hat, kann statt der zu verwendenden Parity auch gleich der Wert des zu sendenden 9. Bits angegeben werden: Nutzdaten: "Hallo" zu senden: "1H0a1l0l1o"
Roger P. schrieb: > Docklight baut eine Pause von 50-60ms zwischen die beiden Bytes im > ersten Beispiel ein. => Das liegt nicht an Docklight, sondern am USB-Protokoll/Adapter. Docklight wird zwischen den einzelnen Bytes die Schnittstellenparameter umschalten mittels SetCommState, woraufhin der Treiber für den Adapter einen entsprechenden Befehl an den Adapter über USB sendet. Falls es ein USB-CDC-ACM-Adapter ist, ist das der SetLineCoding-Request. Das ist dann einiges an Hin-Und-Her. Proprietäre Protokolle wie vom FT232 werden es wohl ähnlich machen. Die Lösung ist wie von Harald vorgeschlagen, oder du baust dir mit einem USB-fähigen Mikrocontroller einen speziellen USB-Serial-Adapter; der könnte z.B. immer 2 Bytes in ein 9-Bit-Frame zusammenfügen o.ä. Besser natürlich mit einem eigenen USB-Protokoll und einem eigenen PC-Programm statt des Terminals.
Hallo, Das passiert auch auf einen Rechner (Desktop) mit "fest" eingebauter "richtiger" RS232 Schnittstelle. daher glaube ich nicht das es ein Problem mit USB/Seriell Convertern ist. mfg Roland
Auch da muss die Schnittstelle per IOCTL umgeschaltet werden.
Hallo, bin nicht der "PC Programmierer Mensch" ... aber das dauert 60ms? Das ist ja eine gefühlte Ewigkeit.... Roger
:
Bearbeitet durch User
Roger P. schrieb: > bin nicht der "PC Programmierer Mensch" ... aber das dauert 60ms? Es ist halt nicht darauf optimiert, weils das sonst keiner so braucht. Der Request muss erst durch alle Schichten von OS und Treiber durch und wieder zurück. Mit etwas "Glück" wird zwischendurch noch irgendein anderer Thread bearbeitet, dann wird es weiter verzögert. Dazu kommt dass die Bytes einzeln per USB übertragen werden, das hat einfach eine Menge Overhead. Wenn man mehr Bytes auf einmal sendet, ist die Übertragung viel effizienter. Haben die Nachrichten immer die gleiche Struktur/Länge? Das würde die Sache vereinfachen.
:
Bearbeitet durch User
Roger P. schrieb: > Die beiden Bytes sollen als sequenz gespeichert sein und auf Knopdruck > gesendet werden. Also dann die beiden Bytes raus auf der COM... > > oder anders Beispiel 10 bytes: das erste und letzte Byte mit parity = 1 > udn die anderen mit parity = 0 [...] > Docklight baut eine Pause von 50-60ms zwischen die beiden Bytes im > ersten Beispiel ein. => > Logic Analyser ! Grrr Hast du einen grossen Logic Analyser, als so einer wo man Erweiterungskarten einbauen kann? Wenn ja, dann bau dir da einen Pattern Generator ein. Da kannst du dir diese paar Sequenzen ablegen und sie dann per Trigger senden lassen.
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.