In my GUI, the user enters two values: cellNumber(Integer) and 
SerialNumber(String)

I have the following piece of code in my view/controller:

####################The following function is called after the user enters the 
cellnumber and serial number##############
def ListenForDetails(status):
        cellNumber = status[0]
        SerialNumber = status[1]
        ModelInfo().CellList[cellNumber].receiveSerialNumber(SerialNumber)

------------------In my controller thread-----------------
class Controller(Thread):
        def __init__(self):
                Thread.__init__(self)
                self.start()
        
        def run(self):
                global SynchronizationVariable
                while SynchronizationVariable != 1:
                        time.sleep(0.01)
                while 1:
                        StateChanged = False
                        for cells in ModelInfo().CellList:
                                rc = cells.PollCells()
                                if rc == 0:
                                        StateChanged = True
                        if StateChanged:
                                ModelInfo().save()
                        time.sleep(1)

-------------------------------In my model.py 
script-------------------------------------

class CellInfo(): #This class encapsulates all the information present in a cell
        def __init__(self,cellNo):
                self.SerialNo = ""
                self.cellNo = cellNo
        
        def receiveSerialNumber(self, SerialNumber):
                self.SerialNo = SerialNumber

        def PollCells(self):
                RC = self.StateMachine[self.CurrentState](self)
                return RC

        ...all state machine functions here...


"""Model Info below"""
class ModelInfo(): #This class creates a list of cells.
        def __init__(self):
                print("Setting up a list of cells to iterate on")
                self.CellList = [] #List of all the cell Objects
                for index in xrange(0,24):
                        print(self.CellList)
                        self.CellList.append(CellInfo(index))
                
        def save(self):
                with open("RestoreInfo.p", "wb") as f:
                        pickle.dump(self,f)

Model = ModelInfo() #Constructs an empty model

"""IN MAIN (In the controller script)"""
if __name__ == '__main__':
    if os.path.isfile( "RestoreInfo.p" ):
        with open("RestoreInfo.p", "rb") as f:
            model = pickle.load( f );
    else:
        model = model.ModelInfo();


The serial number field always remains empty even though I enter from the GUI 
and the receiveSerialNumber function is called and I explicitly initialize it 
to the variable in the model.
I'm trying to save the state of the program so that next time I open the 
application it resumes from where it left off. The problem is when I restart 
the application, the serial number is empty. What am I doing wrong here? 
Whenever I get a change in state (the RC value), I pickle and save to a file 
(restoreinfo.p). When I restart the application, the serial number is no longer 
there even though I enter it. Could you please let me know what is going wrong? 
Thank you.
-- 
https://mail.python.org/mailman/listinfo/python-list

Reply via email to