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:

Welchen Port hat mein USB Serial Adapter
Gehe zu Seite Zurück  1, 2
 
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
nemored



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

BeitragVerfasst am: 30.09.2010, 13:42    Titel: Antworten mit Zitat

So wie ich das verstehe, brauchst du ja irgendwo einen Platz für dein Paritätsbit. FreeBASIC wird wohl immer in 8-Bit-Blöcken übertragen Wenn die zu übertragenden Daten schon acht Bit in Anspruch nehmen, hast du halt kein neuntes Bit für die Paritätsprüfung mehr frei. Werden (z. B.) nur sieben Bit Daten übertragen, dann steht dir das achte Bit noch für die Paritätsprüfung zur Verfügung. Ist aber nur meine Vermutung.
_________________
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
Sebastian
Administrator


Anmeldungsdatum: 10.09.2004
Beiträge: 5969
Wohnort: Deutschland

BeitragVerfasst am: 30.09.2010, 14:36    Titel: Antworten mit Zitat

Hallo!
West_Bell hat Folgendes geschrieben:
Die Jungs die sich vor mir mit dem Roboter beschäftigt haben, haben zuerst in MS Dos die Com Schnittstelle konfiguriert, und zwar folgendermaßen:

C:\>mode COM1: 2400,E,8,1,P

Die Baudrate habe ich jetzt genau so eingestelt, E steht ja für die Parität even, also gerade, 8 Datenbits ei Stoppbit, wofür das P ?
Und noch ne Frage dazu: In der Anleitung von FB steht, dass bei 8 Datenbits nur die Parität none angegeben werden kann. Wieso?

Hast du's mal mit diesen Einstellungen für COMPort versucht?
Code:
Const COMPort = "COM4:2400,E,8,1,PE"

Das P in deiner mode-Zeile steht für Parity (siehe mode). In dem Einstellungsstring, den ich zu Beginn vorschlagen habe, ohne die technischen Daten des Roboters zu kennen, ist Parity deaktiviert.

Wenn es auch mit dem neuen Einstellungsstring oben nicht klappt, könntest du zusätzlich versuchen, statt CHR(10) den Windows-Zeilenumbruch CHR(13,10) zu senden:
Code:
SendeDaten ("NT"+chr(13,10))


Weißt du zufällig, welche Signalleitungen dein Roboter verwendet (nur RX und TX zzgl. GND oder noch weitere)?

Viele Grüße!
Sebastian
_________________

Der Markt regelt das! | Opas Leistung muss sich wieder lohnen - für 6 bis 10 Generationen!
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
West_Bell



Anmeldungsdatum: 13.09.2010
Beiträge: 10

BeitragVerfasst am: 30.09.2010, 14:50    Titel: Antworten mit Zitat

ES GEHT! Danke an alle. Melde mich später mit weiteren Fragen und Bildern !!!
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
West_Bell



Anmeldungsdatum: 13.09.2010
Beiträge: 10

BeitragVerfasst am: 05.10.2010, 10:38    Titel: Antworten mit Zitat

So, wie versprochen die nächste Frage:

Ich öchte gerne die Loop Schleife rausnehmen, also das jeder Befehl nur 1 mal gesendet wird. Jedoch gibt er mir Fehlermeldungen aus, wenn ich die Zeile einfach rausnehme. Was muss ich da noch machen?

Christian
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Sebastian
Administrator


Anmeldungsdatum: 10.09.2004
Beiträge: 5969
Wohnort: Deutschland

BeitragVerfasst am: 05.10.2010, 10:55    Titel: Antworten mit Zitat

Hallo,

um die Schleife zu entfernen, müssen zwei Stellen geändert werden, da der Schleifenrumpf in BASIC mit jeweils einer Zeile begonnen und mit einer weiteren abgeschlossen wird, d.h. es genügt nicht, die DO-Zeile zu entfernen.
Während du den Block des Schleifenrumpfs in PASCAL mit begin ... end oder in C(++) mit geschweiften Klammern umsetzt, gehört in QB/FB zu jeder Schleife auch ein Abschluss.

Am Beispiel einer Zählschleife:
Code:
Print "10 wichtige Erkenntnisse:"
For i As Integer = 1 To 10  'Anfang der Schleife
  Print i & ". Programmieren macht Spass!"
Next i  'Ende der Schleife
Sleep

Das NEXT i signalisiert, dass der Schleifenrumpf zu Ende ist, der Laufindex um 1 erhöht (1 in diesem Codebeispiel) und anschließend wieder zum Anfang der Schleife gesprungen werden soll.

Die DO-Schleife, die in dem Steuerungsprogramm vorkommt, funktioniert anders als die Zählschleife:
Code:
TuFolgendes   ' = DO
  ...
MachDasSolangeBisBzwSolangeWie <Bedingung>   ' = LOOP UNTIL oder LOOP WHILE


Code:
Do  'Beginn der Schleife.
  Beep
  Sleep 1000
Loop Until Inkey <> ""  'Mach das solange, bis Inkey (=Tastatureingabe) ungleich 'leer' ist. Ende der Schleife.


Nun sollte klar sein, welche beiden Zeilen aus dem Robotersteuerprogramm entfernt werden müssen, damit keine Schleife mehr vorkommt. zwinkern

Der Teil des Programms müsste dann in etwa so aussehen:
Code:
If (Open Com ( COMPort For Binary As #1 ) <> 0 ) Then
    Print "Fehler: Der Port konnte nicht geoeffnet werden!"
    Sleep: End 1
Else
    Print "COM-Port geoeffnet"
    Sleep 500
    SendeDaten ("NT"+chr(10))  'NT mit anschliessendem <LF>
    Print TIME & " NT-Befehl gesendet."
    Sleep 2000 'Warte 2 Sekunden, weil Roboter vielleicht noch nicht fertig mit
               'der Ausfuehrung des Befehls???
    SendeDaten ("ABC"+chr(10))  'NT mit anschliessendem <LF>
    Print TIME & " Irgendein anderer Befehl gesendet (ABC)."
    Sleep 2000
    'Port schliessen / Verbindung trennen:
    Close #1
    Print "COM-Port geschlossen"
    Sleep: End 0
End If

Viele Grüße!
Sebastian
_________________

Der Markt regelt das! | Opas Leistung muss sich wieder lohnen - für 6 bis 10 Generationen!
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
Gehe zu Seite Zurück  1, 2
Seite 2 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