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:

COM-Eingangspuffer löschen

 
Neues Thema eröffnen   Neue Antwort erstellen    Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht -> Allgemeine Fragen zu QBasic.
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen  
Autor Nachricht
fredyxx



Anmeldungsdatum: 26.01.2009
Beiträge: 22

BeitragVerfasst am: 01.02.2009, 17:04    Titel: COM-Eingangspuffer löschen Antworten mit Zitat

Hallo zusammen,

wie kann ich in QBasic den Eingangspuffer der COM-Schnittstelle löschen, ohne die Daten zu übernehmen?

Geöffnet habe ich die SS mit OPEN COM, die Größe der eingelaufenen Telegramme kann ich mit LOC(1) abfragen.
Aber wie kann ich ihn löschen ohne INPUT zu verwenden??
_________________
vG

fredyxx
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
dreael
Administrator


Anmeldungsdatum: 10.09.2004
Beiträge: 2529
Wohnort: Hofen SH (Schweiz)

BeitragVerfasst am: 01.02.2009, 23:25    Titel: Antworten mit Zitat

Um INPUT$() wirst Du aber trotzdem nicht herumkommen. Wie wäre es mit folgender Variante?
Code:
SUB LoeschePuffer(DateiNr%)
  DO
    n% = LOC(DateiNr%)
    IF n% > 0 THEN
      dummy$ = INPUT$(n%, DateiNr%)
    END IF
  LOOP WHILE n% > 0
END SUB

(Code übrigens nicht getestet) d.h. dummy$ verarbeitest Du gar nicht!
_________________
Teste die PC-Sicherheit mit www.sec-check.net
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
fredyxx



Anmeldungsdatum: 26.01.2009
Beiträge: 22

BeitragVerfasst am: 02.02.2009, 07:13    Titel: Antworten mit Zitat

Hallo dreael,

bei dem Input$ -Befehl liegt genau das Problem.

Sobald ich den aufrufe, bekomme ich Gerätefehler.

Beim Einschalten der Gegenstelle kommt offensichtlich was in den Puffer, das zwar eine Puffergröße von 1 meldet, bei Input$ aber den Fehler bringt. Erwische ich den richtigen Zeitpunkt nach dem Einschalten der Gegenstelle, dann kommen die Telegramme lesbar an.

Mein Programm soll aber auf das Einschalten der Gegenstelle warten, um dann sofort aktiv zu werden, weil die Gegenstelle das Senden einstellt, wenn sie keine Antwort bekommt.

Fällt Dir dazu noch was ein??

Daher möcht ich gerne das 1. (defekte) Telegramm verwerfen, trotzdem eine Antwort schicken und dann könnte es losgehen!!
_________________
vG

fredyxx
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
dreael
Administrator


Anmeldungsdatum: 10.09.2004
Beiträge: 2529
Wohnort: Hofen SH (Schweiz)

BeitragVerfasst am: 02.02.2009, 10:40    Titel: Antworten mit Zitat

Wie unter

http://www.dreael.ch/Deutsch/BASIC-Knowhow-Ecke/SerielleKommunikation.html

sowie auch in der QB-Onlinehilfe genannt, gibt es noch verschiedene Spezialoptionen wie CD0 usw., mit denen man die Auswertung bestimmter Hardware-Handshake-Signale ausschalten kann. => Vielleicht diese einmal probieren.

Ausserdem, wie im Beispiel

http://beilagen.dreael.ch/QB/SERTRAN3.BAS

ersichtlich (war von mir einst eine Dateitransfertoutine zwischen Amiga und PC, um Festplatte für WinUAE übernehmen zu können), musste ich bestimmte Fehler ebenfalls schon mit ON ERROR GOTO abfangen, um einen stabilen Lauf zu ermöglichen.
_________________
Teste die PC-Sicherheit mit www.sec-check.net
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
fredyxx



Anmeldungsdatum: 26.01.2009
Beiträge: 22

BeitragVerfasst am: 03.02.2009, 23:12    Titel: Antworten mit Zitat

Hallo, ich habe das Problem nun folgendermaßen gelöst:

da ich weiß, dass die vollständigen Telegramme mindestens 6 Byte lang sind, die Einschaltfehler die Empfangspuffer aber immer nur bis zu einer Größe von 1 Byte füllen, frage ich die Länge der Eingangspuffer ab und schließe und öffne eine COM-Schnittstelle solange immer wieder (das ist in meinem Fall 2 mal) , bis ein erstes Telegramm mit mehr als 6 Byte im Puffer steht.
Nach jedem Offnen und Schließen ist die Puffergröße wieder NULL.

Was Eleganteres ist mir nicht eingefallen!
_________________
vG

fredyxx
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 -> Allgemeine Fragen zu QBasic. 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