我正在尝试通过我的 Intel Galileo Gen2 板与 ModBusRTU 上的一些工业硬件进行通信。我使用此板将 UART 转换为 RS485 http://linksprite.com/wiki/index.php5?title=RS485_Shield_V2.1_for_Arduino并且我可以在 Arduino(在引脚 2/3 上使用 SoftwareSerial)和 Galileo(在 Serial1 上引脚 0/1)。所以我知道 RS485 的链接是有效的。
借助 Arduino Uno,我可以使用 ModBusRTU 与我的设备交谈,这要归功于这个库https://github.com/4-20ma/ModbusMaster
在 galileo gen2 上,我收到此警告“警告:库 ModbusMaster 声称在 [avr, sam] 架构上运行,并且可能与在 [i586] 架构上运行的当前板不兼容。”因为不同的架构.
现在我正在尝试为arduino、覆盆子和伽利略使用关于modbus和rs485的cooking hack教程示例,但我无法让它对我有用。我收到了大量的编译错误,如下所示:
C:\Intel\arduino-1.6.4\libraries\ModBusMaster485\ModbusMaster485.cpp:在成员函数'uint8_t ModbusMaster485::ModbusMasterTransaction(uint8_t)'中:C:\Intel\arduino-1.6.4\libraries\ModBusMaster485\ModbusMaster485。 cpp:701:50: 错误: '_crc16_update' 未在此范围内声明
C:\Intel\arduino-1.6.4\libraries\ModBusMaster485\ModbusMaster485.cpp:814:52: 错误: '_crc16_update' 未在此范围内声明
C:\Intel\arduino-1.6.4\libraries\ModBusMaster485\ModbusMaster485.cpp:在全局范围内:
C:\Intel\arduino-1.6.4\libraries\ModBusMaster485\ModbusMaster485.cpp:881:14: 错误:'unsigned int ModbusMaster485::makeWord(unsigned int)' 的原型与类 'ModbusMaster485' 中的任何内容都不匹配
在 C:\Intel\arduino-1.6.4\libraries\ModBusMaster485\ModbusMaster485.cpp:25:0: C:\Intel\arduino-1.6.4\libraries\ModBusMaster485\ModbusMaster485.h:302:11 中包含的文件中:错误:候选者是:uint16_t ModbusMaster485::makeWord(uint8_t, uint8_t)
C:\Intel\arduino-1.6.4\libraries\ModBusMaster485\ModbusMaster485.h:301:14: 错误:uint16_t ModbusMaster485::makeWord(uint16_t) C:\Intel\arduino-1.6.4\libraries\ModBusMaster485\ModbusMaster485。 cpp:887:14: 错误: 'unsigned int ModbusMaster485::makeWord(uint8_t, uint8_t)' 的原型与类 'ModbusMaster485' 中的任何内容都不匹配
在 C:\Intel\arduino-1.6.4\libraries\ModBusMaster485\ModbusMaster485.cpp:25:0: C:\Intel\arduino-1.6.4\libraries\ModBusMaster485\ModbusMaster485.h:302:11 中包含的文件中:错误:候选是:uint16_t ModbusMaster485::makeWord(uint8_t, uint8_t) C:\Intel\arduino-1.6.4\libraries\ModBusMaster485\ModbusMaster485.h:301:14: error: uint16_t ModbusMaster485::makeWord(uint16_t) 编译错误.
有人让 ModBus 在 Galileo Gen2 上工作吗?
谢谢你,阿尔多