Mit Gnu/Linux für PyS60 entwickeln

Dieses Thema im Forum "Tutorials & FAQs" wurde erstellt von Protector, 18. März 2010.

Status des Themas:
Es sind keine weiteren Antworten möglich.
  1. Protector

    Protector VIP Mitglied

    Registriert seit:
    7. Apr. 2007
    Beiträge:
    14.565
    Zustimmungen:
    41
    Ped ist eine komfortable Entwicklungsumgebung für Python auf einem S60-Handy (PyS60) und eignet sich sehr gut für das Entwickeln unterwegs. Zu Hause möchte ich aber lieber meinen Computer zum Programmieren benutzen. Über die Bluetooth-Konsole bekommt man zwar ein Terminal, mit dem man Anweisungen über den PC auf dem Handy ausführen kann, es eignet sich aber nicht dazu, ganze Programme zu testen. Es ist nämlich ganz schön ermüdend, wenn man das Skript am Computer schreibt, es mehrmals über USB oder Bluetooth auf das Telefon überträgt, um es dann dort mit der Python-Shell zu starten. Einfacher und schneller geht es mit den PUTools.

    Die PUTools installieren

    Ich habe PUTools unter Ubuntu 9.10 installiert, was wirklich nicht sehr schwer war. Unter Karmic Koala benötigt man im Prinzip nur python-serial, alles andere dürfte schon installiert sein:

    Code:
    [COLOR="Red"]sudo apt-get[/COLOR] install python-serial
    Anschließend benötigt man die PUTools, die man am besten in sein Home-Verzeichnis entpackt. Daher wird nun davon ausgegangen, dass die Dateien in ~/putools liegen. Danach muss man die Datei
    Code:
    ~/putools/pcfiles/sync.config
    konfigurieren, indem man unter der Variable COM_PORT seinen bevorzugten Bluetooth-Port einträgt:

    Code:
    COM_PORT = [COLOR="Red"]'/dev/rfcomm0'[/COLOR]
    Außerdem sollten noch Port und Kanal von RFCOMM unter
    Code:
    /etc/bluetooth/rfcomm.conf
    definiert werden:

    Code:
    #
    # RFCOMM configuration file.
    #
     
    rfcomm0 [COLOR="Purple"][B]{[/B][/COLOR]
    	# Automatically bind the device at startup
    	[B][COLOR="Purple"]bind[/COLOR][/B] no;
     
    	# Bluetooth address of the device
    	device 00:11:22:33:44:55;
     
    	# RFCOMM channel for the connection
    	channel	3;
     
    	# Description of the connection
    	comment "[COLOR="Red"]E71[/COLOR]";
    [B][COLOR="Purple"]}[/COLOR][/B]
    Die Device-Nummer des Gerätes erfährt man mit dem Befehl hcitool scan:

    Code:
    christian@Unaha-Closp:~$ hcitool scan
    Scanning ...
    	 00:11:22:33:44:55	Emil71
    Nun muss noch das Telefon vorbereitet werden. Damit Handy und PC sich kennenlernen, muss man sie bekannt machen (Pairing). Das erledigt man am Besten mit dem Bluetooth-Applet in Gnome, in dem man die Datei
    Code:
    ~/putools/phpush.py
    in das Verzeichnis
    Code:
    E:\Python
    auf der Speicherkarte des Handys überträgt. Außerdem müssen noch die Dateien im Ordner
    Code:
    ~/putools/libs/
    nach
    Code:
    E:\Python\lib
    kopiert werden.

    Das ganze ohne Applet

    Wer kein Gnome oder kein Bluetooth-Applet zur Verfügung hat, kann das Ganze auch zu Fuß im Terminal machen. Dazu muss aber obexftp installiert sein:

    Code:
    [COLOR="Red"]sudo apt-get install[/COLOR] obexftp
    Ob eine Bluetooth-Verbindung mit obexftp sauber funktioniert, kann man erstmal mit folgendem Kommando testen:

    Code:
    obexftp -b 00:11:22:33:44:55  -l
    Die Option -b besagt, dass ObexFTP über Bluetooth auf das Telefon zugreifen soll, danach folgt dessen Bluetooth-ID mit der Option -l zum Auflisten des Ordnerinhalts. Die Ausgabe des Befehls sollte also die oberste Verzeichnisstruktur des Handys zeigen. Falls das nicht klappt, und das Handy nach einer PIN für die Bluetooth-Verbindung verlangt, muss man den PIN erstmal als Superuser Root vereinbaren:

    Code:
    [B][COLOR="Red"]sudo -s[/COLOR][/B]
    echo [COLOR="Red"]"00:11:22:33:44:55 1234"[/COLOR] > /var/lib/bluetooth/11\:AA\:22\:BB\:33\:CC/pincodes
    Nachdem man mit dem Befehl sudo -s in die Root-Shell geschlüpft ist, hinterlegt man nach folgendem Schema den PIN:

    Code:
    echo [COLOR="Red"]"Bluetooth-ID Handy PIN"[/COLOR] > /var/lib/bluetooth/Bluetooth-ID PC/pincodes
    Die Bluetooth-ID des Handys ermittelt man mit hcitool scan, wie schon weiter oben gezeigt, für die Bluetooth-ID des PCs reicht ein ls -l /var/lib/bluetooth aus. Den PIN kann man frei wählen, in diesem Fall ist es 1234, und wird in der Datei pincodes hinterlegt. Wenn das Handy wieder nach der PIN zur Bestätigung einer Bluetooth-Verbindung fragt, gibt man in diesem Fall 1234 ein.

    Zurück als normaler User kann man dann die Datei phpush.py auf das Handy kopieren:

    Code:
    ~/putools$ obexftp [B]-b[/B] 00:11:22:33:44:55 [B]-c[/B] E: [B]-c[/B] Python [B]-p[/B] phpush.py
    Dabei steht die Option -c für den Pfad zum Ordner, in dem die Datei abgespeichert werden soll. Na gut, genauer gesagt wird das Arbeitsverzeichnis auf dem Telefon gesetzt, was in diesem Fall
    Code:
    E:\Python
    ist. Mit der Option -p wird die Datei phpush.py an den Ordner Python auf Laufwerk
    Code:
    E:
    , was in diesem Fall die Speicherkarte ist, gesendet. Dann fehlen noch die Dateien im Ordner
    Code:
    ~/putools/libs/
    , die nach
    Code:
    E:\Python\lib
    kopiert werden sollen:

    Code:
    ~/putools$ obexftp -b 00:11:22:33:44:55 -c E: -c Python -C lib -p libs/*.py
    Mit der Option -C legt ObexFTP den neuen Ordner
    Code:
    \lib
    an, falls er noch nicht vorhanden ist.

    Weiter mit PHPush

    Wenn das erledigt ist, startet man Push, die Python Utility Shell:
    Code:
    ~/putools$ [B][COLOR="Red"]cd[/COLOR][/B] pcfiles/
    ~/putools$ rfcomm listen /dev/rfcomm0 3 ./push
    Dazu wechselt man zuerst in das Verzeichnis pcfiles/, in dem das Programm push liegt. Das Bluetooth-Protokoll RFCOMM emuliert an /dev/rfcomm0 eine serielle Schnittstelle, von der aus auf Kanal 3 gelauscht wird, ob ein weiteres Bluetooth-Gerät bereit ist. Daher ist es jetzt an der Zeit, die PyS60-Shell auf dem Telefon zu starten und das Programm phpush.py zu laden. Nachdem man den eigenen Rechner als Gegenstelle ausgewählt hat, startet push und man hat eine simple Python-Shell auf dem Desktop, deren Befehle auf dem Handy ausgeführt werden.

    [​IMG]

    Das scheint sich erstmal nicht großartig von der “normalen” Bluetooth-Konsole zu unterscheiden, hat aber mit den Shell-Kommandos sync und run einen entscheidenden Vorteil: Der Upload ist einfacher und man muss seine Skripte zum Testen nicht mehr umständlich über das Telefon starten. Das Skript kann einfach im Ordner ~/putools erstellt und dann mit dem Befehl sync in Push auf das Telefon übertragen werden. Nach Abschluss der Synchronisation startet man das Skript mit dem Befehl run test.py, was man auch auf dem Bild oben sehen kann.

    Original Urheber: Christian Imhorst
    Artikel steht unter der CC-Lizenz und kann frei verwenden werden.
    Original Artikel: Kopieren als Kulturtechnik - Daten|teiler Blog Archive Mit Gnu/Linux für PyS60 entwickeln
     

    Anhänge:

    • push.png
      push.png
      Dateigröße:
      26,6 KB
      Aufrufe:
      95
    #1 Protector, 18. März 2010
    Zuletzt bearbeitet: 25. Nov. 2010
Die Seite wird geladen...
Status des Themas:
Es sind keine weiteren Antworten möglich.