Advertisement
Guest User

Untitled

a guest
Mar 12th, 2011
461
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 2.95 KB | None | 0 0
  1. #!/usr/bin/env python3
  2. #-*- coding:utf-8 -*-
  3.  
  4. '''
  5.        Autor: Joao Bernardo Vianna
  6.        Data: 12/03/2011
  7. '''
  8.  
  9. from tkinter import Tk, Frame, Button, Label, Entry, LEFT, TOP, RIGHT
  10. import serial
  11.  
  12.  
  13. MAX_NUM = 255
  14. INCREMENTO = 10
  15.  
  16. porta_serial = '/dev/ttyUSB0'
  17. tempo = 5
  18. taxa = 115200
  19.  
  20.  
  21.  
  22. class Programa:
  23.  
  24.     def __init__(self, serial_dic):
  25.         self.janela = Tk()
  26.         self.janela.title('Controle de Volume')
  27.         self.janela['padx'] = 60
  28.         self.janela['pady'] = 20
  29.  
  30.         self.serial_dic = serial_dic
  31.         try:
  32.             self.serial = serial.Serial(**serial_dic)
  33.         except serial.SerialException:
  34.             self.serial = None
  35.  
  36.         self.fr = Frame(self.janela)
  37.         self.fr.pack()
  38.    
  39.         if self.serial:
  40.             txt = 'Conectado a '
  41.         else:
  42.             txt = 'Impossivel conectar a '
  43.  
  44.         txt += self.serial_dic['port']
  45.         Label(self.fr, text=txt+'\n').pack(side=TOP)
  46.  
  47.         Label(self.fr, text='Volume\n\n').pack(side=TOP)
  48.  
  49.         fr_caixa = Frame(self.fr)
  50.         fr_caixa.pack(side=TOP)
  51.         self.caixa = Entry(fr_caixa, width=5)
  52.         self.caixa.insert(0, '0')
  53.         self.caixa.pack(side=LEFT)
  54.         Label(fr_caixa, text=' ', font='sans').pack(side=LEFT)
  55.         Button(fr_caixa, text='Enviar', command=self.enviar).pack(side=RIGHT)
  56.    
  57.         fr_btn = Frame(self.fr)
  58.         fr_btn.pack(side=TOP)
  59.         Label(fr_btn, text='\n').pack(side=TOP)
  60.         Button(fr_btn, text='+', command=self.aumentar, font='sans').pack(side=LEFT)
  61.         Button(fr_btn, text='-', command=self.diminuir, font='sans').pack(side=LEFT)
  62.  
  63.  
  64.     def verifica_num(self, valor):
  65.         try:
  66.             num = int(self.caixa.get())
  67.             if num < 0:
  68.                 raise ValueError
  69.             return num
  70.         except ValueError:
  71.             return -1
  72.  
  73.  
  74.     def enviar(self):
  75.         num = self.verifica_num(self.caixa.get())
  76.         if num > MAX_NUM:
  77.             num = MAX_NUM
  78.         if num < 0:
  79.             num = 0
  80.  
  81.         self.caixa.delete(0, 1000)
  82.         self.caixa.insert(0, str(num))
  83.         self.envia_serial(num)
  84.  
  85.  
  86.     def aumentar(self, direcao=True):
  87.         num = self.verifica_num(self.caixa.get())
  88.  
  89.         if num >= 0:
  90.             if direcao:
  91.                 num += INCREMENTO
  92.             else:
  93.                 num -= INCREMENTO
  94.         else:
  95.             num = 0
  96.  
  97.         if num > MAX_NUM:
  98.             num = MAX_NUM
  99.         if num < 0:
  100.             num = 0
  101.  
  102.         self.caixa.delete(0, 1000)
  103.         self.caixa.insert(0, str(num))
  104.  
  105.         self.envia_serial(num)
  106.  
  107.     def diminuir(self):
  108.         self.aumentar(False)
  109.  
  110.  
  111.     def envia_serial(self, valor):
  112.         if self.serial:
  113.             self.serial.write(bytes(str(valor), 'utf8'))
  114.  
  115.     def executar(self):
  116.         self.janela.mainloop()
  117.  
  118.  
  119.  
  120. if __name__ == '__main__':
  121.     s = {'port': porta_serial, 'baudrate': taxa, 'timeout': tempo}
  122.     Programa(s).executar()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement