Arduino LINX 實現(xiàn)上拉輸入,并且實現(xiàn)對應VI以及C#調(diào)用(以MEGA2560PRO為例)(上)
思路:Arduino本身可以設置INPUT_PULLUP,而LINX中沒有。猜測原因是LINX在具體實現(xiàn)中將PINMODE設置為INPUT,并且沒有實現(xiàn)INPUT_PULLUP版本。因此只要修改LINX固件,增加PULLUP版本的實現(xiàn)即可。(如果不需要普通的浮空輸入,直接把源代碼里的INPUT改成INPUT_PULLUP即可,無須后續(xù)操作,這樣所有能上拉的輸入都會被上拉)
環(huán)境需求
Arduino IDE(用于燒錄修改后的固件)
LabView+MakerHUB包(用于導出固件以及在LabView中測試)
C#.NET framework4.8(我所使用的版本罷了)
導出固件

修改固件代碼(總共5個文件)
1. libraries\LinxArduinoMega2560\utility\LinxWiringDevice.h
增加函數(shù)聲明

2. libraries\LinxArduinoMega2560\utilityLinxWiringDevice.cpp
實現(xiàn)函數(shù)(直接抄上面的非PULLUP版本,改一下)
2個LinxDevice.h
添加函數(shù)聲明(其實可以發(fā)現(xiàn)LinxDevice是基類...應該可以直接修改基類而不用修改子類,但算了,瞎改改,全部都改了就是...
3.?libraries\LinxArduinoMega2560\utility\LinxDevice.h
4. libraries\LinxSerialListener\utility\LinxDevice.h

5.?libraries\LinxSerialListener\LinxListener.cpp
在這里實現(xiàn)具體命令,同樣是抄上面的

?這里使用還沒有用到的0x0045,
至此,就在固件中添加了上拉輸入的功能(LINX理論上也支持custom?command,可以不侵入源代碼的情況下實現(xiàn)。但我試了一下,說MEGA2560不支持自定義命令,作罷)
btw,b站的編輯器真是巨垃圾,不支持MarkDown語法。糞中糞