connectors/LPC/LPCObject.py
author Lolitech
Thu, 03 Jun 2010 17:21:40 +0200
changeset 547 5748d695beee
parent 545 627e5c636a4f
child 556 1ad4e7f1e89e
permissions -rwxr-xr-x
Reorganization of threading for command line and wx main loops. Commands are now cleanly serialized through calls to wx.CallAfter. wx mainloop now runs on main thread.
448
8ef035de86de Some rough copy'n'paste to pave path for an LPC connector
ed
parents:
diff changeset
     1
#!/usr/bin/env python
8ef035de86de Some rough copy'n'paste to pave path for an LPC connector
ed
parents:
diff changeset
     2
# -*- coding: utf-8 -*-
8ef035de86de Some rough copy'n'paste to pave path for an LPC connector
ed
parents:
diff changeset
     3
8ef035de86de Some rough copy'n'paste to pave path for an LPC connector
ed
parents:
diff changeset
     4
#This file is part of Beremiz, a Integrated Development Environment for
8ef035de86de Some rough copy'n'paste to pave path for an LPC connector
ed
parents:
diff changeset
     5
#programming IEC 61131-3 automates supporting plcopen standard and CanFestival. 
8ef035de86de Some rough copy'n'paste to pave path for an LPC connector
ed
parents:
diff changeset
     6
#
8ef035de86de Some rough copy'n'paste to pave path for an LPC connector
ed
parents:
diff changeset
     7
#Copyright (C) 2007: Edouard TISSERANT and Laurent BESSARD
8ef035de86de Some rough copy'n'paste to pave path for an LPC connector
ed
parents:
diff changeset
     8
#
8ef035de86de Some rough copy'n'paste to pave path for an LPC connector
ed
parents:
diff changeset
     9
#See COPYING file for copyrights details.
8ef035de86de Some rough copy'n'paste to pave path for an LPC connector
ed
parents:
diff changeset
    10
#
8ef035de86de Some rough copy'n'paste to pave path for an LPC connector
ed
parents:
diff changeset
    11
#This library is free software; you can redistribute it and/or
8ef035de86de Some rough copy'n'paste to pave path for an LPC connector
ed
parents:
diff changeset
    12
#modify it under the terms of the GNU General Public
8ef035de86de Some rough copy'n'paste to pave path for an LPC connector
ed
parents:
diff changeset
    13
#License as published by the Free Software Foundation; either
8ef035de86de Some rough copy'n'paste to pave path for an LPC connector
ed
parents:
diff changeset
    14
#version 2.1 of the License, or (at your option) any later version.
8ef035de86de Some rough copy'n'paste to pave path for an LPC connector
ed
parents:
diff changeset
    15
#
8ef035de86de Some rough copy'n'paste to pave path for an LPC connector
ed
parents:
diff changeset
    16
#This library is distributed in the hope that it will be useful,
8ef035de86de Some rough copy'n'paste to pave path for an LPC connector
ed
parents:
diff changeset
    17
#but WITHOUT ANY WARRANTY; without even the implied warranty of
8ef035de86de Some rough copy'n'paste to pave path for an LPC connector
ed
parents:
diff changeset
    18
#MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
8ef035de86de Some rough copy'n'paste to pave path for an LPC connector
ed
parents:
diff changeset
    19
#General Public License for more details.
8ef035de86de Some rough copy'n'paste to pave path for an LPC connector
ed
parents:
diff changeset
    20
#
8ef035de86de Some rough copy'n'paste to pave path for an LPC connector
ed
parents:
diff changeset
    21
#You should have received a copy of the GNU General Public
8ef035de86de Some rough copy'n'paste to pave path for an LPC connector
ed
parents:
diff changeset
    22
#License along with this library; if not, write to the Free Software
8ef035de86de Some rough copy'n'paste to pave path for an LPC connector
ed
parents:
diff changeset
    23
#Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
8ef035de86de Some rough copy'n'paste to pave path for an LPC connector
ed
parents:
diff changeset
    24
453
923d036dfa90 LPC connector enhancements
edouard
parents: 448
diff changeset
    25
from LPCProto import *
448
8ef035de86de Some rough copy'n'paste to pave path for an LPC connector
ed
parents:
diff changeset
    26
8ef035de86de Some rough copy'n'paste to pave path for an LPC connector
ed
parents:
diff changeset
    27
class LPCObject():
545
627e5c636a4f Refactored LPC connector for new bootloader and application modes
Lolitech
parents: 525
diff changeset
    28
    def __init__(self, pluginsroot, comportstr):
508
73ecb803d8af Revamped LPC connector and toolchain
edouard
parents: 502
diff changeset
    29
        self.PLCStatus = "Disconnected"
448
8ef035de86de Some rough copy'n'paste to pave path for an LPC connector
ed
parents:
diff changeset
    30
        self.pluginsroot = pluginsroot
8ef035de86de Some rough copy'n'paste to pave path for an LPC connector
ed
parents:
diff changeset
    31
        self.PLCprint = pluginsroot.logger.write
453
923d036dfa90 LPC connector enhancements
edouard
parents: 448
diff changeset
    32
        self._Idxs = []
545
627e5c636a4f Refactored LPC connector for new bootloader and application modes
Lolitech
parents: 525
diff changeset
    33
        comport = int(comportstr[3:comportstr.index(':')]) - 1
627e5c636a4f Refactored LPC connector for new bootloader and application modes
Lolitech
parents: 525
diff changeset
    34
        try:
627e5c636a4f Refactored LPC connector for new bootloader and application modes
Lolitech
parents: 525
diff changeset
    35
            self.connect(comportstr)
627e5c636a4f Refactored LPC connector for new bootloader and application modes
Lolitech
parents: 525
diff changeset
    36
        except Exception,e:
627e5c636a4f Refactored LPC connector for new bootloader and application modes
Lolitech
parents: 525
diff changeset
    37
            self.pluginsroot.logger.write_error(str(e)+"\n")
627e5c636a4f Refactored LPC connector for new bootloader and application modes
Lolitech
parents: 525
diff changeset
    38
            self.SerialConnection = None
627e5c636a4f Refactored LPC connector for new bootloader and application modes
Lolitech
parents: 525
diff changeset
    39
            self.PLCStatus = "Disconnected"
508
73ecb803d8af Revamped LPC connector and toolchain
edouard
parents: 502
diff changeset
    40
73ecb803d8af Revamped LPC connector and toolchain
edouard
parents: 502
diff changeset
    41
    def HandleSerialTransaction(self, transaction):
73ecb803d8af Revamped LPC connector and toolchain
edouard
parents: 502
diff changeset
    42
        if self.SerialConnection is not None:
73ecb803d8af Revamped LPC connector and toolchain
edouard
parents: 502
diff changeset
    43
            try:
73ecb803d8af Revamped LPC connector and toolchain
edouard
parents: 502
diff changeset
    44
                self.PLCStatus, res = self.SerialConnection.HandleTransaction(transaction)
73ecb803d8af Revamped LPC connector and toolchain
edouard
parents: 502
diff changeset
    45
                return res
545
627e5c636a4f Refactored LPC connector for new bootloader and application modes
Lolitech
parents: 525
diff changeset
    46
            except LPCProtoError,e:
508
73ecb803d8af Revamped LPC connector and toolchain
edouard
parents: 502
diff changeset
    47
                self.pluginsroot.logger.write_error(str(e)+"\n")
73ecb803d8af Revamped LPC connector and toolchain
edouard
parents: 502
diff changeset
    48
                self.SerialConnection = None
73ecb803d8af Revamped LPC connector and toolchain
edouard
parents: 502
diff changeset
    49
                self.PLCStatus = "Disconnected"
73ecb803d8af Revamped LPC connector and toolchain
edouard
parents: 502
diff changeset
    50
                return None
545
627e5c636a4f Refactored LPC connector for new bootloader and application modes
Lolitech
parents: 525
diff changeset
    51
        
448
8ef035de86de Some rough copy'n'paste to pave path for an LPC connector
ed
parents:
diff changeset
    52
    def StartPLC(self, debug=False):
545
627e5c636a4f Refactored LPC connector for new bootloader and application modes
Lolitech
parents: 525
diff changeset
    53
        raise LPCProtoError("Not implemented")
448
8ef035de86de Some rough copy'n'paste to pave path for an LPC connector
ed
parents:
diff changeset
    54
            
8ef035de86de Some rough copy'n'paste to pave path for an LPC connector
ed
parents:
diff changeset
    55
    def StopPLC(self):
545
627e5c636a4f Refactored LPC connector for new bootloader and application modes
Lolitech
parents: 525
diff changeset
    56
        raise LPCProtoError("Not implemented")
448
8ef035de86de Some rough copy'n'paste to pave path for an LPC connector
ed
parents:
diff changeset
    57
8ef035de86de Some rough copy'n'paste to pave path for an LPC connector
ed
parents:
diff changeset
    58
    def GetPLCstatus(self):
545
627e5c636a4f Refactored LPC connector for new bootloader and application modes
Lolitech
parents: 525
diff changeset
    59
        raise LPCProtoError("Not implemented")
448
8ef035de86de Some rough copy'n'paste to pave path for an LPC connector
ed
parents:
diff changeset
    60
    
8ef035de86de Some rough copy'n'paste to pave path for an LPC connector
ed
parents:
diff changeset
    61
    def NewPLC(self, md5sum, data, extrafiles):
545
627e5c636a4f Refactored LPC connector for new bootloader and application modes
Lolitech
parents: 525
diff changeset
    62
        raise LPCProtoError("Not implemented")
448
8ef035de86de Some rough copy'n'paste to pave path for an LPC connector
ed
parents:
diff changeset
    63
8ef035de86de Some rough copy'n'paste to pave path for an LPC connector
ed
parents:
diff changeset
    64
    def MatchMD5(self, MD5):
545
627e5c636a4f Refactored LPC connector for new bootloader and application modes
Lolitech
parents: 525
diff changeset
    65
        raise LPCProtoError("Not implemented")
502
5343ae43f6d0 LPC connector - one step further
edouard
parents: 453
diff changeset
    66
5343ae43f6d0 LPC connector - one step further
edouard
parents: 453
diff changeset
    67
    def SetTraceVariablesList(self, idxs):
545
627e5c636a4f Refactored LPC connector for new bootloader and application modes
Lolitech
parents: 525
diff changeset
    68
        raise LPCProtoError("Not implemented")
502
5343ae43f6d0 LPC connector - one step further
edouard
parents: 453
diff changeset
    69
448
8ef035de86de Some rough copy'n'paste to pave path for an LPC connector
ed
parents:
diff changeset
    70
    def GetTraceVariables(self):
545
627e5c636a4f Refactored LPC connector for new bootloader and application modes
Lolitech
parents: 525
diff changeset
    71
        raise LPCProtoError("Not implemented")
448
8ef035de86de Some rough copy'n'paste to pave path for an LPC connector
ed
parents:
diff changeset
    72