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:

Leerzeichen verschwindet

 
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: 28.01.2009, 19:12    Titel: Leerzeichen verschwindet Antworten mit Zitat

Hallo zusammen,

ich habe folgendes, scheußliches Problem:

über eine COM - COM - Verbindung zweier PC's sende ich in einem Telegramm 6 Zeichen a 8 Bit, die ich normalerweise in dem anderen PC auch richtig empfange.
Wenn das letzte Zeichen (ein zufälliges ParityByte) aber gerade den ASCII-Code für das Leerzeichen (032 oder 00100000) ergibt, dann hat die Zeichenfolge vor dem Senden zwar noch die Länge von 6 Byte, wenn ich mir die aber auf der Empfangsseite ansehe, fehlt das letzte Byte und die Länge der Zeichefolge ist nur noch 5! geschockt

Ich öffne die COM-Schnittstellen mit:

Code:
OPEN "COM1: 9600,N,8,1,BIN,CD0,CS0,DS0,OP0,RS,TB2048,RB2048" FOR RANDOM AS #1


sende das Telegramm mit:

Code:
PRINT #1, TextAUS$

und empfange es mit:

Code:
INPUT #1, TextEIN$



Auf der Sendeseite kann ich nichts ändern, da muss ich die Telegramme so nehmen wie sie kommen. Ich hoffe, dass die COM-SS das noch richtig sendet. mit dem Kopf durch die Mauer wollen

Kann ich auf der Empfangsseite irgendetwas korrigieren?

Wie würdert ihr so ein Problem angehen?

vG und danke

fredyxx
[/code]
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
fredyxx



Anmeldungsdatum: 26.01.2009
Beiträge: 22

BeitragVerfasst am: 29.01.2009, 20:35    Titel: Antworten mit Zitat

Hallo zusammen,

ich möcht noch mal nachfragen, ob nicht doch noch einer eine Lösung für mein Problem findet. Es kann doch nicht sein, dass ein Leerzeichen am Ende eines Telegramms beim Empfänger nicht sichtbar ist.

Die Abfrage der COM-SS mit der LOC-Funktion ergibt die richtige Länge, wenn ich mir aber die Zeichenfolge ansehen oder deren Länge mit der LEN-Funktion abfragen will, fehlt das Leerzeichen immer.

Wer das mal selber probieren möchte, der kann das folgende Programm verwenden:

Code:
'Diese Programm kann mit einer 3-adrigen Verbindung der COM1-Schnittstellen
'zweier PC's Zeichen an den andern PC senden
'Verbindungen:  RxD - TxD;  TxD - RxD;   Ground
'SteckerKontakt:  2 - 3  ;    3 - 2  ;     5-5

'####################################################################

'      Zum Abbrechen bei Empfamgen beliebige Taste drücken

'####################################################################

     INPUT "soll dieser PC senden oder empfangen? s oder e eingeben!!  ", se$   
   
     OPEN "COM1: 1200,n,8,1" FOR RANDOM AS 1   öffnet die Schnittstelle

nochmal:
IF se$ = "s" THEN
     INPUT "Zeichenfolge eingeben!  ß = Programmende  ", a$
     IF a$ = "ß" THEN GOTO aus
     PRINT a$
     PRINT #1, a$           'Zeichen an Partner senden
     GOTO nochmal
END IF
   
IF se$ = "e" THEN   
     IF INKEY$ <> "" THEN GOTO aus   'Beendet das Programm bei Tastenbetätigung
     IF LOC(1) = 0 THEN GOTO nochmal
     INPUT #1, l$           'Zeichen vom Partner einlesen
     PRINT "Zeichenfolge: "; l$; "   L„nge der Zeichenfolge: "; LEN(l$)
     GOTO nochmal
END IF
     
aus: CLOSE   'schließt die geöffnete Schnittstelle
END


Das Programm muss auf beiden PC's laufen, eines auf senden, das andere auf empfangen geschaltet sein (Abfrage mit Programmstart)

Ich brauche dringend eine Lösung, weil alle meine Versuche bisher erfolglos waren!!

weinen
_________________
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: 29.01.2009, 23:03    Titel: Antworten mit Zitat

Artikel aus meiner Sammlung generell zum Thema:

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

Sonst generelle Empfehlung: Mit INPUT$() zum Lesen arbeiten, dann bekommst Du praktisch jedes Zeichenbyte als String.
_________________
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: 30.01.2009, 14:45    Titel: Antworten mit Zitat

dreael hat Folgendes geschrieben:

Sonst generelle Empfehlung: Mit INPUT$() zum Lesen arbeiten, dann bekommst Du praktisch jedes Zeichenbyte als String.


Heureka das war's!!

grinsen

Hallo dreael,

Du hast mich gerettet, ganz herzlichen Dank!

Den Befehl habe ich nicht gefunden, weil er nach markieren und F1 nicht auftaucht, wohl aber wenn man im Index sucht.
_________________
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