Arduino LINX 实现上拉输入,并且实现对应VI以及C#调用(以MEGA2560PRO为例)(上)
思路:Arduino本身可以设置INPUT_PULLUP,而LINX中没有。猜测原因是LINX在具体实现中将PINMODE设置为INPUT,并且没有实现INPUT_PULLUP版本。因此只要修改LINX固件,增加PULLUP版本的实现即可。(如果不需要普通的浮空输入,直接把源代码里的INPUT改成INPUT_PULLUP即可,无须后续操作,这样所有能上拉的输入都会被上拉)
环境需求
Arduino IDE(用于烧录修改后的固件)
LabView+MakerHUB包(用于导出固件以及在LabView中测试)
C#.NET framework4.8(我所使用的版本罢了)
导出固件

修改固件代码(总共5个文件)
1. libraries\LinxArduinoMega2560\utility\LinxWiringDevice.h
增加函数声明

2. libraries\LinxArduinoMega2560\utilityLinxWiringDevice.cpp
实现函数(直接抄上面的非PULLUP版本,改一下)
2个LinxDevice.h
添加函数声明(其实可以发现LinxDevice是基类...应该可以直接修改基类而不用修改子类,但算了,瞎改改,全部都改了就是...
3. libraries\LinxArduinoMega2560\utility\LinxDevice.h
4. libraries\LinxSerialListener\utility\LinxDevice.h

5. libraries\LinxSerialListener\LinxListener.cpp
在这里实现具体命令,同样是抄上面的

这里使用还没有用到的0x0045,
至此,就在固件中添加了上拉输入的功能(LINX理论上也支持custom command,可以不侵入源代码的情况下实现。但我试了一下,说MEGA2560不支持自定义命令,作罢)
btw,b站的编辑器真是巨垃圾,不支持MarkDown语法。粪中粪

