描述
向 Slave 节点发送读写 Holding Registers 暂存器的封包指令。
语法
node1.readWriteMultipleRegisters(read_address, read_size, write_address, write_size) node2.readWriteMultipleRegisters(read_address, read_size) - 参数所搭配的函式与使用方法不同,详见范例以示说明。 
参数
node1/node2: ModbusMasterNode 物件。
read_address:欲读取的 Holding Registers 暂存器之起始位址。
read_size:欲读取的 Holding Registers 暂存器之大小。
write_address:欲写入的 Holding Registers 暂存器之起始位址。
write_size:欲写入的 Holding Registers 暂存器之大小。
回传
int:如果成功回传 MODBUS_SUCCESS,反之回传 EXCEPTION_CODE 。
范例
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 | #include <Arduino.h>
 #include <Modbus86.h>
   ModbusMaster bus1;
 ModbusMasterNode node1;
   uint8_t reg[2];
 uint8_t result;
 uint32_t receiveData;
   voidsetup()
 {
     while(!Serial);
     Serial1.begin(115200);
     bus1.begin(MODBUS_RTU, Serial1);
     node1.attach(16, bus1); 
       reg[0] = 0x1234;
     reg[1] = 0xabcd;
     node1.setTransmitBuffer(0, reg[0], MODBUS_DATAMODE_UINT16);
     node1.setTransmitBuffer(1, reg[1], MODBUS_DATAMODE_UINT16);
     result = node1.readWriteMultipleRegisters(5, 2, 10, 2);
       if(result != MODBUS_SUCCESS) {
         Serial.print("readWriteMultipleRegisters => ErrorCode: ");
         Serial.println(result);
     } else{
         Serial.print("From Holding Register receiveData: ");
         receiveData = node1.getResponseBuffer(0)
                     | (node1.getResponseBuffer(1) << 16);
         Serial.println(receiveData);
     }
 }
   voidloop()
 {
 }
 | 
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 | #include <Arduino.h>
 #include <Modbus86.h>
   ModbusMaster bus1;
 ModbusMasterNode node2;
   uint8_t reg[2];
 uint8_t result;
 uint32_t receiveData;
   voidsetup()
 {
     while(!Serial);
     bus1.begin(MODBUS_RTU,Serial1);
     node2.attach(16, bus1); 
       reg[0] = 0x1234;
     reg[1] = 0xabcd;
     node2.beginTransmission(10);
     node2.send(reg[0]);
     node2.send(reg[1]);
     result = node2.readWriteMultipleRegisters(5, 2);
       if(result != MODBUS_SUCCESS) {
        Serial.print("readWriteMultipleRegisters => 错误代码: ");
        Serial.println(result);
      } else{
         Serial.print("从保持寄存器接收数据: ");
         receiveData = node2.getResponseBuffer(0)
                    | (node2.getResponseBuffer(1) << 16);
        Serial.println(receiveData);
     
   voidloop()
 {
   | 
参考
setTransmitBuffer()
beginTransmission()
send()
getResponseBuffer()
86Duino参考资料的文本遵循知识共享署名-相同方式共享3.0许可证。参考已资料中的方案码示例发布到领域。