On 07/06/2013 11:17, lionelgreenstr...@gmail.com wrote:
Sorry for my quote,
but do you have any suggestion?

Il giorno martedì 4 giugno 2013 23:25:21 UTC+2, lionelgr...@gmail.com ha 
scritto:
Hi,

i'm programming in python for the first time: i want to create a serial port 
reader. I'm using python3.3 and pyQT4; i'm using also pyserial.

Below a snippet of the code:


class CReader(QThread):
    def start(self, ser, priority = QThread.InheritPriority):
        self.ser = ser
        QThread.start(self, priority)
        self._isRunning = True
        self.numData=0;

    def run(self):
        print("Enter Creader")
        while True:
            if self._isRunning:
                try:
                    data = self.ser.read(self.numData)
                    n = self.ser.inWaiting()
                    if n:
                        data = self.ser.read(n)
                        self.emit(SIGNAL("newData(QString)"), 
data.decode('cp1252', 'ignore'))
                        self.ser.flushInput()
                except:
                    pass
            else:
                return

    def stop(self):
        self._isRunning = False
        self.wait()

This code seems work well, but i have problems in this test case:

+baud rate:19200
+8/n/1
+data transmitted: 1 byte every 5ms

After 30seconds (more or less) the program crashes: seems a buffer problem, but 
i'm not really sure.

What's wrong?

Using a "bare except" like this:

try:
    ...
except:
    ...

is virtually always a bad idea. The only time I'd ever do that would
be, say, to catch something, print a message, and then re-raise it:

try:
    ...
except:
    print("Something went wrong!")
    raise

Even then, catching Exception would be better than a bare except. A
bare except will catch _every_ exception, including NameError (which
would mean that it can't find a name, possibly due to a spelling error).

A bare except with pass, like you have, is _never_ a good idea. Python
might be trying to complain about a problem, but you're preventing it
from doing so.

Try removing the try...except: pass and let Python tell you if it has a
problem.
--
http://mail.python.org/mailman/listinfo/python-list

Reply via email to