我正在尝试编写一个Arduino库(实际上是一个C++类),它本身引用了我在Mac的〜/ Documents/Arduino/libraries目录中安装的另一个库.
在我正在写的图书馆的.cpp的顶部,我试过了
#include <ReferencedLibrary.h>
Run Code Online (Sandbox Code Playgroud)
和
#include "ReferencedLibrary.h"
Run Code Online (Sandbox Code Playgroud)
......两者都不起作用.我可以#include <ReferencedLibrary.h>在〜/ Documents/Arduino目录中成功绘制草图.我错过了什么或者这是Arduino IDE/makefile的限制吗?有解决方法吗?
我几乎完成了我的开源DCF77解码器项目.当我注意到标准(Arduino)DCF77库在噪声信号上表现非常差时,一切都开始了.特别是当天线靠近电脑或我的洗衣机运行时,我从来没有能够从解码器中抽出时间.
我的第一种方法是为输入信号添加一个(数字)指数滤波器+触发器.
虽然这显着改善了情况,但仍然不是很好.然后我开始阅读一些关于数字信号处理的标准书籍,特别是Claude Elwood Shannon的原创作品.我的结论是,正确的方法是不对信号进行"解码",因为它是完全已知的先验(闰秒除外).相反,将接收的数据与本地合成的信号进行匹配并确定适当的相位会更合适.这反过来会将有效带宽减少一些数量级,从而显着降低噪声.
相位检测意味着需要快速卷积.有效卷积的标准方法当然是快速傅里叶变换.但是我正在为Arduino/Atmega 328实现.因此我只有2k RAM.因此,我开始堆叠匹配的锁相环滤波器,而不是使用FFT的直接方法.我在这里记录了不同的项目阶段:
我非常广泛地搜索了互联网,发现没有类似的方法.我仍然想知道是否有类似(也许更好)的实现.或者是否存在对这种信号重建的研究.
我不是在寻找:设计优化的代码以接近香农极限.我也没有在DCF77上搜索有关叠加PRNG代码的信息.我也不需要关于"匹配滤波器"的提示,因为我当前的实现是匹配滤波器的近似值.关于Viterbi Decoders或Trellis方法的具体提示不是我要寻找的 - 除非它们解决了严格的CPU和RAM限制问题.
我正在寻找的是:是否有任何其他非平凡算法的描述/实现,用于解码像DCF77这样的信号,在存在重大噪声的情况下CPU和RAM有限?也许在互联网时代以前的一些书籍或论文中?
我正在尝试将信息发布到我创建和托管的Web项目上的API.我不确定HTTP POST请求的确切格式是什么.每次我尝试时都会收到HTTP 400错误,并显示"动词无效"的消息.
示例代码:
byte server[] = {"our IP"}
..
..
client(server, 80)
..
..
client.println("POST /Api/AddParking/3");
Run Code Online (Sandbox Code Playgroud)
它连接到提供的IP地址没有任何问题,但我回到上面提到的HTTP错误代码400.我不确定我是否应该在我的POST或内容长度或任何其他信息之后包含HTTP版本.
我正在使用Arduino和实时时钟芯片.芯片可以补偿闰年等,所以它总是有正确的日期,但它不能处理夏令时,我认为由于区域复杂性.时钟可以给我一天,一个月和一年(基于1)和星期几(星期日= 0到星期六= 6).
因为我需要与用户输入的日期和时间进行比较,我需要知道为夏令时调整的日期和时间.如果当前日期是夏令时我可以简单地从时钟上加一小时到达我需要的东西.
困难的部分是确定我是否在夏令时,因为它每年都在变化.我只关心它在我的位置(山区时间)有效.我的平台似乎没有任何全面的日期库,我觉得无论如何都会有点过头了.是否有一个简单的公式来确定我是否在使用DST?
是否有类似于Arduino for Java中的Map函数的函数?
我需要将一系列值映射到另一个值范围,所以我想知道在Java中是否有类似的东西,我一直在搜索,但我只获得了Java的Map函数.
自从我迁移到Mountain Lion后,Arduino连接的USB串口不再可用于Arduino应用程序菜单(工具 - >串行端口).它只是通过蓝牙显示接口.
我Mac上出现的串口:

我尝试安装VCP驱动程序并重新安装Arduino.我试图运行旧版本的Arduino IDE,甚至从头开始重新安装Mac OS X.
这些都没有解决问题...我真的需要与我的Arduino沟通,我该如何解决这个问题?
我之前曾问过类似的问题,但我意识到我无法对宏观和模板做出正面或反面.我是一名C(而不是C++)程序员.
F()实际上做了什么?什么时候将字符填入pgmem?什么时候从pgmem中拉出角色?它会缓存它们吗?它如何处理低内存情况?
我试图动态列出连接到计算机的USB与某个UsbDeviceClass匹配
有关我尝试在设备管理器中列出的USB类的信息如下
理想情况下它应该能够列出Com端口,因为我希望列出的设备特别是Arduinos.
DeviceInformationCollection usbDeviceInfoCollection = await DeviceInformation.FindAllAsync(UsbDevice.GetDeviceClassSelector(new UsbDeviceClass()
{
ClassCode = 0x02,
SubclassCode = 0x02,
ProtocolCode = 0x01
}));
Debug.WriteLineIf(usbDeviceInfoCollection.Count == 1, "1 USB device found");
Debug.WriteLineIf(usbDeviceInfoCollection.Count != 1, usbDeviceInfoCollection.Count + " USB devices found");
for (int i = 0; i < usbDeviceInfoCollection.Count; i++)
{
Debug.WriteLine("USB Device " + (i + 1));
Debug.WriteLine("ID: " + usbDeviceInfoCollection[i].Id);
Debug.WriteLine("Name: " + usbDeviceInfoCollection[i].Name);
Debug.WriteLine("Properties: " + usbDeviceInfoCollection[i].Properties);
Debug.WriteLine("");
}
Run Code Online (Sandbox Code Playgroud)
上面的代码显示了我一直在努力实现这一目标,但到目前为止,我没有运气.这是因为当程序运行时,它会在连接了设备时返回0个设备.
我也尝试使用预定义的类UsbDeviceClasses.CdcControl,但是,也没有达到我想要的结果.
我很欣赏任何关于如何正确实现这一目标的指导.
此外,由于这是一个UWP项目,我已经包含了下面的功能,因此它应该能够检测到我想要的设备.
<DeviceCapability Name="serialcommunication">
<Device …Run Code Online (Sandbox Code Playgroud)