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:

Der gute alte COM-Port

 
Neues Thema eröffnen   Neue Antwort erstellen    Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht -> Profi-Forum
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen  
Autor Nachricht
[p]2



Anmeldungsdatum: 20.10.2006
Beiträge: 1

BeitragVerfasst am: 20.10.2006, 02:49    Titel: Der gute alte COM-Port Antworten mit Zitat

Hallo Profis.
Ich habe mich entschieden ein Oszilloskop ueber den COM-Port anzusteuern, um einen einzigen Wert auszulesen. Hierfuer muessen natuerlich erst mal ein paar Settings gemacht werden, und danach moechte ich gerne den Wert alle 5 sekunden abfragen. Das Grundgeruest, also der Timer funktioniert in freebasic, das alles ist kein Problem. Das schwierigste jedoch ist immer die kommunikation mit dem oszi. Nun, momentan bin ich soweit dass das oszi die befehle, die es ueber die schnittstelle bekommt empfaengt und auch richtig interpretiert.
Ist nun aber der Befehl eine Frage, zum Beispiel "Geraet wer bist du?" mit *IDN?, so sehe ich zwar dass das oszi etwas sendet, aber der string in basic bleibt leer.
Unter dem Standard windows terminal, kann ich empfangen und senden.
Habe es mit dem super terminal v1.9b von bray probiert. Dort habe ich folgende settings: COM1, 4800baud, databits8, Pnone, Stopbits1, Handshake none, settings CTS,DSR aktiviert. Mit diesem Terminal habe ich festgestellt, dass ich nur empfangen kann wenn das RTS laempchen an ist. Den ausgang RTS zu schalten im Algorithm mit (OUT 1020,3) nachdem ich gesendet habe, mag mein windows gar nicht.
Zum Oszi: es moechte als EndofInput ein Chr(13) haben, und als endofOutput moechte es "\n\r" .

Bin, da ich das forum nach allen com-beitraegen durchwuehlt habe, confused, weil die befehlsrefernz fuer open com nur fuer qbasic richtig sein soll.
Dieser Beitrag soll dazu dienen, eine Moeglichkeit zu suchen mit einfachen GNU mitteln ein sauteueres geraet zu steuern (verzicht auf labview, hpvee - klar die verbindung ist lahm, aber es soll nur gesteuert werden), und vielleicht die referenz fuer open com zu berichtigen.

Hier ist mal das fragment meines laecherlichen beitrags:

OPEN "COM1:4800,N,8,1,CS0,DS0" FOR RANDOM AS #1
answer$="no_"
Print #1, "*IDN?" + Chr$(13)
SLEEP 2000
Input #1, answer$
Print "-------"
Print answer$ +"answer"
close #1

Bitte um freundliche und genau erklaerung falls jemand hilfe weiss. Solange mach ich mit mit dem Kopf durch die Mauer wollen und meinem Problem weiter.

Greets
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
terminate



Anmeldungsdatum: 12.09.2006
Beiträge: 56

BeitragVerfasst am: 28.10.2006, 00:57    Titel: Re: Der gute alte COM-Port Antworten mit Zitat

Eigentlich bin ich schon viel zu müde und schreib jetzt nur weil ich den Begriff COM PORT gelesen habe und ich bin auch sehr zuversichtlich, dass sich dein Problem lösen läßt, (nur nicht mehr heute).

Also ich würde erst mal von Print # und Input # weggehen und stattdessen put und get verwenden.

So in der Art:
Code:

Dim As Integer com_port_handle
Dim As String buf_send_pat,buf_receive_pat
Dim read_char As String *1

com_port_handle=freefile   


print "open com"
print
open com "COM1:4800,N,8,1,CS0,DS0" as #com_port_handle


print "send data"
print
buf_send_pat="*IDN?" + Chr$(13)

Put #com_port_handle,,buf_send_pat

print "wait"
print
SLEEP 2000

print "receive data"
print
Do Until Loc(com_port_handle) = Lof(com_port_handle)
    Get #com_port_handle,,read_char
    buf_receive_pat=buf_receive_pat+read_char
Loop

print "buf_receive_pat: " & buf_receive_pat
print

Close com_port_handle

print "any key to exit"
sleep


[p]2 hat Folgendes geschrieben:
... Mit diesem Terminal habe ich festgestellt, dass ich nur empfangen kann wenn das RTS laempchen an ist. Den ausgang RTS zu schalten im Algorithm mit (OUT 1020,3) nachdem ich gesendet habe, mag mein windows gar nicht.
...

Das läßt sich auf jeden Fall (auch ohne OUT 1020,3), über die win32api lösen, falls es nur daran scheitern sollte. Hab mich vor kurzem für einen Test mal damit beschäftigt, (nein das steht in meinen Beispielen noch nicht drin, ich weiß aber dass es geht):
http://forum.qbasic.at/viewtopic.php?p=41419#41419
http://www.freebasic.net/forum/viewtopic.php?p=52202#52202

Probier einfach mal aus ob du jetzt etwas empfangen kannst.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
dreael
Administrator


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

BeitragVerfasst am: 28.10.2006, 16:40    Titel: Antworten mit Zitat

Früher in QB der geeignete Weg:

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

Möglicherweise funktioniert in FreeBasic syntaktisch alles genau gleich => probieren.
_________________
Teste die PC-Sicherheit mit www.sec-check.net
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
Beiträge der letzten Zeit anzeigen:   
Neues Thema eröffnen   Neue Antwort erstellen    Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht -> Profi-Forum 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