Ok, thank you for your hint!
I’ve solved in this way, but i will use a list of veld.variable to check what to do
import wx
import serial
import matplotlib
from matplotlib.figure import Figure
from matplotlib.backends.backend_wxagg import FigureCanvasWxAgg as FigureCanvas
from matplotlib.backends.backend_wxagg import NavigationToolbar2WxAgg as NavigationToolbar
from numpy import arange, sin, pi
porta_1 = ‘/dev/tty.usbmodem1411’
porta_2 = ‘/dev/tty.usbmodem1421’
baudrate = 9600
class UnderWindow(wx.Panel):
def init(self, parent, size):
wx.Panel.init(self, parent, size = size)
class MainWindow(wx.Frame):
def init(self, parent, size, serial):
wx.Frame.init(self, parent, size=size)
if serial:
self.x, self.y=[],[]
self.x.append(0.0)
self.y.append(0.0)
self.byte = 1
sizer = wx.BoxSizer(wx.VERTICAL)
sizerGrid = wx.GridSizer(rows=3, cols=2, hgap=5, vgap=5) #insert grid sizer
startButton = wx.Button(self, -1, ‘Start’)
startButton.Bind(wx.EVT_BUTTON, self.onStart)
stopButton = wx.Button(self, -1, ‘Stop’)
stopButton.Bind(wx.EVT_BUTTON,self.onStop)
openButton=wx.Button(self, -1, ‘Open’)
openButton.Bind(wx.EVT_BUTTON,self.onOpen)
closeButton=wx.Button(self, -1, ‘Close’)
closeButton.Bind(wx.EVT_BUTTON,self.closeSerial)
self.innerpanel = UnderWindow(self, (800,400))
sizerGrid.Add(openButton, 0, wx.EXPAND)
sizerGrid.Add(closeButton, 0, wx.EXPAND)
sizerGrid.Add(startButton, 0, wx.EXPAND)
sizerGrid.Add(stopButton, 0, wx.EXPAND)
sizer.Add(sizerGrid,0, wx.EXPAND)
sizer.Add(self.innerpanel,0, wx.EXPAND)
self.SetSizer(sizer)
sizer.Fit(self)
figura = matplotlib.figure.Figure(figsize=(10,5))
self.grafico_1 = figura.add_subplot(111)
self.grafico_1.set_title(‘Prova’, size=10)
self.grafico_1.set_xlabel(‘x’, size=8)
self.grafico_1.set_xscale(‘linear’) #log, symlog
self.grafico_1.set_ylabel(‘y’, size=8)
self.canvas = FigureCanvas (self.innerpanel, -1, figura)
toolbar = NavigationToolbar(self.canvas)
toolbar.Hide()
self.timer = wx.Timer (self.innerpanel, 100)
wx.EVT_TIMER(self.innerpanel, 100, self.onTimer)
def onStart(self, event):
self.timer.Start(100) # x100 milliseconds
self.ser.write(‘1’)
def onStop(self, event):
self.timer.Stop()
self.ser.write(‘0’)
def onOpen(self,event):
self.openSerial()
def closeSerial(self,event):
self.timer.Stop()
self.ser.close()
def onTimer(self, event):
self.num=’’
s = self.ser.read(self.byte)
if s == ‘s’:
s = self.ser.read(self.byte)
while s != ‘*’:
self.num += s
s = self.ser.read(self.byte)
print self.num
self.num = float(self.num)
self.x.append(self.num)
self.y.append(sin(pi*self.num))
self.grafico_1.clear()
self.grafico_1.plot(self.x,self.y)
self.canvas.draw()
def openSerial(self):
self.ser = serial.Serial(porta_1, baudrate, timeout = 0.05)
#pulisce la seriale dei primi dati che possono essere ‘sporchi’
s = self.ser.read(self.byte)
s = self.ser.read(self.byte)
s = self.ser.read(self.byte)
s = self.ser.read(self.byte)
app = wx.App()
finestra = MainWindow(None, (300,300), True)
finestra.Show()
app.MainLoop()
``