第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問題,去搜搜看,總會(huì)有你想問的

如何使用 Python 將 SDP 記錄添加到 MacOS?

如何使用 Python 將 SDP 記錄添加到 MacOS?

慕森卡 2023-12-29 16:33:23
我當(dāng)前的目標(biāo)是向 MacBook Pro 上運(yùn)行的藍(lán)牙服務(wù)添加 SDP 記錄,以便我可以將該服務(wù)通告給其他藍(lán)牙設(shè)備。理想情況下,我想用 Python 來完成這個(gè)任務(wù)。此時(shí),我已在 BlueZ 藍(lán)牙堆棧下的 Linux 上成功創(chuàng)建、添加和發(fā)布 SDP 記錄,但是,在 MacOS 上使用類似的過程時(shí)遇到了一些麻煩。經(jīng)過一番研究,我的理解是,在 MacOS 上與藍(lán)牙 API 交互需要使用IOBluetooth Objective-C 框架,這可以在 Python 中通過pyobjc來完成。順便說一句,我也了解 CoreBluetooth 框架的存在,但是,該框架的功能并不合適,因?yàn)樗狈?SDP 記錄添加/刪除功能。我目前正在處理兩個(gè)問題:1. 創(chuàng)建適用于MacOS的SDP記錄MacOS 使用 PLIST 格式加載/指定 SDP 記錄。我有一個(gè) XML 格式的現(xiàn)有記錄,可由 BlueZ 加載。是否可以將此記錄轉(zhuǎn)換為 PLIST 格式,還是我應(yīng)該考慮從頭開始重寫該記錄?2.通過pyobjc添加SDP記錄我可以通過 pyobjc/IOBluetooth 交互/查詢基本藍(lán)牙功能。當(dāng)我嘗試使用 IOBluetoothSDPServiceRecord 類時(shí)出現(xiàn)問題。從我在其他地方看到的一些示例(這里有一個(gè)示例)來看,這個(gè)類似乎是您用來添加新記錄的類?當(dāng)我嘗試加載/使用此類時(shí),我無法訪問它的任何功能。如果對(duì)于那些熟悉 Objective-C 的人來說這似乎是一個(gè)微不足道的/或業(yè)余的問題,我提前道歉!Python 是我的專長(zhǎng)所在,因此與這種語言的交互有點(diǎn)超出了我的能力范圍。我還將在下面提供我一直在做的事情的最小工作示例:IOBluetooth.pyimport objc as _objc_objc.loadBundle('IOBluetooth', globals(),\  bundle_path=u'/System/Library/Frameworks/IOBluetooth.framework')bluetooth_test.pyfrom IOBluetooth import *sdp = Nonewith open("record.plist", "r") as f:    sdp = f.read()# This functions correctlydevs = IOBluetoothDevice.recentDevices_(0)print(devs[0].getNameOrAddress())# This does notsdp_sr = IOBluetoothSDPServiceRecord.alloc().init()sdp_sr.publishedServiceRecord(sdp)bluetooth_test.py 的輸出Apple WatchTraceback (most recent call last):  File "bluetooth_test.py", line 12, in <module>    sdp_sr.publishedServiceRecord(sdp)AttributeError: 'IOBluetoothSDPServiceRecord' object has no attribute 'publishedServiceRecord'任何對(duì)此的意見將不勝感激!
查看完整描述

1 回答

?
FFIVE

TA貢獻(xiàn)1797條經(jīng)驗(yàn) 獲得超6個(gè)贊

經(jīng)過更多研究后,我找到了答案。對(duì)于那些碰巧正在從事類似工作的人,我將發(fā)布我如何解決這個(gè)問題:

回答問題1

經(jīng)過一番搜索后,我認(rèn)為最好手動(dòng)重寫現(xiàn)有的 XML SDP 記錄。我找不到任何實(shí)用程序可以處理 16 位藍(lán)牙 UUID 從 XML 到 PLIST 格式的轉(zhuǎn)換。

回答問題2

上面的IOBluetooth.py文件與我的問題沒有變化。

bluetooth_test.py

from IOBluetooth import *

from Cocoa import NSDictionary

import time



plist = NSDictionary.dictionaryWithContentsOfFile_("service.plist")

sdp_sr = IOBluetoothSDPServiceRecord.publishedServiceRecordWithDictionary_(plist)


time.sleep(10)


sdp_sr.removeServiceRecord()

print("Removed Service Record")

真正有助于探索 IOBluetooth API 的是使用dir()Python 中的函數(shù)。實(shí)際上,您可以向其扔一個(gè) pyobjc 實(shí)例或類,您將收到所有可用方法的列表。


希望這對(duì)將來的人有幫助!


查看完整回答
反對(duì) 回復(fù) 2023-12-29
  • 1 回答
  • 0 關(guān)注
  • 211 瀏覽
慕課專欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)