-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathmodbusClient.cpp
More file actions
executable file
·70 lines (53 loc) · 1.62 KB
/
modbusClient.cpp
File metadata and controls
executable file
·70 lines (53 loc) · 1.62 KB
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
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
#include "modbusClient.h"
#include "videopanel.h"
#include<iostream>
#include <stdio.h>
#define MODBUS_IP "192.168.2.1" //"192.168.250.1"
#define MODBUS_PORT 502
using namespace std;
ModbusClient::ModbusClient(VideoPanel *v)
{
printf("[ModbusTcpClient] ip=%s port=%d\n", MODBUS_IP, MODBUS_PORT);
// create a modbus object
_modbus = new modbus(MODBUS_IP, MODBUS_PORT);
// set slave id
_modbus->modbus_set_slave_id(1);
printf("[ModbusTcpClient] connect start\n");
// connect with the server
if (_modbus->modbus_connect())
{
printf("[ModbusTcpClient] connect success!\n");
}
else{
printf("[ModbusTcpClient] connect failed!\n");
}
connect(v, &VideoPanel::modbusbeat, this, &ModbusClient::beat);
connect(v, &VideoPanel::modbussend_result, this, &ModbusClient::send_result);
}
void ModbusClient::beat()
{
if (_num == 0)
{
_modbus->modbus_write_register(0x01,0);
printf("[ModbusTcpClient] beat! ---- %x", 0x01);
_num = 1;
}
else
{
_modbus->modbus_write_register(0x01,1);
printf("[ModbusTcpClient] beat! ---- %x", 0x01);
_num = 0;
}
}
void ModbusClient::send_result(QString value)
{
// addr: 102 value : ok 01 , ng 02 (100,00 00 01 or 00 00 02 )
printf("[ModbusTcpClient] receive result:%s\n", value.toInt());
_modbus->modbus_write_register(0x01, value.toInt());
}
void ModbusClient::readReady()//在这里读的数据
{
uint16_t read_input_regs[1];
_modbus->modbus_read_holding_registers(0x01, 1, read_input_regs);
printf("[ModbusTcpClient] read:%d", read_input_regs[0]);
}