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 Schnitstelle
Gehe zu Seite 1, 2  Weiter
 
Neues Thema eröffnen   Neue Antwort erstellen    Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht -> Spezielle Fragen
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen  
Autor Nachricht
Gehm
Gast





BeitragVerfasst am: 26.05.2009, 11:02    Titel: COM Schnitstelle Antworten mit Zitat

Hallo freunde des QB,

ich habe bei mir zuhause einen alten Rechner mit WIN 95 neu aufgeätzt lächeln *bin richtig stolz auf mich lächeln*

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 lächeln)

Gruß
Nach oben
isiprimax



Anmeldungsdatum: 02.01.2009
Beiträge: 77

BeitragVerfasst am: 26.05.2009, 13:13    Titel: Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden
Gehm
Gast





BeitragVerfasst am: 26.05.2009, 15:53    Titel: Antworten mit Zitat

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 traurig

gruß
Nach oben
Gehm
Gast





BeitragVerfasst am: 26.05.2009, 20:55    Titel: Antworten mit Zitat

habe gefunden was ich suche:

http://www.dreael.ch/Deutsch/BASIC-Knowhow-Ecke/SerielleKommunikation.html
Nach oben
Gehm
Gast





BeitragVerfasst am: 26.05.2009, 21:19    Titel: Antworten mit Zitat

Ok jetzt muss mir doch jemadn noch Helfen traurig

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: 1874
Wohnort: D59192

BeitragVerfasst am: 26.05.2009, 21:46    Titel: Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
volta



Anmeldungsdatum: 04.05.2005
Beiträge: 1874
Wohnort: D59192

BeitragVerfasst am: 26.05.2009, 21:46    Titel: Antworten mit Zitat

hier gab es eine Fehlermeldung beim Absenden??
irgend was mit Debug Mode ...
daher Doppelpost missbilligen
_________________
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
nemored



Anmeldungsdatum: 22.02.2007
Beiträge: 4594
Wohnort: ~/

BeitragVerfasst am: 27.05.2009, 18:00    Titel: Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden
Gehm
Gast





BeitragVerfasst am: 27.05.2009, 18:17    Titel: Antworten mit Zitat

Cool, danke für den Link.
habe schon mal ein wenig reingeschnuppert und siht nicht schlecht aus,
dann werde ich mal weiter machen lächeln
Nach oben
Gehm
Gast





BeitragVerfasst am: 27.05.2009, 19:02    Titel: Antworten mit Zitat

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ß traurig warum bekomme ich das nicht richtig angezeigt weis da jemand Raht ??
Nach oben
volta



Anmeldungsdatum: 04.05.2005
Beiträge: 1874
Wohnort: D59192

BeitragVerfasst am: 29.05.2009, 14:13    Titel: Antworten mit Zitat

durch 'LOCATE 5, 12' wird immer an die gleiche Position geschrieben (überschrieben). durchgeknallt
_________________
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
Gehm
Gast





BeitragVerfasst am: 29.05.2009, 18:04    Titel: Antworten mit Zitat

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

BeitragVerfasst am: 29.05.2009, 18:23    Titel: Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden
Gehm
Gast





BeitragVerfasst am: 30.05.2009, 01:14    Titel: Antworten mit Zitat

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

BeitragVerfasst am: 30.05.2009, 10:41    Titel: Antworten mit Zitat

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
Code:
LOCATE 5, zeile%


Ferdi
_________________
Dieser Post wurde cum grano salis gewürzt! Na dann: Guten Appetit!
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
Gehm
Gast





BeitragVerfasst am: 30.05.2009, 16:55    Titel: Antworten mit Zitat

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. lächeln
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, zwinkern 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

BeitragVerfasst am: 30.05.2009, 17:54    Titel: Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden
Gehm
Gast





BeitragVerfasst am: 30.05.2009, 18:56    Titel: Antworten mit Zitat

Cool danke. genau das habe ich gesucht. warum ich da nicht selber drauf gekommen bin mit dem Kopf durch die Mauer wollen

ich weis das es geht doch ich weis nicht mehr wie traurig

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

BeitragVerfasst am: 30.05.2009, 19:01    Titel: Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden
Gehm
Gast





BeitragVerfasst am: 30.05.2009, 21:56    Titel: Antworten mit Zitat

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 traurig

Hat jemand eine Idee ??
Nach oben
Beiträge der letzten Zeit anzeigen:   
Neues Thema eröffnen   Neue Antwort erstellen    Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht -> Spezielle Fragen Alle Zeiten sind GMT + 1 Stunde
Gehe zu Seite 1, 2  Weiter
Seite 1 von 2

 
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