专栏首页python3Linux(RaspberryPi)上通

Linux(RaspberryPi)上通

使用python的第三方库bluepy可以很方便的在linux主机如树莓派上进行蓝牙通信。

  • bluepy的安装
sudo apt-get install python-pip libglib2.0-dev
sudo pip install bluepy

源码安装如下:

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

官方示例代码

import btle

class MyDelegate(btle.DefaultDelegate):
    def __init__(self, params):
        btle.DefaultDelegate.__init__(self)
        # ... initialise here

    def handleNotification(self, cHandle, data):
        # ... perhaps check cHandle
        # ... process 'data'


# Initialisation  -------

p = btle.Peripheral( address )
p.setDelegate( MyDelegate(params) )

# Setup to turn notifications on, e.g.
#   svc = p.getServiceByUUID( service_uuid )
#   ch = svc.getCharacteristics( char_uuid )[0]
#   ch.write( setup_data )

# Main loop --------

while True:
    if p.waitForNotifications(1.0):
        # handleNotification() was called
        continue

    print "Waiting..."
    # Perhaps do something else here

这是自己写的一个和arduino(arduino bluno)上的BLE通讯的代码,先遍历输出目标的服务(server)信息 在与目标通讯。 在arduino上只是接收到’B’字符后开始发送数据

from bluepy import btle
from bluepy.btle import DefaultDelegate
import time

class NotifyDelegate(DefaultDelegate):
    def __init__(self):
            DefaultDelegate.__init__(self)
    def handleNotification(self,cHandle,data):
        print("notify from "+str(cHandle)+str(data)+"\n")

dev=btle.Peripheral("50:65:83:94:28:02").withDelegate(NotifyDelegate())

time.sleep(0.5)

for ser in dev.getServices():
    print(str(ser))
    for chara in ser.getCharacteristics():
        print(str(chara))
        print("Handle is "+str(chara.getHandle()))
        print("properties is "+chara.propertiesToString())
        if(chara.supportsRead()):
            print(type(chara.read()))
            print(chara.read())
    print("\n")



dev.writeCharacteristic(37,b'A',withResponse=True)
dev.waitForNotifications(1)
dev.writeCharacteristic(37,b'b',withResponse=True)
dev.waitForNotifications(1)
dev.writeCharacteristic(37,b'A',withResponse=True)
dev.waitForNotifications(1)
dev.writeCharacteristic(37,b'b',withResponse=True)

i=0
dev.writeCharacteristic(37,b'B',withResponse=False)
while(True):
    if(dev.waitForNotifications(1)):
        i=i+1
        if(i>1000):
            break
        continue
    print("Waiting...")
time.sleep(0.5)

dev.disconnect()

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • python的元祖,集合,字典的常见函数

    py3study
  • python 函数的初识

    py3study
  • Python中的字符串及用法

    字符串是 Python 中最常用的数据类型 1.#字符串的定义 a = 'westos' b = "what's" c = """ 用户管理管理系统 1.添加用...

    py3study
  • python

    列表对 + 和 * 的操作符与字符串相似。+ 号用于组合列表,* 号用于重复列表。

    Jinni
  • python 函数的初识

    py3study
  • 聊聊 print 的前世今生

    上周,我翻译了一篇文章,解释了为什么 Python 3 把 print 改为函数? 概括有如下几点原因:1、print 不适宜作为应用程序级的语句。2、改为一个...

    Python猫
  • Python基础语法

    https://www.liaoxuefeng.com/wiki/0014316089557264a6b348958f449949df42a6d3a2e542c...

    六月的雨
  • python 的err输出BaseExc

    try: print('try...') r = 10 / 0 print('result:', r) except BaseException as e: p...

    py3study
  • 1.Python函数的初识

    大家都有没有玩过陌陌,探探这种软件?这种软件是专门为你们没有对象的男士设置的,这是一款合理合法的约炮,哦不对,交友软件,那么现在我们用Python代码简单模拟一...

    changxin7
  • Python教程(三):基础数据类型

    Python中的变量不需要声明。每个变量在使用前都必须赋值,变量赋值以后该变量才会被创建。

    Vi的技术博客

扫码关注云+社区

领取腾讯云代金券