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:

Request und Response an der Seriellen Schnittstelle

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



Anmeldungsdatum: 26.09.2006
Beiträge: 2

BeitragVerfasst am: 26.09.2006, 09:30    Titel: Request und Response an der Seriellen Schnittstelle Antworten mit Zitat

Hallo zusammen,

hab folgendes Problem:
Muss über eine Serielle Schnittstelle Prozessparameter loggen. Dazu muss jeweils ein Request an die Serielle Schnittstelle gesendet und die Response anschließend in eine Datei geschrieben werden.
Request und Response müssen als hex-Code gesendet und empfangen werden.
Folgender Ansatz:


OPEN Pfadundname$ FOR OUTPUT AS 1
OPEN COM "com1:38400,N,8,1" FOR RANDOM AS 2

DO
PRINT"XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"
PRINT

Periode =.4
DO
deltat = TIMER - MESSENDE
LOOP UNTIL deltat >= Periode

PRINT #2, "&H010A00000605FF00090000F841" 'Request

DO
IF LOC(2) THEN
dataBridge$=INPUT$(28, #2) 'Reading the
'responded string
IF LEN(dataBridge$)=28 THEN EXIT DO
END IF
LOOP

PRINT dataBridge$
PRINT LEN (dataBridge$)

PRINT #1, dataBridge$

LOOP UNTIL INKEY$ = "s"
CLOSE #1

' Dateiwechsel durch Tastendruck
INPUT "Neue Datei anlegen? (y/n)", neueDatei$
if neueDatei$ = "y" then
i=i+1
GOTO NeueDatei
END if

CLOSE #2
END

Das grundsätzliche Problem: Ich bekomme keine Antwort!
1. Meine Vermutung ist schon mal, dass ich nicht wirklich nen hex-Code schreibe sondern eigentlich nen String, oder? Wie kann ich wirklich nen hex-Code auf die Serielle Schnittstelle schreiben?
Muss ich den hex-Frame als Einzelbotschaften nacheinander senden?
2. Funktioniert mit "dataBridge$=INPUT$(28, #2) " bereits das Warten auf eine Antwort mit der Länge von 28 Bit?

Würd mich sehr freuen, wenn mir jemand weiterhelfen könnte!
Herzlichen Gruß
blutigerAnfänger
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Mao



Anmeldungsdatum: 25.09.2005
Beiträge: 4409
Wohnort: /dev/hda1

BeitragVerfasst am: 26.09.2006, 13:15    Titel: Antworten mit Zitat

Hi. lächeln
Wirklich helfen kann ich dir nicht...
...außer sagen, dass so, wie du den HEX-Code senden willst, ein String gesendet wird. Versuch's mal mit Val:
[code]
Print #2, Val(&H010A00000605FF00090000F841) ' Request
[code]
Allerdings weiß ich nicht, ob Val so große Zahlen überhaupt verarbeiten kann. neutral

Und dann:
entweder du hast dich verschrieben, oder du wartest wirklich auf eine 28 _Bit_ Antwort. Input$ holt nur Bytes, keine Bits. zwinkern

Naja, wirklich geholfen hat das nicht, oder? neutral

Greets,
Mao
_________________
Eine handvoll Glück reicht nie für zwei.
--
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
volta



Anmeldungsdatum: 04.05.2005
Beiträge: 1876
Wohnort: D59192

BeitragVerfasst am: 26.09.2006, 13:22    Titel: Antworten mit Zitat

zu 1. ja, mit 'PRINT #2, "&H010A00000605FF00090000F841" schreibst du einen 56 Byte langen String als Request.
Vermutlich (???) sollst du
Code:
PRINT #2, &H01
PRINT #2, &H0A
PRINT #2, &H00
PRINT #2, &H00
.. usw
schreiben, aber das sind dann nur 13 Byte?

zu 2. Jain grinsen , ja da wird auf 28 Byte(Zeichen) gewartet, nicht nur 28 Bit (1 Byte = 8 Bit)

Problem ist: Was meinst du mit 'als Hex-Code senden und empfangen' ?
Vermutlich sollen im Log die Daten als Hex-Werte geschrieben werden, weil die Steuercodes auch nicht druckbare Zeichen enthalten?

Gruß Volta

EDIT/ Hi Mao, warst schneller grinsen
_________________
Warnung an Choleriker:
Dieser Beitrag kann Spuren von Ironie & Sarkasmus enthalten.
Zu Risiken & Nebenwirkungen fragen Sie Ihren Therapeuten oder Psychiater.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
Mao



Anmeldungsdatum: 25.09.2005
Beiträge: 4409
Wohnort: /dev/hda1

BeitragVerfasst am: 26.09.2006, 13:53    Titel: Antworten mit Zitat

Ja, aber auch nicht so hilfreich. zwinkern
Ich vermute mal irgendwie, dass bei Bloody's Code der Hex-String falsch ist. neutral
_________________
Eine handvoll Glück reicht nie für zwei.
--
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
dreael
Administrator


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

BeitragVerfasst am: 26.09.2006, 15:26    Titel: Antworten mit Zitat

Korrekte Variante mit dem Senden von Bytes:
Code:
PRINT #2, CHR$(&H01)+CHR$(&H0A)+CHR$(&H00)+..+CHR$(&H41);

(natürlich kann man sich auch eine BinString-FUNCTION bauen)
Umgekehrt Lesen:
Code:
WHILE LOC(2) > 0
  byte% = ASC(INPUT$(1, 2))
  ' byte% verarbeiten
WEND

_________________
Teste die PC-Sicherheit mit www.sec-check.net
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
blutigerAnfänger



Anmeldungsdatum: 26.09.2006
Beiträge: 2

BeitragVerfasst am: 26.09.2006, 16:53    Titel: Antworten mit Zitat

Hallo dreal,

das war der entscheidende Hinweis! Vielen Dank!
Allerdings ist das Script relativ langsam, gibts hier noch Möglichkeiten etwas zu tunen?

Herzlichen Dank
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
pebisoft
gesperrt


Anmeldungsdatum: 28.11.2004
Beiträge: 131

BeitragVerfasst am: 26.09.2006, 19:28    Titel: Antworten mit Zitat

man könnte die baudrate von 9600 auf 19200baud erhöhen , wenn es das programm zulässt, macht es aber nicht.


ich hoffe, das mal bald in freebasic die gängigen höheren baudraten mit eingebaut werden!!!!
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
volta



Anmeldungsdatum: 04.05.2005
Beiträge: 1876
Wohnort: D59192

BeitragVerfasst am: 27.09.2006, 09:33    Titel: Antworten mit Zitat

pebisoft hat Folgendes geschrieben:
man könnte die baudrate von 9600 auf 19200baud erhöhen , wenn es das programm zulässt, macht es aber nicht.
äh, bloody benutzt doch schon eine Baudrate von 38400 .
siehe OPEN COM "com1:38400,N,8,1" FOR RANDOM AS 2

pebisoft hat Folgendes geschrieben:
ich hoffe, das mal bald in freebasic die gängigen höheren baudraten mit eingebaut werden!!!!
ist nicht nötig. Über FB kann man alles einstellen, was der Com-Port zulässt.
_________________
Warnung an Choleriker:
Dieser Beitrag kann Spuren von Ironie & Sarkasmus enthalten.
Zu Risiken & Nebenwirkungen fragen Sie Ihren Therapeuten oder Psychiater.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
pebisoft
gesperrt


Anmeldungsdatum: 28.11.2004
Beiträge: 131

BeitragVerfasst am: 27.09.2006, 17:37    Titel: Antworten mit Zitat

in der "open com"beschreibung steht nur ein höchstwert von 9600baud.

bist du sicher das er die höheren baudzahlen durchführt, vielleicht nimmt der immer nur 9600, auch wenn ein höherer wert eingestellt wird.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Kai Bareis



Anmeldungsdatum: 10.09.2004
Beiträge: 545
Wohnort: Baden Würtemberg

BeitragVerfasst am: 27.09.2006, 17:43    Titel: Antworten mit Zitat

Naja siehe hier

Dort steht weiter unten auch eine größere Baudrate. So wie es aussieht ist das auf Freebaisc.de noch alt und von der Qbasic-Hilfe übernommen worden.
_________________
MfG Kai Bareis
Es ist noch kein Meister vom Himmel gefallen! Warum einfach wens auch umständlich geht!
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
Michael712
aka anfänger, programmierer


Anmeldungsdatum: 26.03.2005
Beiträge: 1593

BeitragVerfasst am: 27.09.2006, 18:06    Titel: Antworten mit Zitat

Vielleicht liegt es bei euch daran, das ihr "For Random" habt, in der englischen wiki steht das gar nicht. Also einfach
Code:
Open Com "com1:38400,N,8,1" as #1


sollte klappen.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail 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 FreeBASIC. 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