PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : "Einfachstes" Terminalprogramm für Windo.. und Lin



HermannSW
30.05.2007, 22:22
Hallo,

nachdem manchmal das Hyperterminal etwas komisch reagierte, und ich in anderen Beiträgen las, daß auch unter Linux das Ansprechen des USB-Transceivers Probleme bereitet,
https://www.roboternetz.de/phpBB2/zeigebeitrag.php?p=145922#145922
begann ich nach einem "einfachsten" Terminalprogramm zu googlen.

Und siehe da, hier fand ich es, sogar als C-Quelltext:
http://www.c-plusplus.de/forum/viewtopic-var-p-is-285453.html#285453

Folgende Änderung war zu tun, und schon funktionierte das Terminalprogramm unter Linux mit meinem USB-Transceiver:
/cygdrive/c/ASURO_src/terminal
$ diff terminal.c terminalLinux.c
11,12c11,12
< # define TERM_DEVICE "/dev/ttyS0" /* = COM1 */
< # define TERM_SPEED B19200 /* Bit/Sek */
---
> # define TERM_DEVICE "/dev/ttyUSB0" /* = USB? */
> # define TERM_SPEED B2400 /* Bit/Sek */
/cygdrive/c/ASURO_src/terminal

Hier die Änderungen für Windows mit Cygwin für die Ports COM1, COM2 und COM4 (USB):
$ diff terminal.c terminal1.c
12c12
< # define TERM_SPEED B19200 /* Bit/Sek */
---
> # define TERM_SPEED B2400 /* Bit/Sek */
/cygdrive/c/ASURO_src/terminal
$ diff terminal.c terminal2.c
11,12c11,12
< # define TERM_DEVICE "/dev/ttyS0" /* = COM1 */
< # define TERM_SPEED B19200 /* Bit/Sek */
---
> # define TERM_DEVICE "/dev/ttyS1" /* = COM2 */
> # define TERM_SPEED B2400 /* Bit/Sek */
/cygdrive/c/ASURO_src/terminal
$ diff terminal.c terminal4.c
11,12c11,12
< # define TERM_DEVICE "/dev/ttyS0" /* = COM1 */
< # define TERM_SPEED B19200 /* Bit/Sek */
---
> # define TERM_DEVICE "/dev/ttyS3" /* = COM4 */
> # define TERM_SPEED B2400 /* Bit/Sek */
/cygdrive/c/ASURO_src/terminal

Leider klappte zumindest das Setzen der Baudrate für COM4 nicht richtig.
Also ein kleines Batch-file asuroterm.bat drumherum, welches mittels mode dieses Problem löst:
/cygdrive/c/ASURO_src/terminal
$ cat asuroterm.bat
mode com%1: baud=2400 parity=n data=8 stop=1
terminal%1
/cygdrive/c/ASURO_src/terminal

Letzte (notwendige) Zutat ist natürlich cygwin1.dll, damit terminal?.exe auch unter Windows laufen kann. Alles zusammen ist als Attachement nur 720KB groß (die Linuxer können das Programm sicher selber übersetzen). Hier der Inhalt des .zip-files:
/cygdrive/c/ASURO_src/terminal
$ unzip -l terminal.zip
Archive: terminal.zip
Length Date Time Name
-------- ---- ---- ----
58 05-30-07 20:17 terminal/asuroterm.bat
1875258 05-30-07 22:00 terminal/cygwin1.dll
11854 05-30-07 20:13 terminal/terminal1.exe
11854 05-30-07 20:13 terminal/terminal2.exe
11854 05-30-07 20:14 terminal/terminal4.exe
-------- -------
1910730 5 files
/cygdrive/c/ASURO_src/terminal

Der Aufruf für COM4 ist asuroterm 4 und liefert:
C:\ASURO_src\terminal\terminal>asuroterm 4

C:\ASURO_src\terminal\terminal>mode com4: baud=2400 parity=n data=8 stop=1

Status for device COM4:
-----------------------
Baud: 2400
Parity: None
Data Bits: 8
Stop Bits: 1
Timeout: OFF
XON/XOFF: OFF
CTS handshaking: ON
DSR handshaking: OFF
DSR sensitivity: OFF
DTR circuit: ON
RTS circuit: HANDSHAKE


C:\ASURO_src\terminal\terminal>terminal4

-?
call C address [args]
dump D memtype range
enter E memtype address bytes
return R 1|2|4
help ?
quit Q
address = 0000..01FF|1FFF|03FF ; EEPROM/FLASH/SRAM
arg = 00..FF|0000..FFFF|00000000..FFFFFFFF
args = arg|arg args
byte = 00..FF
bytes = byte|byte bytes
memtype = E|F|S ; EEPROM/FLASH/SRAM
range = address [address]
-

Wie gesagt, dies ist das "einfachste" Terminalprogramm, welches ich für den Asuro finden konnte, und es funktioniert sogar Plattformübergreifend ...

<NACHTRAG>
Und so sieht asuroterm richtig aus (mit blinkendem Cursor, der Output hinter dem '?' kommt vom Asuro):
http://www.stamm-wilbrandt.de/videos/asuroterm_anim.gif
</NACHTRAG>

Nun noch das Problem mit der Attachementgröße:
Leider sind Attachements in diesem Forum auf 400KB begrenzt :(

Also beinhaltet das Attachement NICHT die cygwin1.dll.

Diese muß man sich selber holen, der Snapshot 2006-06-26 funktioniert, zu finden hier:
http://cygwin.com/snapshots/
Und hier zum direkten Download (http://cygwin.com/snapshots/cygwin1-20060622.dll.bz2), nur 668KB, aber zum Preis des .bz2-Formats.

Einen .bz2-Dekomprimierer für Windows findet man auf der bzip2 homepage:
http://www.digistar.com/bzip2/

Jetzt noch zwei Schritte: Dekomprimieren der Datei cygwin1-20060622.dll.bz2 mittels bzip2-100-x86-win32.exe -d cygwin1-20060626.dll.bz2
Umbenennen zu cygwin1.dll und Kopieren in das Verzeichnis mit asuroterm.batUff, das war's! :)