Форум сайта python.su
Доброго времени суток.
Я в Питоне начинающий, до этого работал в Яве микроэдишн, вот пытаюсь освоить, помогите пожалуйста проблема следующая:
Есть необходимость написать Блютуз-радар как на mShell - то есть происходит поиск по БТ доступных к обнаружению устройств, как только устройство найдено мы проверяем есть ли оно в списке который заранее задан, если устройство есть в списке - показываем на экране, если нет - продолжаем поиск.
В Яве при вызове процедуры поиска и при нахождении устройства (не по окончании поиска, а во время поиска при обнаружении доступного устройства) в радиусе доступа сразу вызывается процедура deviceDiscovered - и вот в ней можно делать проверку и т.д. Как подобное реализовано в Питоне? Почитал по этому поводу мануалы, делаю вот так
import socket address, services = socket.bt_discover() print "Discovered: %s, %s" % (address, services)
Отредактировано AlexSSX1 (Сен. 6, 2012 10:50:31)
Офлайн
Народ ну помогите кто нибудь!
Взял вот такой исходник (доработал до версии 2.0.х) но вот как сделать проверку найденных имён (только имён без поиска сервисов, без подключений и т.д.)
import btsocket import appuifw import e32 class BTReader: def connect(self): self.sock=btsocket.socket(btsocket.AF_BT,btsocket.SOCK_STREAM) addr,services=btsocket.bt_discover() print "Discovered: %s, %s"%(addr,services) if len(services)>0: import appuifw choices=services.keys() choices.sort() choice=appuifw.popup_menu([unicode(services[x])+": "+x for x in choices],u'Choose port:') port=services[choices[choice]] else: port=services[services.keys()[0]] address=(addr,port) print "Connecting to "+str(address)+"...", self.sock.connect(address) print "OK." def readline(self): line=[] while 1: ch=self.sock.recv(1) if(ch=='\n'): break line.append(ch) return ''.join(line) def close(self): self.sock.close() bt=BTReader() bt.connect() print "Received: "+bt.readline() bt.close()
Офлайн