123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172 |
- #include "ModbusUtils.h"
- #include <unistd.h>
- #include <iostream>
- #include <vector>
- #include "modbus/modbus.h"
- #define DEVICE_NAME "/dev/tty.usbserial-FT99NQSV0"
- using namespace server::utils;
- ModbusUtils::ModbusUtils() {}
- ModbusUtils::~ModbusUtils() {}
- bool ModbusUtils::connect() {
- context = modbus_new_rtu(DEVICE_NAME, 9600, 'N', 8, 1);
-
-
-
-
-
- if (context == NULL) {
- std::cout << " unable to create the context" << std::endl;
- return false;
- }
- if (modbus_connect(context) == -1) {
- std::cout << " enter the Connection failed function " << std::endl;
- std::cout << " Failed to connect " << std::endl;
- std::cout << "Error: " << modbus_strerror(errno) << std::endl;
- modbus_close(context);
- modbus_free(context);
- return false;
- }
- return true;
- }
- bool ModbusUtils::disconnect() {
- modbus_close(context);
- modbus_free(context);
- return true;
- }
- std::vector<uint16_t> ModbusUtils::read() {
- modbus_set_slave(context, 6);
- auto list = std::vector<uint16_t>();
- uint16_t registers[64];
- int count;
- count = modbus_read_registers(context, 2, 1, registers);
- for (auto i = 0; i < count; i++) {
-
- auto value = registers[i];
- list.push_back(value);
- }
- return list;
- }
|