wieland
Anmeldungsdatum: 16.06.2010 Beiträge: 1
|
Verfasst am: 16.06.2010, 14:19 Titel: daten senden und empfangen mit 2 seriellen gleichzeitig |
|
|
Hallo,
kann das so funktionieren?
ps.: Es ist das erste mal das ich überhaupt was Schreibe
also werden da mit Sicherheit grobe Schnitzer dabei sein.
Code: |
#Include Once "windows.bi"
OPEN COM COMA: 9900, N, 8, 1" As #1
OPEN COM COM2: 9900, N, 8, 1" As #2
PRINT "Drücken Sie 'q', um zu beenden"
Do
PRINT "Drücken Sie 's', um zu starten"
Do
Loop UNTIL INKEY = "s"
PRINT #1, Start aufzeichnen
PRINT #2, Start drehen
Print "Drücken Sie 'x', um zu stoppen"
Do
Loop UNTIL INKEY = "x"
Print #1, Stopp aufzeichnen
Print #2, Stopp drehen
Input #2, Schritte
Print Schritte " Schritte wurden gedreht"
Print #2, drehrichtung links
Print #2, Schritte drehen
Print #2, drehrichtung rechts
Print #2, schrittzähler auf null
LOOP Until INKEY = "q"
Close
|
Was das ganze soll?
Ich habe auf der einen Seite (comA) ein Programm, das durch eine Serielle Schnittstelle ferngesteuert wird. (virtuelle Schnittstelle und comOcom) Es empfängt Sring`s und zeichnet die Bewegung eines Schrittmotors (com2 Schrittmotorsteuerung) auf.
Meine Fragen sind ob der Code so funktionieren kann und
wie ich die empfangenen Schritte verarbeiten muss um sie dann wieder zu senden bzw., muss ich da noch irgendwie Variablen festlegen?
Gibt es eine Alternative zu do...loop wird da nicht unnötige Rechenleistung verbraucht?
Ich kann mit dem was in der Anleitung zur Schrittabfrage steht nicht viel anfangen:
Schrittmotorsteuerung liefert zurück:
1.Byte: Schrittanzahl (Low Byte von Low Word)
2.Byte: Schrittanzahl (High Byte von Low Word)
3.Byte: Schrittanzahl (Low Byte von High Word)
4.Byte: Schrittanzahl (High Byte von High Word)
generell sieht die befehlssyntax der schrittmotorsteuerung so aus:
1. Byte: Kennung immer 33 also ASCII-Zeichen "!"
2. Byte: Kennung immer 35 also ASCII-Zeichen "#"
3. Byte: Befehlscode (dieses Byte legt die Art des Befehles fest)
4. Byte: Motor (entweder 1 oder 2 oder 3 für beide)
5. Byte: Parameter 1 (je nach Befehl)
6. Byte: Parameter 2 (je nach Befehl)
7. Byte: Parameter 3 (je nach Befehl)
8. Byte: Parameter 4 (je nach Befehl)
Ich würde mich freuen wenn hier mal Jemand drüberschauen kann, Verbesserungen und Hinweise geben kann.
Achja das ganze muss unter winxp laufen.
Vielen Dank
wieland |
|
nemored

Anmeldungsdatum: 22.02.2007 Beiträge: 4704 Wohnort: ~/
|
Verfasst am: 16.06.2010, 18:14 Titel: |
|
|
Zu OPEN COM kann ich nichts sagen, aber was anderes: bei
Code: | DO
LOOP UNTIL INKEY = "s" |
wird dir eine sehr hohe CPU-Auslastung bescheren. Vermeiden kannst du das z. B. durch
Code: | DO
SLEEP 1
LOOP UNTIL INKEY = "s" |
Das Beenden wird sicher auch schwer, weil du in der kurzen Zeit zwischen dem Druck von 'x' und dem Schleifenende ganz schnell noch 'q' drücken müsstest. _________________ Deine Chance beträgt 1:1000. Also musst du folgendes tun: Vergiss die 1000 und konzentriere dich auf die 1. |
|