[PyQt] QAbstractSocket usage problem, what am I doing wrong?

Jens Jorgensen jbj1 at ultraemail.net
Sun May 17 09:17:38 BST 2009


Hello,

I have a small application that provides some glue between Skype and an
external usb "phone" device. I originally wrote this application under
gtk and am porting it to kde/qt. Everything worked fine under gtk so
there's no problem with the non-framework-related logic. The phone has
buttons on it that I read from a hidraw device (character device). It
looks like the right way to get read events for this is to use
QAbstractSocket:

    def open_phone_hid(self, path) :
        if path == tjphone_hal_udi :
            iobj =
dbus.Interface(system_bus.get_object("org.freedesktop.Hal",
tjphone_hal_udi), 'org.freedesktop.Hal.Device')
            self.fd =
os.open(str(iobj.GetProperty('linux.device_file')), os.O_RDONLY)
            self.src_id =
QtNetwork.QAbstractSocket(QtNetwork.QAbstractSocket.UnknownSocketType,
None)#gobject.io_add_watch(self.fd, gobject.IO_IN, self.tj_phone_input)
            self.src_id.setSocketDescriptor(self.fd)
            self.connect(self.src_id, QtCore.SIGNAL('readyRead()'),
self.tj_phone_input)
            self.numbers = ''
            self.printmsg('TJPhone on')
            return True

So the above code executes fine, but when I press a button on the phone
the console I am running the script from fills with this message,
repeating endlessly:

QNativeSocketEngine::hasPendingDatagrams() was called by a socket other
than QAbstractSocket::UdpSocket

My function tj_phone_input is never called. Is there perhaps a problem
in the QAbstractSocket code itself or am I doing something wrong?

-- 
Jens B. Jorgensen
jbj1 at ultraemail.net



More information about the PyQt mailing list