Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/360.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使用python库将数据字符串发送到XBee?_Python_Xbee - Fatal编程技术网

如何使用python库将数据字符串发送到XBee?

如何使用python库将数据字符串发送到XBee?,python,xbee,Python,Xbee,我应该使用哪个图书馆,如何使用 似乎只能在API模式下发送命令,我找不到任何人使用它发送字符串的示例。也许我误解了API模式是什么,但我在文档中找不到有效负载 你被烤成蟒蛇了吗?我似乎找不到他们声称在我的Python(2.7.3rc2)中定义的任何常量,我也找不到如何在他们的站点上获得这些扩展。这似乎是一种传递字符串的方法,但我如何使用它?如果Xbee作为串行设备连接到计算机,您可以使用串行库,如。下面是我刚刚完成的一个项目的一些代码片段 # Connect to Xbee self.ser =

我应该使用哪个图书馆,如何使用

似乎只能在API模式下发送命令,我找不到任何人使用它发送字符串的示例。也许我误解了API模式是什么,但我在文档中找不到有效负载


你被烤成蟒蛇了吗?我似乎找不到他们声称在我的Python(2.7.3rc2)中定义的任何常量,我也找不到如何在他们的站点上获得这些扩展。这似乎是一种传递字符串的方法,但我如何使用它?

如果Xbee作为串行设备连接到计算机,您可以使用串行库,如。下面是我刚刚完成的一个项目的一些代码片段

# Connect to Xbee
self.ser = serial.Serial(port, baud, timeout=timeout)

# Send data (a string)
self.ser.write(packet)

# Read data
self.data += self.ser.read()

我们在透明模式下使用Xbees—您在一端写入的每个字节在另一端通过读取可见。不需要特殊的Xbee库。

如果您的设置非常简单,只有两个Xbee,我也建议您使用pySerial,但如果您有更复杂的内容,最好使用库

pythonxbee库使用起来非常简单,但缺少任何类型的全面文档。要使用它发送和接收简单消息,请执行以下操作:

from xbee import XBee
from serial import Serial

PORT = '/dev/ttyUSB0'
BAUD = 9600

ser = Serial(PORT, BAUD)

xbee = XBee(ser)
# Send the string 'Hello World' to the module with MY set to 1
xbee.tx(dest_addr='\x00\x01', data='Hello World')

# Wait for and get the response
print(xbee.wait_read_frame())

ser.close()
您可以通过执行以下操作发送AT命令:

xbee.at(frame_id='A', command='MY')
reply = xbee.wait_read_frame()
print(reply)

# Getting the integer value out of reply
import struct    
print(struct.unpack('>h', reply['parameter'])[0])
您可以将帧id设置为任何字符串,它用于标识正确的应答。

ser=serial.serial(serial\u PORT,9600)
ser = serial.Serial(SERIAL_PORT, 9600)
bee = ZigBee(ser) # <--
第一个问题是“你确定你的设备处于API模式吗?”。 您看到此错误是因为接收端看到“tx”(类型0x01)类型的帧进入。虽然这是您请求发送的帧,但我相信您会期望接收端将其作为“rx”(0x81)类型接收

如果查看/xbee/ieee.py中的代码,您将看到两个列表: *api_commands=Outgoing:您永远不会期望这些帧类型中的一种传入。 *api_responses=传入:您应该只看到这些传入的帧类型

如果库检测到一个api_命令传入,它将抛出您看到的错误:

id为1的传入帧看起来像是“tx”类型的命令帧(不应接收这些命令帧)。您确定您的设备处于API模式吗

我不是100%确定您的情况,但看起来您传出的“tx”帧没有在另一端转换为传入的“rx”帧-可能所有XBee上都没有启用API模式


另请参见

,串行端口上的XBee将在XBee网络上重复该字符串,并将从远程XBee接收的所有数据写入串行端口?我假设两个XBee都需要处于透明模式?我只使用过两个XBee直接通信,从未使用过更大的网络。如果两者都处于透明模式,那么您在一端写入的任何字节都会显示在另一端,就像普通串行一样。我最近接管了python xbee(您pip安装的那个)的管理,因为它已经多年没有更新了。我很高兴接受改善文档的请求!