WriteSerialPortString()
- PIC18F2550
- Beiträge: 104
- Registriert: 29.04.2024 09:10
- Computerausstattung: Server HP Proliant G7
PC AMD FX(tm)-9590, 64Gb Ram, 2x 2TB Raid5 SAS
WriteSerialPortString()
Hallo,
ich versuche gerade einen PIC18F2550 mit USBALL10 CDC Version von Sprut, über den Befehl WriteSerialPortString() anzusprechen.
Leider Tut der nix.
Der Chip ist ordnungsgemäß Programmiert und läst sich mit dem USBTEST von Sprut ansteuern, ebenso über die Linuxconsole.
Die Schnittstelle zum Chip wird gefunden und ist richtig eingestellt.
Als Beispiel steht in der Doku der Initalisierungsstring sei "#50-01-00-00-00-00"+chr(0) .
Irgendwie hab ich keine weiteren Ideen um das Problem zu lösen.
ich versuche gerade einen PIC18F2550 mit USBALL10 CDC Version von Sprut, über den Befehl WriteSerialPortString() anzusprechen.
Leider Tut der nix.
Der Chip ist ordnungsgemäß Programmiert und läst sich mit dem USBTEST von Sprut ansteuern, ebenso über die Linuxconsole.
Die Schnittstelle zum Chip wird gefunden und ist richtig eingestellt.
Als Beispiel steht in der Doku der Initalisierungsstring sei "#50-01-00-00-00-00"+chr(0) .
Irgendwie hab ich keine weiteren Ideen um das Problem zu lösen.
Barbarus hic ergo sum, quia non intellegor ulli.
Ein Barbar bin ich hier, da ich von keinem verstanden werde.
ʎɐqǝ ıǝq ɹnʇɐʇsɐʇ ǝuıǝ ɹǝpǝıʍ ǝıu ǝɟnɐʞ ɥɔı ´uuɐɯ ɥo
Ein Barbar bin ich hier, da ich von keinem verstanden werde.
ʎɐqǝ ıǝq ɹnʇɐʇsɐʇ ǝuıǝ ɹǝpǝıʍ ǝıu ǝɟnɐʞ ɥɔı ´uuɐɯ ɥo
Re: WriteSerialPortString()
Vielleicht musst du vorher mit SetSerialPortStatus() den Status von DTR setzen. Hatte vor kurzen auch so ein Problem, wo ein Gerät ohne DTR nicht geantwortet hat.
Ansonst ich habe PIC18F2550/4550 hier und kann dir eventuell helfen.
Edit: Und du musst WriteSerialPortData() verwenden, wenn du 0-Zeichen (Null) senden musst.
Peter
Ansonst ich habe PIC18F2550/4550 hier und kann dir eventuell helfen.
Edit: Und du musst WriteSerialPortData() verwenden, wenn du 0-Zeichen (Null) senden musst.
Peter
- NicTheQuick
- Ein Admin
- Beiträge: 8809
- Registriert: 29.08.2004 20:20
- Computerausstattung: Ryzen 7 5800X, 64 GB DDR4-3200
Ubuntu 24.04.2 LTS
GeForce RTX 3080 Ti - Wohnort: Saarbrücken
Re: WriteSerialPortString()
Eventuell brauchst du auch #PB_Ascii als Format, obwohl UTF-8 sich ja in den unteren 7 Bit nicht von ASCII unterscheidet.
- PIC18F2550
- Beiträge: 104
- Registriert: 29.04.2024 09:10
- Computerausstattung: Server HP Proliant G7
PC AMD FX(tm)-9590, 64Gb Ram, 2x 2TB Raid5 SAS
Re: WriteSerialPortString()
Das mit dem SetSerialPortStatus und DTR werde ich heut Abend mal testen.
Ob ich ein 0-Zeichen senden muss kann ich nicht so genau sagen da in der Doku vom USBALL10 das so steht.
Für die MCD Version (binär) mit dll
Der String (0x50-0x01-0x00-0x00-0x00-0x00) macht alle Pins zu Ausgängen.
Der String (0x50-0x01-0xFF-0xFF-0xFF-0x00) macht alle Pins wieder zu Eingängen.
Für die CDC Version (Ascii) COM1
Der String "#50-01-00-00-00-00"+chr(0) macht alle Pins zu Ausgängen.
Der String "#50-01-FF-FF-FF-00"+chr(0) macht alle Pins wieder zu Eingängen.
Beispiel:
Um das LCD1 zu initialisieren muß man folgende 4 Datenbytes zum USB4all senden:
0x55, 0x01, 0x02, 0x16
Für das USB4all-CDC sendet man dafür folgenden 13 Byte langen String:
"#55-01-02-16"+0x00
Es könnte auch sein das das +chr(0) nicht mit gesendet wird weil WriteSerialPortString dort ein datenende vermutet.
Normalerweise benutze ich die MCD Version unter Win und linux aber da es den Treiber nicht in 64Bit gibt binn ich gezwungen auf die CDC auszuweichen
Danke.
Ob ich ein 0-Zeichen senden muss kann ich nicht so genau sagen da in der Doku vom USBALL10 das so steht.
Für die MCD Version (binär) mit dll
Der String (0x50-0x01-0x00-0x00-0x00-0x00) macht alle Pins zu Ausgängen.
Der String (0x50-0x01-0xFF-0xFF-0xFF-0x00) macht alle Pins wieder zu Eingängen.
Für die CDC Version (Ascii) COM1
Der String "#50-01-00-00-00-00"+chr(0) macht alle Pins zu Ausgängen.
Der String "#50-01-FF-FF-FF-00"+chr(0) macht alle Pins wieder zu Eingängen.
Beispiel:
Um das LCD1 zu initialisieren muß man folgende 4 Datenbytes zum USB4all senden:
0x55, 0x01, 0x02, 0x16
Für das USB4all-CDC sendet man dafür folgenden 13 Byte langen String:
"#55-01-02-16"+0x00
Es könnte auch sein das das +chr(0) nicht mit gesendet wird weil WriteSerialPortString dort ein datenende vermutet.
Normalerweise benutze ich die MCD Version unter Win und linux aber da es den Treiber nicht in 64Bit gibt binn ich gezwungen auf die CDC auszuweichen

Danke.
Barbarus hic ergo sum, quia non intellegor ulli.
Ein Barbar bin ich hier, da ich von keinem verstanden werde.
ʎɐqǝ ıǝq ɹnʇɐʇsɐʇ ǝuıǝ ɹǝpǝıʍ ǝıu ǝɟnɐʞ ɥɔı ´uuɐɯ ɥo
Ein Barbar bin ich hier, da ich von keinem verstanden werde.
ʎɐqǝ ıǝq ɹnʇɐʇsɐʇ ǝuıǝ ɹǝpǝıʍ ǝıu ǝɟnɐʞ ɥɔı ´uuɐɯ ɥo
- PIC18F2550
- Beiträge: 104
- Registriert: 29.04.2024 09:10
- Computerausstattung: Server HP Proliant G7
PC AMD FX(tm)-9590, 64Gb Ram, 2x 2TB Raid5 SAS
Re: WriteSerialPortString()
Hab ich eingestellt. eine Änderung bringt auch nichts neues.NicTheQuick hat geschrieben: 29.04.2024 14:18 Eventuell brauchst du auch #PB_Ascii als Format, obwohl UTF-8 sich ja in den unteren 7 Bit nicht von ASCII unterscheidet.
Barbarus hic ergo sum, quia non intellegor ulli.
Ein Barbar bin ich hier, da ich von keinem verstanden werde.
ʎɐqǝ ıǝq ɹnʇɐʇsɐʇ ǝuıǝ ɹǝpǝıʍ ǝıu ǝɟnɐʞ ɥɔı ´uuɐɯ ɥo
Ein Barbar bin ich hier, da ich von keinem verstanden werde.
ʎɐqǝ ıǝq ɹnʇɐʇsɐʇ ǝuıǝ ɹǝpǝıʍ ǝıu ǝɟnɐʞ ɥɔı ´uuɐɯ ɥo
Re: WriteSerialPortString()
Also ich habe mir das Hanbuch kurz angeschaut, aber das ist die Rede von 'Bytes' für das Senden und Empfangen. Die Bezeichnung 'String' wird nur im Text als Erklärung verwendet, das sollte man aber nicht wörtlich nehmen denke ich.
Probiere die Daten mit Write/ReadSerialPortData() zu senden und empfangen.
Peter
Probiere die Daten mit Write/ReadSerialPortData() zu senden und empfangen.
Peter
- PIC18F2550
- Beiträge: 104
- Registriert: 29.04.2024 09:10
- Computerausstattung: Server HP Proliant G7
PC AMD FX(tm)-9590, 64Gb Ram, 2x 2TB Raid5 SAS
Re: WriteSerialPortString()
MCD Version -> Bytes -> 64 bro Block
CDC Version -> ASCII -> 20 "Bytes" pro Block
CDC Version -> ASCII -> 20 "Bytes" pro Block
Barbarus hic ergo sum, quia non intellegor ulli.
Ein Barbar bin ich hier, da ich von keinem verstanden werde.
ʎɐqǝ ıǝq ɹnʇɐʇsɐʇ ǝuıǝ ɹǝpǝıʍ ǝıu ǝɟnɐʞ ɥɔı ´uuɐɯ ɥo
Ein Barbar bin ich hier, da ich von keinem verstanden werde.
ʎɐqǝ ıǝq ɹnʇɐʇsɐʇ ǝuıǝ ɹǝpǝıʍ ǝıu ǝɟnɐʞ ɥɔı ´uuɐɯ ɥo
- PIC18F2550
- Beiträge: 104
- Registriert: 29.04.2024 09:10
- Computerausstattung: Server HP Proliant G7
PC AMD FX(tm)-9590, 64Gb Ram, 2x 2TB Raid5 SAS
Re: WriteSerialPortString()
So es läuft jetzt.
Mann sollte schon richtig und bis zum Ende Lesen.
Das geht in PureBasic nicht -> ‘#55-01-02-16’+chr($0) weil das das Stringende kennzeichnet.
Aber das geht -> ‘#55-01-02-16’+chr($A) "Zeilenvorschub"

Danke.
Mann sollte schon richtig und bis zum Ende Lesen.

Code: Alles auswählen
Den Beginn eines Kommandostrings kennzeichnet ein ‘#’.
Das Ende eines Kommandostrings kennzeichnet ein Byte mit dem Wert 0x00
(nullterminiert), 0x0A (Zeilenvorschub) oder 0x0D (Wagenrücklauf). Die Gesamtlänge des
String darf nicht größer als 64 sein. Da für ein Datenbyte im String drei ASCII-Zeichen
verwendet werden, ist die Befehlslänge auf 20 Datenbyes begrenzt, was aber nur bei
einigen Blocktranfer-Befehlen eine Einschränkung darstellen könnte.
Beispiel:
Um das LCD1 zu initialisieren muß man folgende 4 Datenbytes zum USB4all senden:
0x55, 0x01, 0x02, 0x16
Für das USB4all-CDC sendet man dafür folgenden 13 Byte langen String:
‘#55-01-02-16’+0x00
Aber das geht -> ‘#55-01-02-16’+chr($A) "Zeilenvorschub"






Danke.
Barbarus hic ergo sum, quia non intellegor ulli.
Ein Barbar bin ich hier, da ich von keinem verstanden werde.
ʎɐqǝ ıǝq ɹnʇɐʇsɐʇ ǝuıǝ ɹǝpǝıʍ ǝıu ǝɟnɐʞ ɥɔı ´uuɐɯ ɥo
Ein Barbar bin ich hier, da ich von keinem verstanden werde.
ʎɐqǝ ıǝq ɹnʇɐʇsɐʇ ǝuıǝ ɹǝpǝıʍ ǝıu ǝɟnɐʞ ɥɔı ´uuɐɯ ɥo
Re: WriteSerialPortString()
Ich habe die Firmware mit einem PIC18F4550 ausprobiert. Den CDC-Treiber habe ich mit Zadig unter Windows 7 x64 installiert. Ein Test mit meinem Skript-Programm hat funktioniert, die Version der Fimware konnte ich richtig abfragen.
Geflasht habe ich direkt die 40-Pin Version ohne Bootloader. Ich habe nur die Taktfrequenz vom Oszillator in der Konfiguration geändert.
Hier ein Screenshot: https://www.dreisiebner.at/temp/PB_Usb4All.png
Ist ein interessantes Projekt von sprut.de, kannte ich nicht.
Peter
Geflasht habe ich direkt die 40-Pin Version ohne Bootloader. Ich habe nur die Taktfrequenz vom Oszillator in der Konfiguration geändert.
Hier ein Screenshot: https://www.dreisiebner.at/temp/PB_Usb4All.png
Ist ein interessantes Projekt von sprut.de, kannte ich nicht.
Peter
- PIC18F2550
- Beiträge: 104
- Registriert: 29.04.2024 09:10
- Computerausstattung: Server HP Proliant G7
PC AMD FX(tm)-9590, 64Gb Ram, 2x 2TB Raid5 SAS
Re: WriteSerialPortString()
Das war mein 1.Risc Prozessor den fand ich damals schon toll.
Das einzige wass mich immer genervt hat das die Funktionen an bestimmte Pins gebunden waren.
Derzeit hänge ich hauptsächlich am Parallax Propeller1 und Propeller2.
Das sind Risc prozessoren mit 8 Kerne.
Das einzige wass mich immer genervt hat das die Funktionen an bestimmte Pins gebunden waren.
Derzeit hänge ich hauptsächlich am Parallax Propeller1 und Propeller2.
Das sind Risc prozessoren mit 8 Kerne.
Barbarus hic ergo sum, quia non intellegor ulli.
Ein Barbar bin ich hier, da ich von keinem verstanden werde.
ʎɐqǝ ıǝq ɹnʇɐʇsɐʇ ǝuıǝ ɹǝpǝıʍ ǝıu ǝɟnɐʞ ɥɔı ´uuɐɯ ɥo
Ein Barbar bin ich hier, da ich von keinem verstanden werde.
ʎɐqǝ ıǝq ɹnʇɐʇsɐʇ ǝuıǝ ɹǝpǝıʍ ǝıu ǝɟnɐʞ ɥɔı ´uuɐɯ ɥo