Hi,
kann mir jemand erklären, was Bascom bei diesem Code macht:
Die Methode bewegt nen Servo, bzw sagt dem CoController, dass er den Servo bewegen soll. Wie mach ich das in C?Code:Sub Rnb_servob(byval Servonummer As Byte , Byval Position As Byte) Open "comd.7:9600,8,n,1" For Output As #2 Print #2 , "#s" ; Chr(servonummer) ; Chr(position) Close #2 End Sub
mfg
jagdfalke
Wenn Du aber den eingebauten USART sonst nicht brauchst, ist es für C natürlich besser. In C das nachzubauen wird timingmässig durchaus anspruchsvoll, ist aber zu schaffen, denn es wir nur gesendet.
Bascom hab ich auch vor allem drauf, um nachschauen zu können, von was hier geredet wird.
Ok, sagen wir mal ich brauch den eingebauten UART nicht. Wie läuft das dann mit C? Ich glaub das mit dem Timing usw schaffe ich nicht, da ich gerade erste mit C angefangen habe.
mfg
jagdfalke
Du verwendest einfach deinen Code aus dem anderen Thread, https://www.roboternetz.de/phpBB2/ze...ag.php?t=14641
und sendest Die vier Zeichen die Du da senden musst.
hmm ich hab jetzt "#s1255" rübergesendet, aber der Servo 1 zuckt nicht einmal. Sicher, dass ";" zwischen den Werten in Bascom das ganze einfach zusammenfügt?
mfg
jagdfalke
Sende es doch einfach mal an ein Terminalprogramm auf deinem Computer. Dann siehst du was da ankommt.Sicher, dass ";" zwischen den Werten in Bascom das ganze einfach zusammenfügt?
Hi jagdfalke,
das waren aber mehr als 4 Zeichen !
Ausserdem werden die Zahlen nicht als String gesendet, sondern mit
CHR(zahl), so wird das als ein Byte übertragen.
Das lässt sich allerdings nicht so einfach mit einem Terminal testen.
ok, also ";" fügt die zusammen, sagt mein terminal.
Und was ist das Äquivalent zu "CHR()" in C ? In der Bascom Hilfe steht, dass es Zahlen zu Zeichen macht, aber macht das char *s = "#s1255" nicht auch schon?
Ich möchte die Servos geren mit dieser Funktion bewegen:
Das "+" zwischen dne String-Teilen macht nicht so ganz das was ich will. Ich glaub der addiert die Zahlen und hängt sie nicht an. Ich hab jetzt die Variable int len aus der Funktion rausgenommen, weil ich eigentlich nicht immer nachrechnen will, wie Viele Zeichen das jetzt haben wird. (len war ursprünglich dafür da, dass er while nicht abbricht sobald eine 0 auftaucht, es könnten ja noch andere Zeichen folgen.)Code:void servo_move(int servo, int pos) { char *s = "#s"+servo+pos; while(*s) { loop_until_bit_is_set(UCSRA, UDRE); UDR = *s; s++; } }
mfg
jagdfalke
Lesezeichen