|
Das deutsche QBasic- und FreeBASIC-Forum Für euch erreichbar unter qb-forum.de, fb-forum.de und freebasic-forum.de!
|
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen |
Autor |
Nachricht |
tysonie
Anmeldungsdatum: 23.06.2006 Beiträge: 1 Wohnort: USA
|
Verfasst am: 23.06.2006, 01:14 Titel: Hilfe bei Schnittstellenprogrammierung |
|
|
Hallo Leute,
ich weiss das hier ist viel verlangt von mir aber ich brauche dringend hilfe.
Ich muss fuer ein Geraet, welches bestimmte Daten per RS232 liefert einen Datensatzwandler schreiben (sprich ein programm dass auf diese Daten wartet, und wenn diese ankommen, quittiert und dann in einem anderen (lesbaren) format wieder auf einer 2. RS232 Schnittstelle ausgeben.
Dabei habe ich das problem das ich schon seit jahren nimmer Qbasic programmiert habe.
Nun meine Fragen:
1. Ich brauche 19200, 8, N, 1 als Parameter fuer Com 1 (&H3F8).
2. Das Geraet sendet ein Enq (Hex 05) und erwartet darauf hin ain Ack (Hex 06).
Anschliessend sendet das geraet einen kompletten string, aus welchem ich nur die 8 letzten zeichen benoetige (laenge des strings ist nicht fest definiert). Hier wuerde mir reichen, wenn mir jemand zeigen kann, wie ich z.b. einen 20 Stelligen String von der Ser. Schnittstelle einlesen kann und in einer Variablen speichern kann - und anschliessend diese daten auch filtern kann.
3. Dann muss ein erneuter ENQ kommen und zwar diesmal vom PC.
4. Anschliessend muss der PC auf ein ACK vom Geraet warten.
5. Sobald dieser Ack kommt, muss dass geraet einen Antwort string in der selben laenge schicken.
Das waere es erst einmal.
Bitte wenn moeglich nicht nur auf irgendwelche links verweisen, da ich ja gerne auch was aus diesem code lernen moechte.
Vielen lieben dank |
|
Nach oben |
|
|
Michael Frey
Anmeldungsdatum: 18.12.2004 Beiträge: 2577 Wohnort: Schweiz
|
|
Nach oben |
|
|
Michael Frey
Anmeldungsdatum: 18.12.2004 Beiträge: 2577 Wohnort: Schweiz
|
Verfasst am: 23.06.2006, 19:33 Titel: |
|
|
Als Diskussuins Grundlage:
Code: | '1. Ich brauche 19200, 8, N, 1 als Parameter fuer Com 1 (&H3F8).
OPEN "COM1: 19200,N,8,1" FOR RANDOM AS #1
'2. Das Geraet sendet ein Enq (Hex 05)
DO 'Also warte ich bis ich es erhalte
IF LOC(1) THEN
INPUT #1, a$
IF a$ = CHR$(5) THEN EXIT DO
END IF
LOOP
'und erwartet darauf hin ain Ack (Hex 06).
PRINT #1, CHR$(6) 'da kommt es
'Anschliessend sendet das geraet einen kompletten string, aus
a$ = ""
b$ = ""
ttime = TIMER
DO
IF LOC(1) THEN 'Zeichen f?ür Zeichen ab hollen
INPUT #1, a$
b$ = b$ + a$
ttime = TIMER
ELSEIF TIMER = ttime + 5 THEN 'Kommt nach 5 sekunden nichts mehr ist woll ende
EXIT DO
END IF
LOOP
altlang = LEN(b$) 'f?r 5.
'welchem ich nur die 8 letzten zeichen benoetige
c$ = RIGHT$(b$, 8)
PRINT c$ 'Da sind sie ja ;-)
'3. Dann muss ein erneuter ENQ kommen und zwar diesmal vom PC.
PRINT #1, CHR$(5) 'Da ist es
'4. Anschliessend muss der PC auf ein ACK vom Geraet warten.
DO 'Also warte ich bis ich es erhalte
IF LOC(1) THEN
INPUT #1, a$
IF a$ = CHR$(6) THEN EXIT DO
END IF
LOOP
'5. Sobald dieser Ack kommt,
'muss dass geraet einen Antwort string in der selben laenge schicken.
a$ = "" 'Noch ein Text kommt? Gut ;-)
b$ = ""
i = 0
ttime = TIMER
DO
IF LOC(1) THEN 'Zeichen f?ür Zeichen ab hollen
INPUT #1, a$
b$ = b$ + a$
ttime = TIMER
i = i + LEN(a$)
ELSEIF i = altlang THEN 'Gleiche L„nge wie vorher dann Ende
EXIT DO
END IF
LOOP |
! Ungestestet !
Das mit der Zweiten Schnittstelle blicke ich aber nicht, weil bei deinen Punkten nur von "Gerät" und Com 1 die Rede ist. _________________ 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
Zuletzt bearbeitet von Michael Frey am 24.06.2006, 08:11, insgesamt einmal bearbeitet |
|
Nach oben |
|
|
Kai Bareis
Anmeldungsdatum: 10.09.2004 Beiträge: 545 Wohnort: Baden Würtemberg
|
Verfasst am: 23.06.2006, 20:52 Titel: |
|
|
Wenn du vor hast 19200 Baud mit Qbasic auszuwählen hast du ein Problem den Qbasic selber kann nur 75Baud bis 9600Baud. In der MonsterFAQ wird beschrieben wie man durch setzen von bestimmten Bits die Baudrate erhöhen kann. _________________ MfG Kai Bareis
Es ist noch kein Meister vom Himmel gefallen! Warum einfach wens auch umständlich geht! |
|
Nach oben |
|
|
Michael Frey
Anmeldungsdatum: 18.12.2004 Beiträge: 2577 Wohnort: Schweiz
|
Verfasst am: 24.06.2006, 08:10 Titel: |
|
|
Kai Bareis hat Folgendes geschrieben: | Wenn du vor hast 19200 Baud mit Qbasic auszuwählen hast du ein Problem den Qbasic selber kann nur 75Baud bis 9600Baud. In der MonsterFAQ wird beschrieben wie man durch setzen von bestimmten Bits die Baudrate erhöhen kann. |
Das hab iuch anders in Erinerung, bei mir hat die Einstellung 19200 Baud Einwandfrei funktioniert, als ich mein Handy angesteuert habe.
(Ich weiss, in der Online Hilfe von QBasic steht 9600 Baud, aber 19200 BAud gingen bei mir eben auch)
(Mir ist gerade aufgefallen, das ich beim Open Com unnötige Deklartionen vornehme, das ändere ich mal schnell) _________________ 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 |
|
|
Jojo alter Rang
Anmeldungsdatum: 12.02.2005 Beiträge: 9736 Wohnort: Neben der Festplatte
|
Verfasst am: 24.06.2006, 21:02 Titel: |
|
|
Bist du sicher,dass der port dann auch WIKRLICH auf 19200 gewerkelt hat? _________________ » Die Mathematik wurde geschaffen, um Probleme zu lösen, die es nicht gäbe, wenn die Mathematik nicht erschaffen worden wäre.
|
|
Nach oben |
|
|
Michael Frey
Anmeldungsdatum: 18.12.2004 Beiträge: 2577 Wohnort: Schweiz
|
Verfasst am: 25.06.2006, 08:38 Titel: |
|
|
Ich Teste es mal ...
(QBasic Programm auf Win 95 Laptop, Hyperterminal auf XP Rechner)
Melde mich gleich.
Edit:
Ja, es geht.
(Wenn ihr 2 Computer und ein Serielles Nullmodekabel könnt ihr es ja selbst Testen.) _________________ 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 |
|
|
|
|
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.
|
|