.NET访问802.15.4无线收发器

时间:2012-05-15 00:56:59

标签: c# c++ python

亲爱的Stack Overflow社区,

我写信希望您能够帮助我使用C#或C ++连接到802.15.4无线收发器。让我解释一下我的项目。本学期,我花了一些时间开发出一种无线传感器板,可以每隔8秒将光,温度,湿度和运动检测水平传输到USB无线收发器。现在,我没有开发USB收发器。该课程的其中一个TA是,他在我的传感器板的整个开发过程中帮助了我(这是我的第一个真正的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提出更多关于如何在我的机器上工作的问题......但是我已经在这个学期关于这个项目的时间里垄断了他很多时间,而且他目前已经离开了镇。此外,他的偏好是python,因为我最喜欢C#或C ++,并希望将此环境用于此项目。现在,我会说我在电子和编程方面很有能力(但肯定不是专家......我的背景实际上是建筑学)。但是,如果有人可以帮助我开发一些代码,以便我可以解开从板发送的传感器消息,我将不胜感激。我已经附上了下面的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

2 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分:0)

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

ZigBoard lib使用python USB lib通过API与USB设备进行通信,你应该能够LibUsbDotNet在C#中复制它,如果你读过ZigBoard libs代码,你应该能够制定出API。