customData.py
1 #!/usr/bin/env python
2 # -*- coding: utf-8 -*-
3 
4 # notwendige Module einbinden
5 from time import sleep
6 import packedCom
7 
8 
9 class customData(packedCom.packedCom):
10 
11  def __init__(self):
12  """ Initialisieren der Klasse. """
13 
14 
15  self.custom_1 = ord('T')
16  self.custom_2 = ord('R')
17  self.custom_3 = 5
18 
19 
20  packedCom.packedCom.__init__(self, 0xb1, "BBh")
21  # packed descriptor is 0xB1
22  # costum_1 is of type uint8_t
23  # costum_2 is of type uint8_t
24  # costum_3 is of type int16_t
25 
26  def getAsString(self):
27  """ Konvertiert die aktuellen Daten in einen String """
28 
29  # schreibe alle Daten in eine Liste
30  # (Reihenfolge wie bei der Initialisierung)
31  data = [ self.custom_1, self.custom_2, self.custom_3 ]
32  # rufe die getAsString-Funktion der Basisklasse
33  return super(customData, self).getAsString(data)
34 
35 """
36 Programm zum Testen der packed communication mit dem Roboter.
37 
38 Zugehöriges Mikrocontroller Programm ist examples/packedCom.c
39 Wird dieses Programm auf dem Roboter ausgeführt, kann über das Python
40 Skript eine Kommunikation etabliert werden.
41 
42 Dieses Python Skript benötigt das vereinfachte packedCom-Modul unter
43  tools/python/packedCom.py
44 
45 Das Programm kann mit Strg-C abgebrochen werden.
46 """
47 
48 # Comport öffnen
49 # Standarddevice ist Kabelgebundene USB Verbindung zum Roboter
50 # (/dev/tucbot/all_usb)
51 #
52 # Zum öffnen der XBee-Verbindung muss dieses Skript mit dem entsprechenden
53 # Parameter geöffnet werden, für den Roboter Hugo wäre dies zum Beispiel:
54 # $ python customData.py -r hugo
55 comport = packedCom.comPort()
56 
57 # Kurz warten, um das Comport zu initialisieren
58 sleep(0.2)
59 
60 
61 # Senden der Klasse an den Roboter testen.
62 d = customData()
63 d.custom_3 = 5
64 
65 print "out: ", repr(d.getAsString())
66 comport.write(d.getAsString())
67 
68 
69 # Endlosschleife, liest Daten von der Schnittstelle und schreibt diese
70 # sofort auf den Bildschirm.
71 # Mit Strg-C abbrechen!
72 while 1:
73  tmp = comport.read(100)
74  if (tmp != ""):
75  print "in : ", repr(tmp)
76 
77  # Für automatische Auswertung der Packages muss auf tuc_bot Package
78  # zurückgegriffen werden. Dokumentation ist noch in Arbeit.
79  if len(tmp) > 1:
80  d.custom_3 = d.custom_3 + 1
81 
82  print "out: ", repr(d.getAsString())
83  comport.write(d.getAsString())
84 
85  sleep(0.1)