Seite 1 von 1

Bluetooth socket,python s60,nokia n95,error

Verfasst: Mittwoch 1. Juli 2009, 22:35
von cunami
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