Esempio n. 1
0
 def __handleReceivedData(self, buff, info):
     self.__bytesReceived += len(buff)
     totalCount = 0
     if self.getIsSynchronous():
         arg = None
         with self.__syncBase.getSync():
             self.__syncBase.appendData(buff, 0, len(buff))
             #Search end of packet if it is given.
             if self.eop:
                 tmp = _GXSynchronousMediaBase.toBytes(self.eop)
                 totalCount = _GXSynchronousMediaBase.indexOf(
                     buff, tmp, 0, len(buff))
                 if totalCount != -1:
                     if self.trace == TraceLevel.VERBOSE:
                         arg = TraceEventArgs(TraceTypes.RECEIVED, buff, 0,
                                              totalCount + 1)
                     self.__syncBase.setReceived()
         if arg:
             self.__notifyTrace(arg)
     else:
         self.__syncBase.resetReceivedSize()
         if self.trace == TraceLevel.VERBOSE:
             self.__notifyTrace(TraceEventArgs(TraceTypes.RECEIVED, buff))
         e = ReceiveEventArgs(buff, info)
         self.__notifyReceived(e)
Esempio n. 2
0
    def __notifyClientConnected(self, e):
        """Notify that client has connected."""
        for it in self.__netListeners:
            it.onClientConnected(self, e)

        if int(self.trace) >= int(TraceLevel.INFO):
            for it in self.__listeners:
                it.onTrace(
                    self, TraceEventArgs(TraceTypes.INFO, "Client connected."))
Esempio n. 3
0
    def send(self, data, receiver=None):
        if not self.__h:
            raise Exception("Serial port is not open.")
        if self.__trace == TraceLevel.VERBOSE:
            self.__notifyTrace(TraceEventArgs(TraceTypes.SENT, data))

        #Reset last position if end of packet is used.
        with self.__syncBase.getSync():
            self.__syncBase.resetLastPosition()

        if not isinstance(data, bytes):
            data = bytes(_GXSynchronousMediaBase.toBytes(data))
        self.__h.write(data)
        self.__bytesSent += len(data)
Esempio n. 4
0
    def send(self, data, receiver=None):
        if not self.__socket:
            raise Exception("Invalid connection.")

        if self.__trace == TraceLevel.VERBOSE:
            self.__notifyTrace(TraceEventArgs(TraceTypes.SENT, data))

        #Reset last position if end of packet is used.
        with self.__syncBase.getSync():
            self.__syncBase.resetLastPosition()

        if not isinstance(data, bytes):
            data = bytes(_GXSynchronousMediaBase.toBytes(data))

        if isinstance(receiver, _NetReceiveEventArgs):
            receiver.socket.sendall(data)
        else:
            self.__socket.sendall(data)
        self.__bytesSent += len(data)
Esempio n. 5
0
    def open(self):
        self.close()
        if not self.__portName:
            raise Exception("Serial port is not selected.")

        with self.__syncBase.getSync():
            self.__syncBase.resetLastPosition()

        self.__notifyMediaStateChange(MediaState.OPENING)
        if self.__trace & TraceLevel.INFO != 0:
            eopString = str(self.eop)
            self.__notifyTrace(TraceEventArgs(TraceTypes.INFO,\
                "Settings: Port: " + self.__portName + " Baud Rate: " + str(self.baudRate) + \
                " Data Bits: " + str(int(self.dataBits)) + " Parity: " + str(self.parity) + \
               " Stop Bits: " + str(self.stopBits) + " Eop:" + eopString))

        self.__h.open(self.__portName)
        self.__closing.clear()
        self.rtsEnable = True
        self.dtrEnable = True
        self.__notifyMediaStateChange(MediaState.OPEN)
        self.__receiver = threading.Thread(target=self.__readThread)
        self.__receiver.start()
Esempio n. 6
0
 def __notifyMediaStateChange(self, state):
     ###Notify client from media state change.
     for it in self.__listeners:
         if self.__trace & TraceLevel.ERROR != 0:
             it.onTrace(self, TraceEventArgs(TraceTypes.INFO, state))
         it.onMediaStateChange(self, MediaStateEventArgs(state))
Esempio n. 7
0
 def __notifyError(self, ex):
     """Notify clients from error occurred."""
     for it in self.__listeners:
         it.onError(self, ex)
         if self.__trace & TraceLevel.ERROR != 0:
             it.onTrace(self, TraceEventArgs(TraceTypes.ERROR, ex))