浅谈Python调用XBee的API来进行通讯

用python编程来控制串口(COM口),来让一对XBee进行通讯。不需要借助终端来发送和接收数据,增大了XBee使用的灵活性。这才是使用XBee模块的最初目的。使用XBee的API模式来通讯非常容易,我们仅需要添加相关的库,然后开始用就完事了。我们甚至不需要深刻的理解XBee API协议,有兴趣也可以去看一下。

什么是API?

API是application programming interface的简写,它们就是一个程序跟另一个程序进行交互的标准接口。简单地说,它们就是两段程序代码之间的桥梁。我们在使用终端来进行通讯时,XBee处于transparent/command模式。这种情况下,初学者很容易上手,配置完成就能传递和接收数据,并且可以直接在屏幕上阅读。这是XBee平台的一个大优势,但是它们对于计算机的鲁棒性、显性性和效率就不太好。计算机喜欢处理数字,喜欢用明确且高度结构化的方式传输。API可以提供能用来编程的接口,API模式使无线电能够根据人和人的需求平等地服务于人和计算机。

代码

其中一个XBee作为接收方,另一个作为发送方。接收方的代码(receiver)

#! /usr/bin/pythonfrom digi.xbee.devices import XBeeDevicefrom xbee import XBee, ZigBeeimport serial# TODO: Replace with the serial port where your local module is connected to.PORT = "COM3"# TODO: Replace with the baud rate of your local module.BAUD_RATE = 9600def main():    print(" +-----------------------------------------+")    print(" | XBee Python Library Receive Data Sample |")    print(" +-----------------------------------------+\n")    device = XBeeDevice(PORT, BAUD_RATE)    try:        device.open()        def data_receive_callback(xbee_message):            print("From %s >> %s" % (xbee_message.remote_device.get_64bit_addr(),                                     xbee_message.data.decode()))        device.add_data_received_callback(data_receive_callback)        print("Waiting for data...\n")        input()    finally:        if device is not None and device.is_open():            device.close()if __name__ == '__main__':    main()
  • 发送方代码(transfer)

from digi.xbee.devices import XBeeDevice# TODO: Replace with the serial port where your local module is connected to.PORT = "COM5"# TODO: Replace with the baud rate of your local module.BAUD_RATE = 9600DATA_TO_SEND = "fuck liunaifeng!"REMOTE_NODE_ID = "XBEE_B"def main():    print(" +--------------------------------------+")    print(" | XBee Python Library Send Data Sample |")    print(" +--------------------------------------+\n")    device = XBeeDevice(PORT, BAUD_RATE)    try:        device.open()        print(1111)        # Obtain the remote XBee device from the XBee network.        xbee_network = device.get_network()        remote_device = xbee_network.discover_device(REMOTE_NODE_ID)        if remote_device is None:            print("Could not find the remote device")            exit(1)        print("Sending data to %s >> %s..." % (remote_device.get_64bit_addr(), DATA_TO_SEND))        device.send_data(remote_device, DATA_TO_SEND)        print("Success")    finally:        if device is not None and device.is_open():            device.close()if __name__ == '__main__':    main()

配置

在使用API的时候需要将XBee模块配置成API模式,操作非常简单,如下图所示。

选择API enabled[1]之后,点后面的笔的图标,把它写进去。

REMOTE_NODE_ID就是NI里面的参数,如下图:如对DIGI产品感兴趣,请联系:武经理18611101552。

往期热门文章:

1、几种常见的近距离无线通信技术比较;

2、浅谈Digi Xbee模块的AT指令;

3、浅谈Digi Xbee模块的透传和API模式;

4、XBee3 Zigbee开始使用Micropython。

python 调用 .netcore api_浅谈Python调用XBee的API来进行通讯相关推荐

  1. python中怎么调用函数_浅谈Python中函数的定义及其调用方法

    一.函数的定义及其应用 所谓函数,就是把具有独立功能的代码块组织成为一个小模块,在需要的时候调用函数的使用包含两个步骤 1.定义函数–封装独立的功能 2.调用函数–享受封装的成果 函数的作用:在开发时 ...

  2. python编写函数_浅谈Python 函数式编程

    匿名函数lambda表达式 什么是匿名函数? 匿名函数,顾名思义就是没有名字的函数,在程序中不用使用 def 进行定义,可以直接使用 lambda 关键字编写简单的代码逻辑.lambda 本质上是一个 ...

  3. python 迭代器协议_浅谈Python中的生成器和迭代器

    迭代器 迭代器协议 对象必须提供一个next方法,执行该方法要么返回迭代中的下一项,要么返回一个异常来终止本次迭代.(只能往前走,不能往后退!) 迭代器对象 遵循了(实现了)迭代器协议的对象.(对象内 ...

  4. python可视化工具bokeh_浅谈python可视化包Bokeh

    本文研究的主要是python可视化包Bokeh的相关内容,具体如下. 问题:需要把pandas的数据绘图并通过网页显示,matplotlib需要先保存图像,不合适. 解决:在网上搜了一下,找到一篇介绍 ...

  5. python static方法_浅谈python 类方法/静态方法

    1.类方法 类方法是从属于"类对象"的方法.类对象可以通过装饰器@classmethod来定义,具体格式如下: @classmethod def 类方法名(cls [, 形参列表] ...

  6. python hasattr函数_浅谈python中的getattr函数 hasattr函数

    hasattr(object, name) 作用:判断对象object是否包含名为name的特性(hasattr是通过调用getattr(ojbect, name)是否抛出异常来实现的). 示例: & ...

  7. python float 精度_浅谈Python里面小数点精度的控制

    要求较小的精度 round()内置方法 这个是使用最多的,刚看了round()的使用解释,也不是很容易懂.round()不是简单的四舍五入的处理方式. For the built-in types s ...

  8. python数字类型floatcomplexint_浅谈python 四种数值类型(int,long,float,complex)

    Python支持四种不同的数值类型,包括int(整数)long(长整数)float(浮点实际值)complex (复数),本文章向码农介绍python 四种数值类型,需要的朋友可以参考一下. 数字数据 ...

  9. python 模拟浏览器selenium_浅谈python爬虫使用Selenium模拟浏览器行为

    前几天有位微信读者问我一个爬虫的问题,就是在爬去百度贴吧首页的热门动态下面的图片的时候,爬取的图片总是爬取不完整,比首页看到的少.原因他也大概分析了下,就是后面的图片是动态加载的.他的问题就是这部分动 ...

最新文章

  1. Python os.chdir() 方法用于改变当前工作目录到指定的路径。
  2. python os.path.exists()(用于判断文件夹路径是否存在)
  3. makefile:2: *** 遗漏分隔符 。 停止
  4. html参考文献_毕业设计参考文献格式(要求与范例)
  5. MySQL密码忘记,怎么办?
  6. 前端是Sencha Touch+ Cordova(转)
  7. struts2实现文件上传
  8. FloatingActionButton FAB 悬浮按钮
  9. smartMeter
  10. ENVI5.3 辐射校正相关操作
  11. 如何优化深度学习模型
  12. Windows下安装pip
  13. 怎样用计算机粉碎文件夹,电脑粉碎文件用什么软件好,怎么彻底粉碎电脑文件...
  14. python算术平方根_Python 平方根
  15. 小米系统shell_小米平板1(Mi Pad1) 采用神盾内核的 lineageOS 14.1 / 15.1 / 16.0 刷机教程...
  16. 合唱队形(线性DP)
  17. 随机数模拟抛硬币实验
  18. React Native - 使用图片选择器react-native-image-picker拍照、选照片
  19. Scala 令人着迷的类设计
  20. 黑苹果0x0501_黑苹果原版安装从零开始---3-clover配置篇

热门文章

  1. dudu注意:这个可能是bug吧?
  2. linux设备模型之mmc子系统
  3. oracle停数据库服务器,优化Oracle停机时间及数据库恢复
  4. Android之实现 A/B分区更新固件
  5. AndroidLinux gdb用法
  6. 报错:fatal: Cannot get https://gerrit.googlesource.com/git-repo/clone.bundle解决
  7. Android视频录制-MediaRecorder流程
  8. HTML配置CSDN自定义栏目
  9. python代码命令行tab补齐_超简python命令行tab一键补全方法
  10. gdal库读取tif影像坐标