欧美三区_成人在线免费观看视频_欧美极品少妇xxxxⅹ免费视频_a级毛片免费播放_鲁一鲁中文字幕久久_亚洲一级特黄

bluepy 一款python封裝的BLE利器簡單介紹

系統 2351 0

1、bluepy 簡介
bluepy 是github上一個很好的藍牙開源項目,其地址在 LINK-1, 其主要功能是用python實現linux上BLE的接口。

This is a project to provide an API to allow access to Bluetooth Low Energy devices from Python. At present it runs on Linux only; I've mostly developed it using a Raspberry Pi, but it will also run on x86 Debian Linux.

支持python版本:The code is tested on Python 2.7 and 3.4; it should also work on 3.3.

2、安裝

直接源碼安裝,python3加持:

            
sudo apt-get install git build-essential libglib2.0-dev
git clone https://github.com/IanHarvey/bluepy.git
cd bluepy
python3 setup.py build
sudo python3 setup.py install
          

注:不要用python2,這輩子都不會用python2!

注:進行到這一步突然驚醒我的臺式機無藍牙,遂開啟我的無屏幕樹莓派,用命令找其ip,并用ssh登錄:

            
? Downloads sudo nmap -sS -p 22 192.168.31.0/24 | grep -B 5 -A 0 "Pi"
Nmap scan report for 192.168.31.51
Host is up (0.19s latency).
PORT STATE SERVICE
22/tcp open ssh
MAC Address: B8:27:EB:71:33:AE (Raspberry Pi Foundation)
? Downloads ssh pi@192.168.31.51
pi@192.168.31.51's password: 1234
          

3、看文檔,玩DEMO

bluepy 的文檔地址 LINK-2

在bluepy中新建一個examples文件夾,用來存放接下來我們的測試DEMO:

3.1 scan devices demo

這里第一個DEMO是BLE設備掃描,這里用到了Scanner對象,該對象可以用來搜索BLE設備的廣播包數據。在大多數情況下該對象將會掃描出周圍所有可連接設備。

下面是我改造為python3的代碼:

            
? examples git:(master) ? cat scan.py 
#!/usr/bin/env python
# coding=utf-8
from bluepy.btle import Scanner, DefaultDelegate
class ScanDelegate(DefaultDelegate):
def __init__(self):
DefaultDelegate.__init__(self)
def handleDiscovery(self, dev, isNewDev, isNewData):
if isNewDev:
print("Discovered device", dev.addr)
elif isNewData:
print("Received new data from", dev.addr)
scanner = Scanner().withDelegate(ScanDelegate())
devices = scanner.scan(10.0)
for dev in devices:
print("Device %s (%s), RSSI=%d dB" % (dev.addr, dev.addrType, dev.rssi))
for (adtype, desc, value) in dev.getScanData():
print(" %s = %s" % (desc, value))
          
  • 其中Scanner([index=0])用于產生并初始化一個新的scanner對象,index 用來指名哪一個藍牙設備就會被用(默認0表示使用/dev/hci0)。掃描知道調用start或scan函數之后才會開始;
  • 其中withDelegate(delegate)存儲對委托對象的引用,委托對象在接收來自設備的廣播時接收回調。有關詳細信息,請參閱DefaultDelegate的文檔;
  • 其中scan([timeout = 10])開始掃描并帶有超時,在此掃描期間掃描到的設備會觸發Delegate的回調函數,我們可以在其回調函數中實時獲取并打印。當超時后會返回一個設備列表;

執行效果如下:

bluepy 一款python封裝的BLE利器簡單介紹_第1張圖片

注:注意用sudo運行,更詳細的接口見 LINK-3

3.2 get services

bluepy 的DEMO有點少,我又找了個專是DEMO的github項目:LINK-5

將其中的getServices.py改造下:

            
? examples git:(master) ? cat get_setvices.py 
import sys
from bluepy.btle import UUID, Peripheral
if len(sys.argv) != 2:
print("Fatal, must pass device address:", sys.argv[0], "
            
              ")
quit()
p = Peripheral(sys.argv[1],"public")
services=p.getServices()
#displays all services
for service in services:
print(service)
            
          

其中Peripheral(sys.argv[1],"public")是用mac地址創建一個連接,由于我們上一步用scan搜索到的mac地址為public類型,因此這里第二個參數為"public",更詳細的介紹見 LINK-6;

其中getServices會返回所連接設備的服務;

執行效果如下:

bluepy 一款python封裝的BLE利器簡單介紹_第2張圖片

3.3 get characteristics

同3.2獲取characteristic的代碼如下:

            
? examples git:(master) ? cat get_characteristics.py 
import sys
from bluepy.btle import UUID, Peripheral
if len(sys.argv) != 2:
print("Fatal, must pass device address:", sys.argv[0], "
            
              ")
quit()
p = Peripheral(sys.argv[1],"public")
chList = p.getCharacteristics()
print("Handle UUID Properties")
print("-------------------------------------------------------") 
for ch in chList:
print(" 0x"+ format(ch.getHandle(),'02X') +" "+str(ch.uuid) +" " + ch.propertiesToString())
            
          

執行效果如下:

bluepy 一款python封裝的BLE利器簡單介紹_第3張圖片

3.4 get device name

直接上代碼:

            
? examples git:(master) ? cat get_device_name.py 
import sys
from bluepy.btle import UUID, Peripheral
dev_name_uuid = UUID(0x2A00)
if len(sys.argv) != 2:
print("Fatal, must pass device address:", sys.argv[0], "
            
              ")
quit()
p = Peripheral(sys.argv[1],"public")
try:
ch = p.getCharacteristics(uuid=dev_name_uuid)[0]
if (ch.supportsRead()):
print(ch.read())
finally:
p.disconnect()
            
          

運行效果如下:

小結

bluepy 是非常棒的一款藍牙BLE工具,掌握它會為你節省比較多的時間~

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。


更多文章、技術交流、商務合作、聯系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號聯系: 360901061

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對您有幫助就好】

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長會非常 感謝您的哦!??!

發表我的評論
最新評論 總共0條評論
主站蜘蛛池模板: 日韩电影毛片 | 激情男女视频 | 亚洲美女亚洲精品久久久久 | 久久艹免费视频 | 自拍亚洲一区 | 久久精品国产一区二区三区不卡 | 天天操综合 | 亚洲一二三区在线观看 | 成人亚洲网站 | 日韩精品一区二区三区中文字幕 | 亚洲九九色 | 99久久免费中文字幕精品 | 欧美亚洲另类在线 | 欧美日韩一区二区三区在线观看 | 五月综合激情在线 | 天天舔天天 | 国产精品久久久久秋霞影视 | 一级特黄录像视频免费 | 大学生a级毛片免费视频 | 日本男人天堂 | 欧美四虎影院 | 99视频在线观看视频一区 | 久久com | 久久97精品久久久久久久看片 | 亚洲视频在线视频 | 欧美自拍电影 | 国产精品理论片在线观看 | 99热热热 | 成人在线视频免费观看 | 玖玖精品 | 一级片在线免费 | 国产97人人超碰caoprom | 亚洲成人一区二区 | 三级黄色片网站 | 香蕉国产人午夜视频在线观看 | 毛片一级在线 | 在线一区二区三区做爰视频网站 | 欧美一区二三区 | 成人综合久久精品色婷婷 | 亚洲综合婷婷 | 欧美视频第一页 |