Advertisement
KsaneK

lcd_control.py

Dec 13th, 2014
251
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 4.21 KB | None | 0 0
  1. #-*- coding:utf-8 -*-
  2. from socket import socket, AF_INET, SOCK_STREAM
  3. import sys
  4. from PyQt4 import QtCore, QtGui
  5. from functools import partial
  6. from lcd_control_ui import Ui_LCDGUI
  7.  
  8.  
  9. class LCDControlForm(QtGui.QMainWindow):
  10.     def __init__(self, parent=None):
  11.         QtGui.QWidget.__init__(self, parent)
  12.         self.ui = Ui_LCDGUI()
  13.         self.ui.setupUi(self)
  14.         self.lcd_sock = socket(AF_INET, SOCK_STREAM)
  15.         self.statusBar().setSizeGripEnabled(False)
  16.         self.setFixedSize(609, 386)
  17.         QtCore.QObject.connect(self.ui.btn_connect,QtCore.SIGNAL("clicked()"), self.connect)
  18.         QtCore.QObject.connect(self.ui.scroll_left,QtCore.SIGNAL("clicked()"), partial(self.scroll,d="left"))
  19.         QtCore.QObject.connect(self.ui.scroll_right,QtCore.SIGNAL("clicked()"), partial(self.scroll,d="right"))
  20.         QtCore.QObject.connect(self.ui.move_left,QtCore.SIGNAL("clicked()"), partial(self.move,d="left"))
  21.         QtCore.QObject.connect(self.ui.move_right,QtCore.SIGNAL("clicked()"), partial(self.move,d="right"))
  22.         QtCore.QObject.connect(self.ui.btn_home,QtCore.SIGNAL("clicked()"), partial(self.command,cmd="home"))
  23.         QtCore.QObject.connect(self.ui.btn_cls,QtCore.SIGNAL("clicked()"), partial(self.command,cmd="cls"))
  24.         QtCore.QObject.connect(self.ui.btn_hide,QtCore.SIGNAL("clicked()"), partial(self.command,cmd="hide"))
  25.         QtCore.QObject.connect(self.ui.btn_restore,QtCore.SIGNAL("clicked()"), partial(self.command,cmd="restore"))
  26.         QtCore.QObject.connect(self.ui.cursor_blink,QtCore.SIGNAL("clicked()"), partial(self.cursor,m="blink"))
  27.         QtCore.QObject.connect(self.ui.cursor_underline,QtCore.SIGNAL("clicked()"), partial(self.cursor,m="underline"))
  28.         QtCore.QObject.connect(self.ui.cursor_hide,QtCore.SIGNAL("clicked()"), partial(self.cursor,m="hide"))
  29.         QtCore.QObject.connect(self.ui.bin_push,QtCore.SIGNAL("clicked()"), self.bin)
  30.         QtCore.QObject.connect(self.ui.msg_send,QtCore.SIGNAL("clicked()"), self.msg)
  31.         QtCore.QObject.connect(self.ui.setpos_go,QtCore.SIGNAL("clicked()"), self.setpos)
  32.  
  33.         ### Custom ###
  34.         for i in range(8):
  35.             for j in range(5):
  36.                 QtCore.QObject.connect(getattr(self.ui, "c%d_%d" % (i+1,j+1)),QtCore.SIGNAL("clicked()"), partial(self.custom_project,p=[i,j]))
  37.         self.l = []
  38.         for i in range(8):
  39.             self.l.append([0,0,0,0,0])
  40.         QtCore.QObject.connect(self.ui.custom_send,QtCore.SIGNAL("clicked()"), partial(self.custom,action="send"))
  41.         QtCore.QObject.connect(self.ui.custom_save,QtCore.SIGNAL("clicked()"), partial(self.custom,action="save"))
  42.         ##############
  43.     def custom_project(self, p):
  44.         self.l[p[0]][p[1]] = 1 if self.l[p[0]][p[1]] == 0 else 0
  45.         setcolor = "black" if self.l[p[0]][p[1]] else "white"
  46.         getattr(self.ui, "c%d_%d" % (p[0]+1, p[1]+1)).setStyleSheet("background-color: %s" % setcolor)
  47.     def custom(self, action):
  48.         bits = []
  49.         for i in self.l:
  50.             v = 0
  51.             for j, x in enumerate(i):
  52.                 v+=x*16/(2**j)
  53.             bits.append(str(int(v)))
  54.         print(bits)
  55.         if action == "save":
  56.             self.send(b"custom "+";".join(bits).encode("utf-8")+b" "+self.ui.custom_position.text().encode("utf-8"))
  57.         elif action == "send":
  58.             self.send(b"custom "+self.ui.custom_position.text().encode("utf-8"))
  59.     def connect(self):
  60.         try:
  61.             self.lcd_sock.close()
  62.             self.lcd_sock = socket(AF_INET, SOCK_STREAM)
  63.             self.lcd_sock.connect((self.ui.srv_ip.text(), int(self.ui.srv_port.text())))
  64.             self.statusBar().showMessage("Połączono z serwerem")
  65.         except:
  66.             self.statusBar().showMessage("Nie udało się połączyć do serwera")
  67.     def scroll(self, d):
  68.         self.send(b"scroll " + d.encode("utf-8"))
  69.     def move(self, d):
  70.         self.send(b"move " + d.encode("utf-8"))
  71.     def command(self, cmd):
  72.         self.send(cmd.encode("utf-8"))
  73.     def setpos(self):
  74.         self.send(b"setpos "+self.ui.setpos_y.text().encode("utf-8")+b" "+self.ui.setpos_x.text().encode("utf-8"))
  75.     def cursor(self, m):
  76.         self.send(b"cursor "+m.encode("utf-8"))
  77.     def msg(self):
  78.         self.send(b"msg "+self.ui.msg_message.text().encode("utf-8"))
  79.     def bin(self):
  80.         char_mode = b" t" if self.ui.bin_char_mode.isChecked() else b" f"
  81.         self.send(b"bin "+self.ui.bin_bits.text().encode("utf-8") + char_mode)
  82.     def send(self, msg):
  83.         self.lcd_sock.send(msg)
  84.         print(self.lcd_sock.recv(8192))
  85.  
  86. if __name__ == "__main__":
  87.     app = QtGui.QApplication(sys.argv)
  88.     lcdform = LCDControlForm()
  89.     lcdform.show()
  90.     sys.exit(app.exec_())
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement