Bluetooth в Mac OS из Python
Я тут учусь работать с Блютузом из Пайтона на «Маке», пока сделал сканирование всех видимых в эфире устройств:
import objc
import time
from Foundation import NSDate, NSDefaultRunLoopMode
from AppKit import NSApplication, NSAnyEventMask
objc.loadBundle('IOBluetooth', globals(), bundle_path=u'/System/Library/Frameworks/IOBluetooth.framework')
class DeviceInquiry(NSObject):
def init(self):
self = super(DeviceInquiry, self).init()
self._inquiry = IOBluetoothDeviceInquiry.inquiryWithDelegate_(self)
self._stop = False
return self
def getfounddevices(self):
self._inquiry.start()
app = NSApplication.sharedApplication()
app.setActivationPolicy_(2)
while not self._stop:
time.sleep(.01)
app.nextEventMatchingMask_untilDate_inMode_dequeue_(NSAnyEventMask,\
NSDate.dateWithTimeIntervalSinceNow_(1), NSDefaultRunLoopMode, True)
return tuple((dev.getName(), dev.getAddressString()) for dev in self._inquiry.foundDevices())
@objc.typedSelector("v@:@@")
def deviceInquiryDeviceFound_device_(self, inquiry, device):
self._stop = True
@objc.typedSelector("v@:@iB")
def deviceInquiryComplete_error_aborted_(self, inquiry, err, aborted):
self._stop = True
print DeviceInquiry.new().getfounddevices()
Модуль pyobjc (в маковском Пайтоне он уже есть) — это мост между Пайтоном и Обжектив-Си, т. е. в реальности вызывается «кокосовое» АПИ «Мака».
Последняя строчка — пример использования, выдаётся список списков, состоящих из двух элементов — имени устройства и его «адреса» (это шесть шестнадцатеричных чисел, разделённые минусом).
Здравствуйте! А для получения процента батареи с блютуз устройства использовать batteryLevel_()?
Здравствуйте, я не знаю. Этой заметке 10 лет.
А вы уже не пишете код на мак ?
С блютусом не работаю.