# $Id: pyPotentiometer.py, # 2003/08/15 # 2003/10/23 # Author: Ph Dalet (philippe.dalet@voila.fr) # """ __version__ = "$Revision: 1.0 $" __date__ = "$Date: 2004/08/18 16:53:26 $" """ from PythonCard import dialog, graphic, log, model import os import wx from PythonCard.components import button from PythonCard.components import staticline from PythonCard.components import statictext from PythonCard.components import image from PythonCard.components import combobox from PythonCard.components import textfield from PythonCard.components import bitmapcanvas from PythonCard.components import textarea from PythonCard.components import gauge from PythonCard.components import imagebutton from PythonCard.components import slider from parallel import * VER="1.5" class MyBackground(model.Background): def on_initialize(self,event): self.PORT=Parallel(LPT1) self.io=0 self.PORT.setData(self.io) self.R1=1000 self.components.R1.SetValue("1000") self.Data=128 self.components.Data.SetValue( str(self.Data) ) self.Amplification=1+(100000*self.Data)/(self.R1*255) self.components.Amplification.SetValue( str(self.Amplification) ) def on_Slider1_select(self, event): self.components.Data.text = str(event.target.value) self.Data=event.target.value self.Amplification= 1+ (100000*self.Data*1.0)/(self.R1*255) self.components.Amplification.SetValue( str(self.Amplification) ) def on_Quit_mouseClick(self, event): self.Close() def Send(self,k): #data0 sda #data1 sck #data2 rst self.io=4 # rst=1 self.PORT.setData(self.io) self.Send1(0) #stack select bit self.Send8(0) #pot1 self.Send8(k) #pot0 self.io=0 # rst=0 self.PORT.setData(self.io) def Clock(self): self.io=self.io|0x02 self.PORT.setData(self.io) self.io=self.io&0xFD self.PORT.setData(self.io) def Send8(self,k): #msb -> lsb mask=[128,64,32,16,8,4,2,1] for i in range(0, 8, 1): if (k & mask[i]): #print '1', self.io=self.io|0x01 else: #print '0', self.io=self.io&0xFE self.PORT.setData(self.io) self.Clock() #print ' ' def Send1(self, k): if (k & 0x01): self.io=self.io|0x01 else: self.io=self.io&0xFE self.PORT.setData(self.io) self.Clock() def on_Send_mouseClick(self, event): self.Send(self.Data) max=2 dlg = wx.ProgressDialog("Downloading","LPT1 -> DS1267", max, self, wx.PD_AUTO_HIDE ) count = 0 while count < max: count = count + 1 wx.Sleep(1) dlg.Update(count) dlg.Destroy() def on_menuFileExit_select(self, event): self.Close() def on_menuAbout_select(self, event): msg=""" pyDS1267 - V%s - DS1267 numerical potentiometer (MAXIM-DALLAS) Pot=100K A=1+ k*(100K/R1) Non-Inverting Amplifier with k in [0...1] and R1=4.7K data0-sda data1-sck data2 rst gnd pin 2 pin 3 pin 4 pin 18-25 Dalet Philippe Laboratoire STS Electronique Lyp Champollion avenue pezet 46100 FIGEAC FRANCE philippe.dalet@voila.fr """ %(VER) dialog.scrolledMessageDialog(self, msg, "About") if __name__ == '__main__': app = model.Application(MyBackground) app.MainLoop()