|
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 |
Gehm Gast
|
Verfasst am: 26.05.2009, 12:02 Titel: COM Schnitstelle |
|
|
Hallo freunde des QB,
ich habe bei mir zuhause einen alten Rechner mit WIN 95 neu aufgeätzt *bin richtig stolz auf mich *
an disem PC habe ich
1 * LPT1
2 * COM Schnittstellen
warum ich das ganze mache, ich möchte gerne eine Wage die über eine COM Schnittstelle ausgelesen werde Auslassen können.
Ein Messgerät das über die COM Schnittstelle angesteuert und gesteuert werden kann.
Code: | für das Messgerät habe ich Steuerungscode bekommen z.B.
A um das Gerät in den Computer Modus zu Sätzen wenn es erfolgreich war bekomme ich ein N zurück. etc ... |
Leider habe ich bis her immer nur mit dem LPT Port gearbeitet und einzelne Pins angesteuert, kann mir jemand sagen wie ich das mit einer COM Schnittstelle machen kann und wie ich da Buchstaben senden und empfangen kann.
Währe supper. Danke im voraus.
für die Wage habe ich noch keine Steuercode gefunden bin aber noch am Suchen )
Gruß |
|
Nach oben |
|
|
isiprimax
Anmeldungsdatum: 02.01.2009 Beiträge: 77
|
Verfasst am: 26.05.2009, 14:13 Titel: |
|
|
Das ist echt ein hartes Deutsch.
Zitat: | ich möchte gerne eine Wage die über eine COM Schnittstelle ausgelesen werde Auslassen können. |
Wage = Waage
aufgeätzt = aufgesetzt
usw^^
Leider kann ich zu deinem Problem nix beitragen.
Vielleicht solltest du sagen was für Geräte du besitz.
mfg |
|
Nach oben |
|
|
Gehm Gast
|
Verfasst am: 26.05.2009, 16:53 Titel: |
|
|
Hi,
auf die Rechtschreibung gehe ich mal nicht ein. *LRS, und Rechtreibprüfung von Windows*
mein Problem ist.
- wie Öffne ich den COM-Port richtig.
- wie sende ich etwas an den COM-Port
- wie empfange ich etwas vom COM-Port
das Messgerät das ich als erstes ansteuern möchte bei dem mir auch die Steuer Codes vorliegen ist ein Visko-Messgerät.
Auszug aus der Steuercodes.txt
Folgende Steuerzechen sind festgelegt:
A -> Umschaltung auf Rechnerbetrieb -> Rückgabe wert "N" auf dem gerät erscheint nun "Computerbetrieb"
B -> Drehzahlvorgabe
.... usw.
zur Angabe des Anwählen über das HyperTerminal von Windows:
Verbindungsdaten: Baudrate, Parity No, Stop 1, Handshake No
so was muss ich nun machen um das Gerät jetzt in den Computer betrieb zu befördern ?? das ist mein Problem momentan
gruß |
|
Nach oben |
|
|
Gehm Gast
|
|
Nach oben |
|
|
Gehm Gast
|
Verfasst am: 26.05.2009, 22:19 Titel: |
|
|
Ok jetzt muss mir doch jemadn noch Helfen
Zitat: | ' Oberprimitives Terminal
OPEN "COM2:9600,N,8,1,DS0,CS0,CD0,BIN" AS 1
LokalesEcho% = 0
DO
t$ = INKEY$
IF t$ <> "" THEN ' Taste gedrückt?
PRINT#1, t$; ' senden
IF LokalesEcho% THEN
PRINT t$;
END IF
END IF
a% = LOC(1)
IF a% > 0 THEN ' etwas erhalten?
z$=INPUT$(a%, 1)
PRINT z$; ' am Bildschirm ausgeben
END IF
LOOP UNTIL t$=CHR$(27)
CLOSE 1
|
Zeile:
Code: | OPEN "COM2:9600,N,8,1,DS0,CS0,CD0,BIN" AS 1 |
also hier wird der Com 2 Geöffnet.
Open "Anschluß:Baudrate, Parität, Datenwortlänge, Anzahl Stop-Bits, ...."
kann mir jemand sagen für was der rest also die ... stehen ??
den auf der seite die ich da gefunden habe heist es nur.
Zitat: | BASIC kennt noch einige weitere Parameter |
tol, doch was bedeuten die denn ? |
|
Nach oben |
|
|
volta
Anmeldungsdatum: 04.05.2005 Beiträge: 1875 Wohnort: D59192
|
Verfasst am: 26.05.2009, 22:46 Titel: |
|
|
Eine Zeile tiefer Zitat: | BASIC kennt noch einige weitere Parameter:
* maximale Wartezeiten für die Signale CD, CTS und DSR |
Die ist zwar für Freebasic aber mit gleicher Bedeutung.
http://www.freebasic-portal.de/index.php?s=reftopic&id=235
siehe unter "Erweiterte_Optionen" _________________ Warnung an Choleriker:
Dieser Beitrag kann Spuren von Ironie & Sarkasmus enthalten.
Zu Risiken & Nebenwirkungen fragen Sie Ihren Therapeuten oder Psychiater. |
|
Nach oben |
|
|
volta
Anmeldungsdatum: 04.05.2005 Beiträge: 1875 Wohnort: D59192
|
Verfasst am: 26.05.2009, 22:46 Titel: |
|
|
hier gab es eine Fehlermeldung beim Absenden??
irgend was mit Debug Mode ...
daher Doppelpost _________________ Warnung an Choleriker:
Dieser Beitrag kann Spuren von Ironie & Sarkasmus enthalten.
Zu Risiken & Nebenwirkungen fragen Sie Ihren Therapeuten oder Psychiater. |
|
Nach oben |
|
|
nemored
Anmeldungsdatum: 22.02.2007 Beiträge: 4597 Wohnort: ~/
|
Verfasst am: 27.05.2009, 19:00 Titel: |
|
|
Vermutlich, dass der Mailclient nicht angesprungen ist? Dann ist der Beitrag schon eingetragen, es wird aber eine Fehlermeldung ausgegeben. Hatte ich auch schon das ein oder andere Mal. _________________ Deine Chance beträgt 1:1000. Also musst du folgendes tun: Vergiss die 1000 und konzentriere dich auf die 1. |
|
Nach oben |
|
|
Gehm Gast
|
Verfasst am: 27.05.2009, 19:17 Titel: |
|
|
Cool, danke für den Link.
habe schon mal ein wenig reingeschnuppert und siht nicht schlecht aus,
dann werde ich mal weiter machen |
|
Nach oben |
|
|
Gehm Gast
|
Verfasst am: 27.05.2009, 20:02 Titel: |
|
|
so jetzt werde ich aber glaube ich echt dooooooooffffff.
ich verwende das Beispiel:
Code: |
OPEN "COM2:9600,N,8,1,DS0,CS0,CD0,BIN" AS 1
Locate 5,5: Print "Temp: "
DO
t$ = INKEY$ ' Tastendruck in t$ Copiren
PRINT#1, "C"; ' senden vom C für die anforderung der Temperatur
a% = LOC(1)
IF a% > 0 THEN ' etwas erhalten?
z$=INPUT$(a%, 1) ' erhaltenen Wert in z$ Copiren
PRINT z$; ' am Bildschirm ausgeben
END IF
LOOP UNTIL t$=CHR$(27) ' "ESC" Taste zum Abbruch der Schleife
CLOSE 1 'Verbindung COM2 schlißen
|
das ist schön.
denn ich erhalte als ergebnis auf dem Monitor
24.531315
24.531111
....
immer schön zeilen weise.
allso habe ich mir gedacht gut dann schreiben wir das in Zeile 5 Posi. 12
also siht mein prog dann so aus.
Code: | OPEN "COM2:9600,N,8,1,DS0,CS0,CD0,BIN" AS 1
Locate 5,5: Print "Temp: "
DO
t$ = INKEY$ ' Tastendruck in t$ Copiren
PRINT#1, "C"; ' senden vom C für die anforderung der Temperatur
a% = LOC(1)
IF a% > 0 THEN ' etwas erhalten?
z$=INPUT$(a%, 1) ' erhaltenen Wert in z$ Copiren
LOCATE 5, 12: PRINT z$; ' am Bildschirm ausgeben
END IF
LOOP UNTIL t$=CHR$(27) ' "ESC" Taste zum Abbruch der Schleife
CLOSE 1 'Verbindung COM2 schlißen |
ich habe nur vor die ausgabe LOCATE 5, 12: geschriben
jetzt ist meine ausgabe nur noch 1 Zeichen groß warum bekomme ich das nicht richtig angezeigt weis da jemand Raht ?? |
|
Nach oben |
|
|
volta
Anmeldungsdatum: 04.05.2005 Beiträge: 1875 Wohnort: D59192
|
Verfasst am: 29.05.2009, 15:13 Titel: |
|
|
durch 'LOCATE 5, 12' wird immer an die gleiche Position geschrieben (überschrieben). _________________ Warnung an Choleriker:
Dieser Beitrag kann Spuren von Ironie & Sarkasmus enthalten.
Zu Risiken & Nebenwirkungen fragen Sie Ihren Therapeuten oder Psychiater. |
|
Nach oben |
|
|
Gehm Gast
|
Verfasst am: 29.05.2009, 19:04 Titel: |
|
|
Hey,
ja das ist ja auch gewolt.
nur wenn ich die LOCATE nicht habe dann bekomme ich 13 zeichen auf dem Monitor angezeigt und wenn ich LOCATE verwende bekomme ich nur noch 1 Zeichen angezeigt, woran kann das Liegen ? |
|
Nach oben |
|
|
MOD Fleißiger Referenzredakteur
Anmeldungsdatum: 10.09.2007 Beiträge: 1003
|
Verfasst am: 29.05.2009, 19:23 Titel: |
|
|
Was dir volta zu vermitteln versucht ist, dass du auch tatsächlich 13 Zeichen erhältst aber diese immer auf die gleiche Position schreibst. |
|
Nach oben |
|
|
Gehm Gast
|
Verfasst am: 30.05.2009, 02:14 Titel: |
|
|
OK,
ich glaube ich weis was Ihr meint.
doch wie kann ich das umgehen ??
wie gesagt wenn ich LOCATE nicht verwende dann macht das Programm immer die 13 Zeichen zeilen weise und wenn ich die Locate verwende als alles an eine Stelle schreiben lasse dann sehe ich immer nur 1 zeichen was natürlich etwas ergerlich ist.
wie kann ich das denn umgehen ?? das ich also alle zeichen wider bekomme ?? |
|
Nach oben |
|
|
Ferdi
Anmeldungsdatum: 10.03.2007 Beiträge: 284 Wohnort: Berlin
|
Verfasst am: 30.05.2009, 11:41 Titel: |
|
|
Ich hab zwar immer noch nicht ganz kapiert, was du willst, trotzdem versuche ich es:
Code: |
OPEN "COM2:9600,N,8,1,DS0,CS0,CD0,BIN" AS 1
LOCATE 5,5: PRINT "Temp: "
DO
t$ = INKEY$ ' Tastendruck in t$ Copiren
PRINT#1, "C"; ' senden vom C für die anforderung der Temperatur
a% = LOC(1)
IF a% > 0 THEN ' etwas erhalten?
zeile% = zeile% + 1 'Zeile festlegen
z$=INPUT$(a%, 1) ' erhaltenen Wert in z$ Copiren
LOCATE zeile%, 12: PRINT z$; ' am Bildschirm ausgeben
END IF
LOOP UNTIL t$=CHR$(27) ' "ESC" Taste zum Abbruch der Schleife
CLOSE 1 'Verbindung COM2 schlißen
|
Wenn es nicht funzt, versuchs mal mit
Ferdi _________________ Dieser Post wurde cum grano salis gewürzt! Na dann: Guten Appetit! |
|
Nach oben |
|
|
Gehm Gast
|
Verfasst am: 30.05.2009, 17:55 Titel: |
|
|
Ok, ich glaube so langsam aber sicher habe ich das verstanden wie das mit dem Auslessen funzt.
ich erhallte immer nur 1 Zeichen das kann ich dann auch am Monitor hin schreiben. und wenn ich das mit Print mache und ein CHR($13) kommt dann macht er auch automatisch ein Zeilen umbruch.
Daher habe ich auch immer Zeilen weise die Sachen gesehen am Monitor und mit Locate nicht mehr.
wie kann ich denn das CHR$(13) abfragen, so das ich alle Daten bis zum CHR$(13) sammle und dann erst ausgebe ??
bzw. den Nächsten "Befehl"-für das Messgerät wider neu Raus sende ??
ps. das mit dem Corser vorschub hat supper geklapt, auch wenn im ersten Beispiel die Zeile verwendet wurde.
und erst mal schon mal einen Rissen dank an alle die mir da gerade helfen, wehre ohne euch echt von aufgeschmissen. |
|
Nach oben |
|
|
MOD Fleißiger Referenzredakteur
Anmeldungsdatum: 10.09.2007 Beiträge: 1003
|
Verfasst am: 30.05.2009, 18:54 Titel: |
|
|
Statt die Zeichen einzeln auf dem Bildschirm auszugeben, kannst du sie doch erst in einer String-Variable speichern und zum Schluß ausgeben, also etwa so:
Code: | [...]
If aktuellerhalteneszeichen <> Chr(13) Then stringvar = stringvar + aktuellerhalteneszeichen
[...]'Hier ist dann irgendwo die Schleife zuende und dann kommt:
Print stringvar
|
|
|
Nach oben |
|
|
Gehm Gast
|
Verfasst am: 30.05.2009, 19:56 Titel: |
|
|
Cool danke. genau das habe ich gesucht. warum ich da nicht selber drauf gekommen bin
ich weis das es geht doch ich weis nicht mehr wie
Code: |
if Zeichen$ <> " " THEN
if Zeichen$ <> CHR$(13) Then Temperatur$ = Temperatur$ + Zeichen$
END IF |
wie kann ich das denn in eine IF anwendung basteln ? |
|
Nach oben |
|
|
St_W
Anmeldungsdatum: 22.07.2007 Beiträge: 949 Wohnort: Austria
|
Verfasst am: 30.05.2009, 20:01 Titel: |
|
|
Code: |
IF Zeichen$ <> " " AND Zeichen$ <> CHR$(13) THEN
Temperatur$ = Temperatur$ + Zeichen$
END IF |
Du kannst übrigens auch mit OR verknüpfen wenn nur eines der zwei (oder mehr) Bedingungen zutreffen muss, oder wie in deinem Fall mit AND, wenn beide Bedingungen zutreffen müssen. _________________ Aktuelle FreeBasic Builds, Projekte, Code-Snippets unter http://users.freebasic-portal.de/stw/
http://www.mv-lacken.at Musikverein Lacken (MV Lacken) |
|
Nach oben |
|
|
Gehm Gast
|
Verfasst am: 30.05.2009, 22:56 Titel: |
|
|
danke perfekt.
ich weis ich frage echt viel und verdammt doofe Fragen.
mein bisheriger Coode.
Code: |
Color 31,1
Locate 15, 40: ? "Bitte warten"
Color 7,1
Close 1
Open"COM2:9600, ´N,8,1,DS0, ´cs, cd, BIN" FOR RANDOM AS 1
Print #1, "C" ' Anforderung der Temperatur
sleep 1
if LOC(1) >0 Then z$ = input$(1, #1)
if z$ = "" or z$ = CHR$(10) Then GOTO 10
if z$ <> "" AND z$<> CHR$(10) THEN Print "->"; z$; "PC Verbindung AKTIV": END
END
10 ' PC Verbindung aufbauen
CLOSE 1
Open"COM2:9600, ´N,8,1,DS0, ´cs, cd, BIN" FOR RANDOM AS 1
COLOR 30,1
Locate 15, 35: ? " Bitte schalten Sie das Messgerät ein"
Locate 16, 38: ?"und Drücken SIe die PC Taste"
Color 7,1
do
t$ = inkey$
if LOC(1) >0 then
z$ = input$(1,#1)
if z$ = "C" Then ? #1, "A": Print "A Wurde gesendet"
Print z$;
end if
loop Until t$ = CHR$(27)
END |
wenn ich jetzt das Programm Starte, bevor ich die SUB starte mein Messgerät einschalte, und dann versuche eine PC verbindung aufzubauen muss ich immer 2 mal die PC Taste am Messgerät drücken, kann das sein das etwas im Puffer ligt das es Blockirt wenn ich das gerät zufrü einschalte ??
denn wenn ich das Gerät erst an der Stelle einschalte wo mich mein Programm auffordert klapt es auf anhib, oder mein Geröt vor Programm start schon an ist.
Kann man den Puffer lerren ?? vom COM Port ??
ich dachte ich Könnte das fileicht machen in dem ich die verbindung wider schlise aber dem ist scheinbar nicht so
Hat jemand eine Idee ?? |
|
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.
|
|