c# - .NET 访问 802.15.4 无线收发器

标签 c# c++ python

亲爱的 Stack Overflow 社区,

我写信是希望您能帮助我使用 C# 或 C++ 连接到 802.15.4 无线收发器。让我解释一下我的项目。这个学期,我花了一些时间开发了一个无线传感器板,它可以每 8 秒将光、温度、湿度和运动检测级别传输到 USB 无线收发器。现在,我没有开发 USB 收发器。该类(class)的一位助教做了,他在我的传感器板(这是我的第一个真正的 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++ 设计一个软件接口(interface)来做很多不同的事情(其中一些是处理这个传感器数据)。所以,最终我希望能够在 .NET 中工作,以便从该收发器访问数据。然而,我所要做的就是这个 python 草图(它甚至不会在我的机器上运行)。我知道最简单的办法就是问这个助教更多关于如何让它在我的机器上工作的问题……但是我已经在这个学期占用了他大量的时间来研究这个项目,而且他目前不在镇。此外,他更喜欢 python,因为我最喜欢使用 C# 或 C++,并且希望在该项目中使用该环境。现在,我会说我擅长电子和编程(但肯定不是专家……我的背景实际上是建筑学)。但是,如果有人可以帮助我开发一些代码,以便我可以解压缩从板上发送的传感器消息,将不胜感激。我附上了下面的 Python 草图,这是助教用来在他的机器上解压他的传感器消息的程序(但就像我说的......我的 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

最佳答案

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

关于c# - .NET 访问 802.15.4 无线收发器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10592891/

相关文章:

c# - 在 xaml 项目中使用 CoreWindow 交换链,为什么没有绘制?

C++ 库,静态和动态

C++17 cout中的折叠表达式

python - 使用 termcolor.colored 打印某些字符串不同的颜色?

python - 从 Telegram 私有(private) channel 转发帖子

c# - 2个类实现相同的接口(interface),重复的代码

c# - "The RSA key container could not be opened"即使在 ACL 权限之后仍然出错(对于某些用户)

c++ - 在 C++ 中使用虚方法的段错误

python - N 以下包含数字 7 的所有数字的总和

C#:根据框架版本加载引用的程序集?