Bluetooth socket,python s60,nokia n95,error

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
cunami
User
Beiträge: 1
Registriert: Mittwoch 1. Juli 2009, 22:29

Halo python fans :)

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
Antworten