Serielle Datenübertragung mit Basicprogrammen

SERIELLE DATENÜBERTRAGUNG

Wenn mann eine Datei, z.B. eine Programm über einen seriellen Port empfängt, muss dieser unbedingt mit CHR$ 26 abgeschlossen werden, da der Sharp CHR$ 26 als EOF (End of File) Marke verwendet.

Falls keine CHR$ 26 emfangen wird, muss die Übertragung mittels (BREAK) unterbrochen werden. Die letzten empfangenen Daten, die sich immer im Empfangspuffer befinden, gehen dann verloren. Dies steht nicht in meiner Bedienungsanleitung.

KEIN LINPUT

" , " fungiert als Datentrenner bei sequentielle Dateien. Das kann problematisch sein wenn man Textdateien speichern, die " , " enthalten. Wenn die Datei mittels INPUT# gelesen wird, verschwindet die Komma' s.

Sehen Sie volgendes Beispiel:

Um dies zu vermeiden, kann man statt "," (CHR$ 44)  CHR$ (44+128) verwenden. Dies ist durch KBII, SHIFT, J, KBII zu erreichen.

In meinem Textverarbeitungsprogramm habe,ich eine kleine Routine, die alle CHR$ 44 mit CHR$ 172 ersetzen bevor gepeichert wird, und umgekehrt bei lesen.

Wenn ich die Datei mittels LOAD* lade, findet selbsverstsendlich keine CHR$ 44 / CHR$ 172 wandlung statt, aber das macht nichts.

Meine Typenraddrucker (Brother HR15) berücksichtigt Bit 7 nicht, und fuer ihn ist es ganz egal, ob man CHR$ 44 oder CHR$ 172 zu ihn schreibt. (Wenn man seine Dateien ausschlieslich mittels LOAD* lädt, gibt es das Problem nicht, weil der Sharp fuer LOAD* nur CHR$ 13 als Datentrenner versteht).

Wenn bei den Sharp eine LINPUT befehl zu Verfuegung stuende, waehre es kein Problem mehr, weil bei LINPUT nur CHRS 13 als Datentrenner verstanden werden soll.

OPEN "X:PROBE.TXT", FOR OUTPUT AS #1
PRINT #1," CIAO!"
PRINT #1,"PC-1600 MI PIACI, ANCHE TI?"
CLOSE #1

DIM A$(2)*80
OPEN "X:PROBE.TXT" FOR INPUT AS #1
INPUT #1,A$(0)
INPUT #1,A$(1)
INPUT #1,A$(2)
CLOSE #1
PRINT A$(0)
'CIAO!
PRINT A$(1)
'PC-1600 MI PIACI
PRINT A$(2)
'ANCHE TI?

Bemerken Sie auch in das obige Beispiel, dass die vier Leerzeichen bevor "CIAO"' verschwunden sind. Leerzeichen am anfang einer Zeile wird von INPUT# nicht beruecksichtigt.

Henn man die ersten Leerzeichen, CHR$ (32) durch CNR$(32+128) = CHR$(160), oder KBII, A, KBII, ersetzt, kommen auch die Anfangsleerzeichen mit. Dies ist auch kein Problem mit LOAD*.

Es ist wohl bekannt dass als Antwort eine INPUT Frage keine " eingegeben werden kann. Man kann densselben Trick hier benutzen. " ist CHR$ 34, und man kann CHR$ 162 benutzen. CHR$ 162 ist durch KBII, F, KBII zu erreichen.

Wenn man eine Drucker mit IBM kompatibeles Zeichensatz besitzt, kann die oben genannte Tricks nicht verwendet werden, da Bit 7 hier berücksichtigt wird.