-         

Seite 1 von 2 12 LetzteLetzte
Ergebnis 1 bis 10 von 16

Thema: Bascom -> C, Programm umschreiben

  1. #1
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    22.02.2005
    Beiträge
    385

    Bascom -> C, Programm umschreiben

    Anzeige

    Hi,
    kann mir jemand erklären, was Bascom bei diesem Code macht:
    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
    Die Methode bewegt nen Servo, bzw sagt dem CoController, dass er den Servo bewegen soll. Wie mach ich das in C?

    mfg
    jagdfalke

  2. #2
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    22.05.2005
    Ort
    12°29´ O, 48°38´ N
    Alter
    48
    Beiträge
    2.731
    Hallo,

    probiern wirs mal:

    Öffnet eine Software UART am PortD.7 mit 9600 usw. nur TX, also ausgabe,

    gibt vier Zeichen aus, beginnend mit "#s"

    schliesst die UART Verbindung.


    Lässt sich aber mithilfe der BascomHilfe entschlüsseln.

  3. #3
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    22.02.2005
    Beiträge
    385
    bascom war noch nie so mein Fall. Hmm Software UART? Wo kann ich herausfinden, wie das geht? (Software UART = normale UART nur an selber definierten pins oder?)

    mfg
    jagdfalke

  4. #4
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    22.05.2005
    Ort
    12°29´ O, 48°38´ N
    Alter
    48
    Beiträge
    2.731
    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.

  5. #5
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    22.02.2005
    Beiträge
    385
    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

  6. #6
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    22.05.2005
    Ort
    12°29´ O, 48°38´ N
    Alter
    48
    Beiträge
    2.731
    Du verwendest einfach deinen Code aus dem anderen Thread, http://www.roboternetz.de/phpBB2/zei...ag.php?t=14641
    und sendest Die vier Zeichen die Du da senden musst.

  7. #7
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    22.02.2005
    Beiträge
    385
    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

  8. #8
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    29.01.2004
    Beiträge
    2.441
    Sicher, dass ";" zwischen den Werten in Bascom das ganze einfach zusammenfügt?
    Sende es doch einfach mal an ein Terminalprogramm auf deinem Computer. Dann siehst du was da ankommt.

  9. #9
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    22.05.2005
    Ort
    12°29´ O, 48°38´ N
    Alter
    48
    Beiträge
    2.731
    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.

  10. #10
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    22.02.2005
    Beiträge
    385
    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:
    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++;
    	}
    }
    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.)


    mfg
    jagdfalke

Seite 1 von 2 12 LetzteLetzte

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •