Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht Das deutsche QBasic- und FreeBASIC-Forum
Für euch erreichbar unter qb-forum.de, fb-forum.de und freebasic-forum.de!
 
FAQFAQ   SuchenSuchen   MitgliederlisteMitgliederliste   BenutzergruppenBenutzergruppen  RegistrierenRegistrieren
ProfilProfil   Einloggen, um private Nachrichten zu lesenEinloggen, um private Nachrichten zu lesen   LoginLogin
Zur Begleitseite des Forums / Chat / Impressum
Aktueller Forenpartner:

COM1 Abfrage mit qbasic

 
Neues Thema eröffnen   Neue Antwort erstellen    Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht -> Profi-Forum
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen  
Autor Nachricht
pol0815



Anmeldungsdatum: 21.05.2006
Beiträge: 8

BeitragVerfasst am: 21.05.2006, 17:03    Titel: COM1 Abfrage mit qbasic Antworten mit Zitat

benötige hilfe bei der Abfrage der com1 schnittstelle.

ich möchte die daten G;i000 an com1 senden und nach ca 1 sekunde
G;i001
wieder eine pause von ca. 1 sekunde
und so weiter bis G;i199
sollte jedoch ein E; kommen sollte T; gesendet werden

Nach den senden sollen die empfangenden daten in einer textdatei geschrieben werden.

HIER IST MEIN DERZEITIGES PRO.

Code:
Open "1-1.txt" For Append As #2
Open "COM1: 9600,N,8,1,CD,CS,DS" For Random As #1

Cls                          'Bildschirm loeschen
Print #1, "G;i000"      'senden von G;I000

Do                           'Hauptschleife
 '-- S e n d e n ---------:
 z$ = INKEY$                 'Tastendruck speichern
 If z$ <> "" Then            'wenn Taste gedrueckt ...
  Print z$;                      'Zeichen anzeigen
  Print #1, z$;                'und auf Schnittstelle geben
 End If

 '-- E m p f a n g e n ---:
 If Loc(1) Then              'wenn Zeichen auf Schnittstelle eingegangen ...
  z$ = Input$(1, #1)      'dieses speichern
 
 Print z$;                      'Zeichen anzeigen
 
 If z$ = Chr$(13) Then Print #2, zeile$: zeile$ = ""
 If z$ > Chr$(47) And z$ < Chr$(60) Then zeile$ = zeile$ + z$
 End If
Loop Until z$ = Chr$(27)     'Ende mit Taste Escape

Close #1                     'Schnittstelle schliessen
Close #2                     'Textdatei schliessen

bei dieser version muß ich leider die Daten immer von hand eingeben,
würde dieses jedoch lieber automatisch machen, aber leider bekomme ich es nicht hin.
Vielleicht kann mir hierbei jemand helfen.


Zuletzt bearbeitet von pol0815 am 21.05.2006, 17:31, insgesamt einmal bearbeitet
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Michael Frey



Anmeldungsdatum: 18.12.2004
Beiträge: 2577
Wohnort: Schweiz

BeitragVerfasst am: 21.05.2006, 17:10    Titel: Antworten mit Zitat

So etwa?
Code:
Open "1-1.txt" For Append As #2
Open "COM1: 9600,N,8,1,CD,CS,DS" For Random As #1

Cls 'Bildschirm loeschen
for i=0 to 199
Print #1, "G;i"+ltrim$(str$(i)) 'senden von G;I000 bis G;I199

Do 'Hauptschleife
'-- S e n d e n ---------:
z$ = INKEY$ 'Tastendruck speichern
If z$ <> "" Then 'wenn Taste gedrueckt ...
Print z$; 'Zeichen anzeigen
Print #1, z$; 'und auf Schnittstelle geben
End If

'-- E m p f a n g e n ---:
If Loc(1) Then 'wenn Zeichen auf Schnittstelle eingegangen ...
z$ = Input$(1, #1) 'dieses speichern

Print z$; 'Zeichen anzeigen

If z$ = Chr$(13) Then Print #2, zeile$: zeile$ = ""
If z$ > Chr$(47) And z$ < Chr$(60) Then zeile$ = zeile$ + z$
End If
Loop Until z$ = Chr$(27) 'Ende mit Taste Escape
next i
Close #1 'Schnittstelle schliessen
Close #2 'Textdatei schliessen


Leider verstehe ich dein Problem nicht.
_________________
http://de.wikibooks.org/wiki/FreeBasic Jede Hilfe für dieses Buch ist Willkommen!
http://de.wikibooks.org/wiki/FreeBasic:_FAQ FAQ zu Freebasic (im Aufbau, hilfe Willkommen)
Neu mit Syntax Highlight
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
pol0815



Anmeldungsdatum: 21.05.2006
Beiträge: 8

BeitragVerfasst am: 21.05.2006, 17:25    Titel: COM1 Abfrage Antworten mit Zitat

danke für die schnelle hilfe,

leider zeigt das programm nur jede 2te zeile an.
beispiel:
;0
;001;1405060807;1;123456;080013570444;;000;
;2
;003;1405060813;13;42358390;08000537801;;000;
;4
;005;1405060815;17;42538390;08009053086;;000;
;6

und so weiter
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Michael Frey



Anmeldungsdatum: 18.12.2004
Beiträge: 2577
Wohnort: Schweiz

BeitragVerfasst am: 21.05.2006, 17:39    Titel: Antworten mit Zitat

verwundert
Beschreib bitte mal genau was das Programm machen soll.
Ich hab jetzt echt keinen durchblick.

Zitat:
sollte jedoch ein E; kommen sollte T; gesendet werden

Wenn du an der Schnittstelle ein E bekommst, soll das Programm mit einem T antworten?

Code:
'-- E m p f a n g e n ---:
If Loc(1) Then 'wenn Zeichen auf Schnittstelle eingegangen ...
z$ = Input$(1, #1) 'dieses speichern

Print z$; 'Zeichen anzeigen

If z$ = Chr$(13) Then Print #2, zeile$: zeile$ = ""
If z$ > Chr$(47) And z$ < Chr$(60) Then zeile$ = zeile$ + z$
End If
Loop Until z$ = Chr$(27) 'Ende mit Taste Escape
next i

Wieso regiert das Programm auf die Escape Taste wenn sie vom Comport kommt?
Also wieso nicht die "lokale" Tastatur?
_________________
http://de.wikibooks.org/wiki/FreeBasic Jede Hilfe für dieses Buch ist Willkommen!
http://de.wikibooks.org/wiki/FreeBasic:_FAQ FAQ zu Freebasic (im Aufbau, hilfe Willkommen)
Neu mit Syntax Highlight
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
pol0815



Anmeldungsdatum: 21.05.2006
Beiträge: 8

BeitragVerfasst am: 21.05.2006, 17:48    Titel: Antworten mit Zitat

wenn ein E; kommt
sollte ein T; gesendet werden .
aber zwischen den senden von G;i001 und so weiter muß eine pause von ca. 1 sekunde sein weil die daten sonst nicht eingelesen werden können
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Michael Frey



Anmeldungsdatum: 18.12.2004
Beiträge: 2577
Wohnort: Schweiz

BeitragVerfasst am: 21.05.2006, 17:59    Titel: Antworten mit Zitat

Noch immer Banhof
So vielleicht?
Code:
DIM i AS INTEGER
DIM t AS DOUBLE

OPEN "1-1.txt" FOR APPEND AS #2
OPEN "COM1: 9600,N,8,1,CD,CS,DS" FOR RANDOM AS #1

CLS                          'Bildschirm loeschen

FOR i = 0 TO 199
        PRINT #1, USING "G;i###"; i     'senden von G;I000
        t = TIMER
        DO                           'Hauptschleife
                 '-- S e n d e n ---------:
                 q$ = INKEY$                 'Tastendruck speichern
                 IF q$ <> "" THEN            'wenn Taste gedrueckt ...
                        PRINT q$;                      'Zeichen anzeigen
                        PRINT #1, q$;                'und auf Schnittstelle geben
                 END IF

                 '-- E m p f a n g e n ---:
                 IF LOC(1) THEN              'wenn Zeichen auf Schnittstelle eingegangen ...
                        z$ = INPUT$(1, #1)      'dieses speichern
                 
                        PRINT z$;                      'Zeichen anzeigen
                 
                        IF z$ = CHR$(13) THEN PRINT #2, zeile$: zeile$ = ""
                        IF z$ > CHR$(47) AND z$ < CHR$(60) THEN zeile$ = zeile$ + z$
                        IF z$ = "E" THEN PRINT #1, "T"
                 END IF
        LOOP UNTIL q$ = CHR$(27) OR t > TIMER OR t + 1 < TIMER'Ende mit Taste Escape oder nach 1 Sekunde
NEXT i
CLOSE #1                     'Schnittstelle schliessen
CLOSE #2                     'Textdatei schliessen

_________________
http://de.wikibooks.org/wiki/FreeBasic Jede Hilfe für dieses Buch ist Willkommen!
http://de.wikibooks.org/wiki/FreeBasic:_FAQ FAQ zu Freebasic (im Aufbau, hilfe Willkommen)
Neu mit Syntax Highlight
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
pol0815



Anmeldungsdatum: 21.05.2006
Beiträge: 8

BeitragVerfasst am: 21.05.2006, 18:05    Titel: Antworten mit Zitat

so ist es schon fast richtig nur kommt immer

;000;1405060805;11;123456;08001144445;;000;
;000;1405060805;11;123456;08001144445;;000;
;000;1405060805;11;123456;08001144445;;000;
;000;1405060805;11;123456;08001144445;;000;
;000;1405060805;11;123456;08001144445;;000;
;000;1405060805;11;123456;08001144445;;000;

scheinbar sendet es immer G;i000
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Michael Frey



Anmeldungsdatum: 18.12.2004
Beiträge: 2577
Wohnort: Schweiz

BeitragVerfasst am: 21.05.2006, 18:11    Titel: Antworten mit Zitat

verwundert
Den ganzen Code kann ich nicht prüfen aber die Fragmente seinen zupassen:
Code:
DIM i AS INTEGER
FOR i = 0 TO 199
        PRINT USING "G;i###"; i
NEXT i


Ich seh auch nirgends eine zweit Verwenung von i ...
Anwas kann das liegen!?

Must du
G;i000
oder
G;I000
senden oder spielt das keine Rolle?
_________________
http://de.wikibooks.org/wiki/FreeBasic Jede Hilfe für dieses Buch ist Willkommen!
http://de.wikibooks.org/wiki/FreeBasic:_FAQ FAQ zu Freebasic (im Aufbau, hilfe Willkommen)
Neu mit Syntax Highlight
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
pol0815



Anmeldungsdatum: 21.05.2006
Beiträge: 8

BeitragVerfasst am: 21.05.2006, 18:17    Titel: Antworten mit Zitat

ich versuche es noch mal zu erklären.

Das Programm soll über die COM1 den Text
G;i000
G;i001
G;i002
G;i003
G;i004
...
G;i199

zwischen den senden sollte eine pause von ca. 1 sekunde sein, damit die Daten eingelesen werden können.

kommt als anwort ein E; sollte ein T; gesendet werden und das Programm beendet werden.

Die Daten sollten in einer Textdatei gespeichert werden.
Es sollten auch nur die zeichen zwischen chr$(47) und chr$(60) gesichert werden

ist es einfacher zu verstehen ?
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Michael Frey



Anmeldungsdatum: 18.12.2004
Beiträge: 2577
Wohnort: Schweiz

BeitragVerfasst am: 21.05.2006, 18:25    Titel: Antworten mit Zitat

Den Teil hab ich verstanden, aber ich weiss ja nicht was die Gegenstelle genau erwartet.

Jenach "Intelligenz" kann gross und kleinschreibung sehr wichtig sein.

Im Code er kenne ich auch keine Fehler und darum suche ich den Fehler auch in der Gegenstelle.

Edit://
Die Tabelle hier
pol0815 hat Folgendes geschrieben:
;000;1405060805;11;123456;08001144445;;000;
;000;1405060805;11;123456;08001144445;;000;
;000;1405060805;11;123456;08001144445;;000;
;000;1405060805;11;123456;08001144445;;000;
;000;1405060805;11;123456;08001144445;;000;
;000;1405060805;11;123456;08001144445;;000;

Ist das die Antwort vom Comport?

Edit 2: //
Hast du irgendwo ein Datenblatt zur Schaltung die am Comport hängt?
Vielleicht muss man die Zeichenkette mit ; Schliessen?
_________________
http://de.wikibooks.org/wiki/FreeBasic Jede Hilfe für dieses Buch ist Willkommen!
http://de.wikibooks.org/wiki/FreeBasic:_FAQ FAQ zu Freebasic (im Aufbau, hilfe Willkommen)
Neu mit Syntax Highlight
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
Michael Frey



Anmeldungsdatum: 18.12.2004
Beiträge: 2577
Wohnort: Schweiz

BeitragVerfasst am: 22.05.2006, 17:02    Titel: Antworten mit Zitat

http://home.arcor.de/pol0815/daten/komandos.jpg
@pol0815
Solche Links must du nicht per PM Versichecken, posten geht auch zwinkern

Back to problem:
verwundert
Die Liste verwirrt mich noch mehr.
Achso:
G ist der Befehl und das wird über [Befehl];i[ldf.Nr] zu G;i000.
Die Antwort ist dann ist dann nach Datenblatt.

Soweit so gut.

Ich werde mal etwas ausprobieren, melde mich bald.

Edit:
mit dem Kopf durch die Mauer wollen
Das Programm sendet g;i 1 statt g;i001
Das sollte gehen:
Code:
DIM i AS INTEGER
DIM t AS DOUBLE

OPEN "1-1.txt" FOR APPEND AS #2
OPEN "COM1: 9600,N,8,1,CD,CS,DS" FOR RANDOM AS #1

CLS                          'Bildschirm loeschen

FOR i = 0 TO 199
        temp$ = LTRIM$(STR$(i))
        temp$ = STRING$(3 - LEN(temp$), "0") + temp$
        PRINT #1, "G;i"; temp$
        t = TIMER
        DO                           'Hauptschleife
                 '-- S e n d e n ---------:
                 q$ = INKEY$                 'Tastendruck speichern
                 IF q$ <> "" THEN            'wenn Taste gedrueckt ...
                        PRINT q$;                      'Zeichen anzeigen
                        PRINT #1, q$;                'und auf Schnittstelle geben
                 END IF

                 '-- E m p f a n g e n ---:
                 IF LOC(1) THEN              'wenn Zeichen auf Schnittstelle eingegangen ...
                        z$ = INPUT$(1, #1)      'dieses speichern
                 
                        PRINT z$;                      'Zeichen anzeigen
                 
                        IF z$ = CHR$(13) THEN PRINT #2, zeile$: zeile$ = ""
                        IF z$ > CHR$(47) AND z$ < CHR$(60) THEN zeile$ = zeile$ + z$
                        IF z$ = "E" THEN PRINT #1, "T"
                 END IF
        LOOP UNTIL q$ = CHR$(27) OR t > TIMER OR t + 1 < TIMER'Ende mit Taste Escape oder nach 1 Sekunde
NEXT i
CLOSE #1                     'Schnittstelle schliessen
CLOSE #2                     'Textdatei schliessen


_________________
http://de.wikibooks.org/wiki/FreeBasic Jede Hilfe für dieses Buch ist Willkommen!
http://de.wikibooks.org/wiki/FreeBasic:_FAQ FAQ zu Freebasic (im Aufbau, hilfe Willkommen)
Neu mit Syntax Highlight
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
pol0815



Anmeldungsdatum: 21.05.2006
Beiträge: 8

BeitragVerfasst am: 23.05.2006, 13:56    Titel: Antworten mit Zitat

habe mal den Sendebefehl vom QT ober übernommen.
jetzt funktioniert es aber wäre besser wenn man den Timer
vielleicht auf 300ms einstellen kann.
Und das Programm nach erhalt von nur G;
den Befehl zum löschen schickt und somit das programm beendet.


Code:

DIM i AS INTEGER
DIM t AS DOUBLE

OPEN "1-1.txt" FOR APPEND AS #2
OPEN "COM1: 9600,N,8,1,CD,CS,DS" FOR RANDOM AS #1

CLS                          'Bildschirm loeschen

FOR i = 0 TO 199

        PRINT #1, "G;i" + LTRIM$(STR$(i))  'senden von G;i000
        t = TIMER
        DO                           'Hauptschleife
             '-- S e n d e n ---------:
             q$ = INKEY$                 'Tastendruck speichern
              IF q$ <> "" THEN            'wenn Taste gedrueckt ...
               PRINT q$;            'Zeichen anzeigen
               PRINT #1, q$;        'und auf Schnittstelle geben
                 END IF

                 '-- E m p f a n g e n ---:
                 IF LOC(1) THEN              'wenn Zeichen auf Schnittstelle eingegangen ...
                        z$ = INPUT$(1, #1)   'dieses speichern
                 
                        PRINT z$;            'Zeichen anzeigen
                       
                        IF z$ = CHR$(13) THEN PRINT #2, zeile$: zeile$ = "": ende$ = "0"
                        IF z$ > CHR$(47) AND z$ < CHR$(60) THEN zeile$ = zeile$ + z$
                        IF z$ = "E" THEN PRINT #1, "G;i000"   'falls error sende neu nur beim starten
                       

                 END IF
        LOOP UNTIL q$ = CHR$(27) OR t > TIMER OR t + 1 < TIMER  'Ende mit Taste Escape oder nach 1 Sekunde
NEXT i
CLOSE #1                     'Schnittstelle schliessen
CLOSE #2                     'Textdatei schliessen

Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Michael Frey



Anmeldungsdatum: 18.12.2004
Beiträge: 2577
Wohnort: Schweiz

BeitragVerfasst am: 23.05.2006, 16:32    Titel: Antworten mit Zitat

Also dann, weiter grinsen.

Code:
DIM i AS INTEGER
DIM t AS DOUBLE
Dim delay as single

delay=0.300
pin$="1234"

OPEN "1-1.txt" FOR APPEND AS #2
OPEN "COM1: 9600,N,8,1,CD,CS,DS" FOR RANDOM AS #1

CLS                          'Bildschirm loeschen

FOR i = 0 TO 199

        PRINT #1, "G;i" + LTRIM$(STR$(i))  'senden von G;i000
        t = TIMER
        DO                           'Hauptschleife
             '-- S e n d e n ---------:
             q$ = INKEY$                 'Tastendruck speichern
              IF q$ <> "" THEN            'wenn Taste gedrueckt ...
               PRINT q$;            'Zeichen anzeigen
               PRINT #1, q$;        'und auf Schnittstelle geben
                 END IF

                 '-- E m p f a n g e n ---:
                 IF LOC(1) THEN              'wenn Zeichen auf Schnittstelle eingegangen ...
                        z$ = INPUT$(1, #1)   'dieses speichern
                 
                        PRINT z$;            'Zeichen anzeigen
                       
                        z$=UCASE$(z$) 'kleine Buchstaben in Grosse umwandeln

                        IF z$ = CHR$(13) THEN PRINT #2, zeile$: zeile$ = "": ende$ = "0"
                        IF z$ > CHR$(47) AND z$ < CHR$(60) THEN zeile$ = zeile$ + z$
                        IF z$ = "E" THEN PRINT #1, "G;i000"   'falls error sende neu nur beim starten
                       IF z$ = "G" THEN
                                ? #1, "G;pin"+pin$
                                Exit for
                       End if

                 END IF
        LOOP UNTIL q$ = CHR$(27) OR t > TIMER OR t + delay < TIMER  'Ende mit Taste Escape oder nach 1 Sekunde
NEXT i
CLOSE #1                     'Schnittstelle schliessen
CLOSE #2                     'Textdatei schliessen

Zitat:
aber wäre besser wenn man den Timer
vielleicht auf 300ms einstellen kann.

Einfach diese Zeile delay=0.300 anpassen.
Bei delay kannst du die Verzögerung in Sekunden einstellen.

Weiter im "Pflichtenheft":
Zitat:
Und das Programm nach erhalt von nur G;
den Befehl zum löschen schickt und somit das programm beendet.

Schon etwas schwerer.
Wobei:
Die Normalle Antwort enthält keine Buchstaben. (zumindest kein g)
Gemacht.
Du must nur deinen Pin bei pin$="1234" eintragen.

Zu
Code:
IF z$ = "E" THEN PRINT #1, "G;i000"   'falls error sende neu nur beim starten

Wenn das Programm Neustarten soll, wäre ein
Code:
IF z$ = "E" THEN i=-1

sinnvoller.
Wenn es noch mal nachfragen soll ein
Code:
IF z$ = "E" THEN i=i-1

Naja, du weisst sicher was du machst.
_________________
http://de.wikibooks.org/wiki/FreeBasic Jede Hilfe für dieses Buch ist Willkommen!
http://de.wikibooks.org/wiki/FreeBasic:_FAQ FAQ zu Freebasic (im Aufbau, hilfe Willkommen)
Neu mit Syntax Highlight
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
pol0815



Anmeldungsdatum: 21.05.2006
Beiträge: 8

BeitragVerfasst am: 23.05.2006, 18:01    Titel: Antworten mit Zitat

Code:
LOOP UNTIL q$ = CHR$(27) OR t > TIMER OR t + .3 < TIMER

habe den Timer von + 1 auf + .3 gesetzt ist auch OK

Ich wollte mit den
Code:
IF z$ = "E" THEN PRINT #1, "G;i000"

nicht das Programm neu starten, nur beim öfnen der COM1 auch sicherstellen das die erste Zeile komplett übertrgen wird.

Bis jetzt ist alles OK.
Nur wenn keine Daten mehr kommen, kommt als Antwort G; zurück,
und da würde ich gerne das Pogramm zum abbrechen bewegen.
Weil sonst bis G;i199 gesendet wird. (kann unnötig lange dauern)
Das löschen de Daten muß ich dann mit einen sprung in einer anderen programm abschnitt erledigen.

Schön wäre natürlich ein Pro. in Visual Basic mit Button und so, aber reicht wenn es auch so läuft.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Michael Frey



Anmeldungsdatum: 18.12.2004
Beiträge: 2577
Wohnort: Schweiz

BeitragVerfasst am: 23.05.2006, 18:09    Titel: Antworten mit Zitat

Zitat:
Nur wenn keine Daten mehr kommen, kommt als Antwort G; zurück,
und da würde ich gerne das Pogramm zum abbrechen bewegen.
Weil sonst bis G;i199 gesendet wird. (kann unnötig lange dauern)
Das löschen de Daten muß ich dann mit einen sprung in einer anderen programm abschnitt erledigen.

Vermeide Sprünge, das sieht einfach unschön aus.
So ist es recht elegant:
Code:
                        z$=UCASE$(z$) 'kleine Buchstaben in Grosse umwandeln

                        IF z$ = CHR$(13) THEN PRINT #2, zeile$: zeile$ = "": ende$ = "0"
                        IF z$ > CHR$(47) AND z$ < CHR$(60) THEN zeile$ = zeile$ + z$
                        IF z$ = "E" THEN PRINT #1, "G;i000"   'falls error sende neu nur beim starten
                       IF z$ = "G" THEN
                                Exit for
                       End if 

(die letzten 3 Zeilen sind relevant)
Das löschen kannst du dann einfach zwischen
Code:
NEXT i

und
Code:
CLOSE #1                     'Schnittstelle schliessen
CLOSE #2                     'Textdatei schliessen

Programmieren.
_________________
http://de.wikibooks.org/wiki/FreeBasic Jede Hilfe für dieses Buch ist Willkommen!
http://de.wikibooks.org/wiki/FreeBasic:_FAQ FAQ zu Freebasic (im Aufbau, hilfe Willkommen)
Neu mit Syntax Highlight
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
pol0815



Anmeldungsdatum: 21.05.2006
Beiträge: 8

BeitragVerfasst am: 23.05.2006, 18:26    Titel: Antworten mit Zitat

In der Zeile
Code:
IF z$ > CHR$(47) AND z$ < CHR$(60) THEN zeile$ = zeile$ + z$

lösche ich die Buchstaben schon
sonst würde das Ergebnis so aussehen:
G;i023;z2005061023;x20;o10001;d017234329375;sSP;c000;
und jetzt sieht es so aus:
;023;2005061023;20;10001;017234329375;;000;

Ist auch OK so.
Wollte erst mal testen ob ich mit LEN() die länge der String ermitteln kann und wenn dieser nur 2 ist i auf 199 setzen
hier nochmal der gesamte Code

Code:
DIM i AS INTEGER
DIM t AS DOUBLE

OPEN "1.txt" FOR APPEND AS #2
OPEN "COM1: 9600,N,8,1,CD,CS,DS" FOR RANDOM AS #1

CLS                          'Bildschirm loeschen

FOR i = 0 TO 199
IF i > 199 THEN q$ = CHR$(27)

      PRINT #1, "G;i" + LTRIM$(STR$(i))  'senden von G;I000
      t = TIMER
       DO                           'Hauptschleife
           '-- S e n d e n ---------:
            q$ = INKEY$                 'Tastendruck speichern
            IF q$ <> "" THEN            'wenn Taste gedrueckt ...
             PRINT q$;            'Zeichen anzeigen
             PRINT #1, q$;        'und auf Schnittstelle geben
            END IF

             '-- E m p f a n g e n ---:
             IF LOC(1) THEN              'wenn Zeichen auf Schnittstelle eingegangen ...
              z$ = INPUT$(1, #1)   'dieses speichern
                 
              PRINT z$;            'Zeichen anzeigen
                       
        IF z$ = CHR$(13) THEN PRINT #2, zeile$: zeile$ = "": ende$ = "0"
        IF z$ > CHR$(47) AND z$ < CHR$(60) THEN zeile$ = zeile$ + z$
        IF z$ = "E" THEN PRINT #1, "G;i000"

       'IF len(zeile$) = 2 THEN PRINT #1, "G;i200": i = 200
                       
      END IF
        LOOP UNTIL q$ = CHR$(27) OR t > TIMER OR t + .3 < TIMER  'Ende

NEXT i
CLOSE #1                     'Schnittstelle schliessen
CLOSE #2                     'Textdatei schliessen

Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Beiträge der letzten Zeit anzeigen:   
Neues Thema eröffnen   Neue Antwort erstellen    Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht -> Profi-Forum Alle Zeiten sind GMT + 1 Stunde
Seite 1 von 1

 
Gehe zu:  
Du kannst keine Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum nicht antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.

 Impressum :: Datenschutz