8

亲爱的 Stack Overflow 社区,

我写信是希望您能帮助我使用 C# 或 C++ 连接到 802.15.4 无线收发器。让我解释一下我的项目。这个学期,我花了一些时间开发一个无线传感器板,它可以每 8 秒将光、温度、湿度和运动检测水平传输到 USB 无线收发器。现在,我没有开发 USB 收发器。该课程的一位助教做到了,他在整个传感器板的开发过程中帮助了我(这是我的第一个真正的 PCB)。

现在,我已经对传感器板进行了编程,我知道它正在将数据发送到收发器。我知道这是因为这个 TA 编写了一个简单的 python 模块,它会从收发器中提取最新的信息包(无论何时收到),解包十六进制消息,并将一些传感器数据转换为工作单位(如度摄氏度、相对湿度百分比等)

问题是python模块在他的电脑(Mac)上工作,但在我的电脑(Windows 7)上不工作。基本上,他使用名为 zigboard 的库来解压传感器消息,以及草图中的 pyusb 和 pyserial 库。802.15.4 无线收发器在 Mac 上自动枚举自身,但在 PC 上运行时会遇到更大的问题。基本上,我认为问题在于缺乏签名的驱动程序。我正在使用 libusb 为这个特定设备生成 .inf 文件......我知道它在我的机器上工作,因为我的传感器板上和收发器上有一个 LED,当发送/接收消息时它会闪烁。但是,当我运行这个 TA 在他的机器上运行的相同 python 模块时,我收到一条关于缺少一些 Windows 后端二进制文件的错误消息,因此,

但是,更大的问题不在于这个 python 模块。更大的问题是我不想使用 Python。这个传感器板将成为一个更大的项目的一部分,在这个项目中,我将用 C# 或 C++ 设计一个软件接口来做许多不同的事情(其中一些是处理这个传感器数据)。所以,最终我希望能够在 .NET 中工作,以便从这个收发器访问数据。然而,我所要做的就是这个 python 草图(它甚至不会在我的机器上运行)。我知道最容易做的事情是问这个 TA 更多关于如何让它在我的机器上工作的问题......但是我已经在这个学期垄断了他大量的时间来处理这个项目,而且他目前不在镇。此外,他的偏好是蟒蛇,而我 我最擅长 C# 或 C++,并希望在该项目中使用该环境。现在,我想说我能胜任电子和编程(但肯定不是专家……我的背景实际上是建筑学)。但是,如果有人可以帮助我开发一些代码,以便我可以解开从板上发送的传感器消息,我们将不胜感激。我附上了下面的 Python 草图,这是 TA 用来在他的机器上解压他的传感器消息的工具(但就像我说的......我的 Windows 机器上有问题)。有没有人有什么建议?如果有人可以帮助我开发一些代码,以便我可以解开从船上发送的传感器消息,我们将不胜感激。我附上了下面的 Python 草图,这是 TA 用来在他的机器上解压他的传感器消息的工具(但就像我说的......我的 Windows 机器上有问题)。有没有人有什么建议?如果有人可以帮助我开发一些代码,以便我可以解开从船上发送的传感器消息,我们将不胜感激。我附上了下面的 Python 草图,这是 TA 用来在他的机器上解压他的传感器消息的工具(但就像我说的......我的 Windows 机器上有问题)。有没有人有什么建议?

再次感谢。

from zigboard import ZigBoard
from struct import unpack
from time import sleep, time

zb = ZigBoard()
lasttime = time()

while True:
    pkt = zb.receive()
    if pkt is None:
        sleep(0.01)
        continue
    if len(pkt.data) < 10:
        print "short packet"
        sleep(0.01)
        continue

    data = pkt.data[:10]
    cmd, bat, light, SOt, SOrh, pir = unpack("<BBHHHH", data)
    lasttime = time()

    d1 = -39.6
    d2 = 0.01 

    c1 = -2.0468
    c2 = 0.0367
    c3 = -1.5955E-6

    t1 = 0.01 
    t2 = 0.00008

    sht15_tmp = d1 + d2 * float(SOt);
    RHL = c1 + c2 * SOrh + c3 * float(SOrh)**2
    sht15_rh = (sht15_tmp - 25.0) * (t1 + t2 * float(SOrh)) + RHL

    print "address: 0x%04x" % pkt.src_addr
    print "temperature:", sht15_tmp
    print "humidity:", sht15_rh
    print "light:", light
    print "motion:", pir
    print
4

2 回答 2

1

感谢大家的帮助。一切的关键是使用LibUSBDotNet。一旦我将其安装并引用到我的项目中......我就能够创建一个可以处理传入传感器数据的控制台窗口。我确实需要从原始 Zigboard 库中移植一些功能......但是在

于 2012-07-02T11:54:25.137 回答
0

我不是 100% 确定到底如何做到这一点,但在快速浏览后我可以看到问题的核心是你需要在 C# 中实现类似 ZigBoard 库的东西。

ZigBoard 库使用 python USB 库使用 API 与 USB 设备进行通信,您应该能够使用LibUsbDotNet在 C# 中复制它,如果您阅读 ZigBoard 库代码,您应该能够计算出 API。

于 2012-07-02T08:24:08.837 回答