![Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht](misc/logos/logo.png) |
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 |
nemored
![](images/avatars/18585278245ddb8b9d8710.png)
Anmeldungsdatum: 22.02.2007 Beiträge: 4604 Wohnort: ~/
|
Verfasst am: 30.09.2010, 14:42 Titel: |
|
|
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 |
|
![](templates/subSilver/images/spacer.gif) |
Sebastian Administrator
![](images/avatars/563932275488e4d20c5ee9.jpg)
Anmeldungsdatum: 10.09.2004 Beiträge: 5969 Wohnort: Deutschland
|
Verfasst am: 30.09.2010, 15:36 Titel: |
|
|
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 _________________
Die gefährlichsten Familienclans | Opas Leistung muss sich wieder lohnen - für 6 bis 10 Generationen! |
|
Nach oben |
|
![](templates/subSilver/images/spacer.gif) |
West_Bell
Anmeldungsdatum: 13.09.2010 Beiträge: 10
|
Verfasst am: 30.09.2010, 15:50 Titel: |
|
|
ES GEHT! Danke an alle. Melde mich später mit weiteren Fragen und Bildern !!! |
|
Nach oben |
|
![](templates/subSilver/images/spacer.gif) |
West_Bell
Anmeldungsdatum: 13.09.2010 Beiträge: 10
|
Verfasst am: 05.10.2010, 11:38 Titel: |
|
|
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 |
|
![](templates/subSilver/images/spacer.gif) |
Sebastian Administrator
![](images/avatars/563932275488e4d20c5ee9.jpg)
Anmeldungsdatum: 10.09.2004 Beiträge: 5969 Wohnort: Deutschland
|
Verfasst am: 05.10.2010, 11:55 Titel: |
|
|
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.
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 _________________
Die gefährlichsten Familienclans | Opas Leistung muss sich wieder lohnen - für 6 bis 10 Generationen! |
|
Nach oben |
|
![](templates/subSilver/images/spacer.gif) |
|
|
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.
|
|