]> git.llucax.com Git - z.facultad/66.09/etherled.git/blobdiff - cliente/cetherled.py
Ejemplo básico de uso de raw sockets que manda un frame saludador por UDP.
[z.facultad/66.09/etherled.git] / cliente / cetherled.py
index dfc15f72396f0e7a4f18fcf0d527732d523f01ae..c242769e410219e33ff3f393266aa1e1f5ffab49 100755 (executable)
@@ -28,8 +28,9 @@ import os
 import gtk
 from simplegladeapp import SimpleGladeApp
 from simplegladeapp import bindtextdomain
 import gtk
 from simplegladeapp import SimpleGladeApp
 from simplegladeapp import bindtextdomain
-from dispatcher import Dispatcher
+#from dispatcher import Dispatcher
 from led import Led
 from led import Led
+import etherled
 
 app_name = "cetherled"
 app_version = "1.0"
 
 app_name = "cetherled"
 app_version = "1.0"
@@ -38,12 +39,12 @@ locale_dir = ""
 
 bindtextdomain(app_name, locale_dir)
 
 
 bindtextdomain(app_name, locale_dir)
 
-
 class MainWindow(SimpleGladeApp):
 
     def __init__(self, path="cetherled.glade", root="main_window",
             domain=app_name, **kwargs):
         #notificar = Dispatcher(self.actualizar)
 class MainWindow(SimpleGladeApp):
 
     def __init__(self, path="cetherled.glade", root="main_window",
             domain=app_name, **kwargs):
         #notificar = Dispatcher(self.actualizar)
+        self.device = etherled.NetworkedDevice()
         path = os.path.join(glade_dir, path)
         SimpleGladeApp.__init__(self, path, root, domain, **kwargs)
 
         path = os.path.join(glade_dir, path)
         SimpleGladeApp.__init__(self, path, root, domain, **kwargs)
 
@@ -52,7 +53,7 @@ class MainWindow(SimpleGladeApp):
         for i in xrange(16):
             for j in xrange(16):
                 led = Led()
         for i in xrange(16):
             for j in xrange(16):
                 led = Led()
-                self.table_leds.attach(led, i, i+1, j, j+1)
+                self.table_leds.attach(led, j, j+1, i, i+1)
                 led.show()
                 self.tabla[i,j] = led
 
                 led.show()
                 self.tabla[i,j] = led
 
@@ -60,38 +61,25 @@ class MainWindow(SimpleGladeApp):
         self.quit()
 
     def on_btn_enviar_clicked(self, widget, *args):
         self.quit()
 
     def on_btn_enviar_clicked(self, widget, *args):
-        print self.tabla_a_stream()
+        self.device.matrix = self.leds2matrix()
+
+    def on_btn_recibir_clicked(self, widget, *args):
+        matrix = self.device.matrix
+        for row in xrange(16):
+            for col in xrange(16):
+                self.tabla[row,col].prendido = matrix[row,col]
+        etherled.protocol._print_matrix(matrix)
 
     def on_main_window_delete_event(self, widget, event, *args):
         self.quit()
 
 
     def on_main_window_delete_event(self, widget, event, *args):
         self.quit()
 
-    def imprimir_tabla(self, rotada=False):
-        rango = xrange(16)
-        if rotada:
-            rango = xrange(15, -1, -1)
-        for col in rango:
-            for row in xrange(16):
-                print int(self.tabla[col,row].prendido),
-            print
-        print
-
-    def imprimir_stream(self, stream):
-        for i in stream:
-            print '0x%02x' % i
-
-    def tabla_a_stream(self):
-        stream = []
-        for col in xrange(15, -1, -1):
-            i = 0
-            for row in xrange(8):
-                i += int(self.tabla[col,row].prendido) << row
-            stream.append(i)
-            i = 0
-            for row in xrange(8, 16):
-                i += int(self.tabla[col,row].prendido) << row
-            stream.append(i)
-        return stream
-
+    def leds2matrix(self):
+        matrix = {}
+        for row in xrange(16):
+            for col in xrange(16):
+                matrix[row,col] = int(self.tabla[row,col].prendido)
+        etherled.protocol._print_matrix(matrix)
+        return matrix
 
 def main():
     gtk.threads_init()
 
 def main():
     gtk.threads_init()
@@ -100,7 +88,6 @@ def main():
     main_window.run()
     gtk.threads_leave()
 
     main_window.run()
     gtk.threads_leave()
 
-
 if __name__ == '__main__':
     main()
 
 if __name__ == '__main__':
     main()