Mein Problem ist folgender:
Ich habe ein Bluetooth Client(der Client rennt auf dem N95) implementiert der Key Events an den Server schickt (der Server rennt auf dem PC).Und alles funktioniert wunderbar bis ich nicht 2 Buttons gleichzeitig drücke.
Error: 13,Permission Denied (ich bekomme den Error auf dem Handy) Ich habe versucht eine Print-Ausgabe der Events zu machen (statt dem print
>>) und das hat auch funktioniert aber wenn ich das print >>(senden über
socket) benutzen will dann bekomme ich den Error (also glaube ich das es an dem sendevorgang liegt)
Das ist mein Python for s60 code (Client)
Code: Alles auswählen
import appuifw, e32, key_codes,threading,btsocket as socket
class myBtSocket:
def __init__(self):
address, services = socket.bt_discover()
self.channel = self.choose_service(services)
self.conn = socket.socket(socket.AF_BT,socket.SOCK_STREAM)
self.conn.connect((address, self.channel))
self.to_peer = self.conn.makefile("rw", 0)
self.canvas = appuifw.Canvas(event_callback =self.sendEvent) //wenn button gedruckt wird , wird dieser callback(sendEvent) ausgelöst
appuifw.app.body = self.canvas
appuifw.app.exit_key_handler = self.quit
self.app_lock = e32.Ao_lock()
self.app_lock.wait()
def choose_service(self,services):
names = []
channels = []
for name, self.channel in services.items():
names.append(name)
channels.append(self.channel)
index = appuifw.popup_menu(names, u"Choose service")
return channels[int(index)]
def sendEvent(self,event):
if event["type"] == appuifw.EEventKeyDown:
self.socketIsBusy=True
try:
print >> self.to_peer,unicode(event['scancode'])
except socket.error, e:
print "ERROR: %s" % e
elif event["type"] == appuifw.EEventKeyUp:
try:
print >> self.to_peer,"-"+unicode(event['scancode']) // ich benutze das Minus Vorzeichen um die beiden events am server zu unterscheiden
except socket.error, e:
print "ERROR: %s" % e
def quit(self):
appuifw.note(u"Bye!")
self.app_lock.signal()
myBtSocket()
ich habe versucht Semaphore zu implementieren (Ich habe gedacht das ein gleichzeitiger Zugriff auf das socket der mögliche Fehler ist) aber das hat nicht bei mir funktioniert.
Noch habe ich die send() methoden benutzt stat dem print >> , aber ich bekomme den gleiche error
Fg