Skip to content

Commit 36d378e

Browse files
committed
CHG: run communication test in .c; fixes included
1 parent fec21cf commit 36d378e

File tree

1 file changed

+27
-33
lines changed

1 file changed

+27
-33
lines changed

robotiq_hande_driver/src/communication_test.cpp renamed to robotiq_hande_driver/src/communication_test.c

Lines changed: 27 additions & 33 deletions
Original file line numberDiff line numberDiff line change
@@ -2,85 +2,79 @@
22
#include <unistd.h>
33
#include <modbus.h>
44

5-
#define SERVER_ID 0x09;
5+
#define SERVER_ID 0x09
66

77
int main(void) {
88
modbus_t *mb;
99
uint16_t tab_reg[32];
1010

11-
mb = modbus_new_tcp("/tmp/ttyUR", 115200, 'N', 8, 1);
12-
modbus_set_slave(SERVER_ID);
13-
modbus_set_debug(TRUE);
11+
mb = modbus_new_rtu("/tmp/ttyUR", 115200, 'N', 8, 1);
12+
modbus_set_slave(mb, SERVER_ID);
13+
modbus_set_debug(mb, TRUE);
1414
modbus_connect(mb);
1515
printf("\nConnected\n");
1616

17-
// /* Read 5 registers from the address 0 */
18-
// modbus_read_registers(mb, 2000, 6, tab_reg);
17+
// Read 5 registers from the address 0
18+
modbus_read_registers(mb, 2000, 6, tab_reg);
1919

20-
// printf("Status: %.2X %.2X %.2X %.2X %.2X %.2X\n" tab_reg[0], tab_reg[0], tab_reg[0], tab_reg[0], tab_reg[0], tab_reg[0]);
20+
printf("Status: %.4X %.4X %.4X %.4X %.4X %.4X\n", tab_reg[0], tab_reg[1], tab_reg[2], tab_reg[3], tab_reg[4], tab_reg[5]);
2121

2222

23-
// Modbus RTU example
23+
// Modbus RTU example
2424
printf("Step 1 Activation Request (clear and set rACT)\n");
25-
uint16_t activation_request_register_reset = [0x00, 0x00, 0x00];
25+
uint16_t activation_request_register_reset[3] = {0x0000, 0x0000, 0x0000};
2626
modbus_write_registers(mb, 0x03E8, 3, activation_request_register_reset);
2727

28-
uint16_t activation_request_register_set = [0x01, 0x00, 0x00];
28+
uint16_t activation_request_register_set[3] = {0x0100, 0x0000, 0x0000};
2929
modbus_write_registers(mb, 0x03E8, 3, activation_request_register_set);
3030

3131

3232
printf("Step 2: Read Gripper status until the activation is completed\n");
33-
uint16_t activation_status = [0x0000];
34-
uint16_t activation_status_not_complete = [0x1100];
35-
uint16_t activation_status_complete = [0x3100];
33+
uint16_t activation_status[1] = {0x0000};
34+
uint16_t activation_status_complete[1] = {0x3100};
3635

3736
modbus_read_registers(mb, 0x07D0, 1, activation_status);
3837

3938
while (activation_status[0] != activation_status_complete[0]){
40-
printf("Gripper not yet activated\n");
39+
printf("Gripper not yet activated: %.4X vs. %.4X\n", activation_status[0], activation_status_complete[0]);
4140
modbus_read_registers(mb, 0x07D0, 1, activation_status);
4241
usleep(100 * 1000); // ms * 1000
4342
}
44-
printf("Gripper activated\n");
43+
printf("Gripper activated, press any key to continue\n");
44+
getc(stdin);
4545

4646
printf("BYPASS: Step 3: Move the robot to the pick-up location\n");
4747

4848
printf("Step 4: Close the Gripper at full speed and full force\n");
49-
uint16_t close_gripper_request_register = [0x0900, 0x00FF, 0xFFFF];
49+
uint16_t close_gripper_request_register[3] = {0x0900, 0x00FF, 0xFFFF};
5050
modbus_write_registers(mb, 0x03E8, 3, close_gripper_request_register);
5151

5252
printf("Step 5: Read Gripper status until the grip is complete\n");
53-
uint16_t gripper_status_closing = [0x0000];
54-
uint16_t gripper_status_motion = [0x3900, 0x00FF, 0x0E0A];
55-
uint16_t gripper_status_closed_obj = [0xB900, 0x00FF, 0xBD00]; // gOBJ==0x02 or 0x03
56-
uint16_t gripper_status_requested_position_no_obj = [0xF900, 0x00FF, 0xBD00]; // gOBJ==0x02 or 0x03
53+
uint16_t gripper_status_closing[1] = {0x0000};
54+
uint16_t gripper_status_closed_obj[3] = {0xB900, 0x00FF, 0xBD00}; // gOBJ==0x02
55+
uint16_t gripper_status_requested_position_no_obj[3] = {0xF900, 0x00FF, 0xBD00}; // gOBJ==0x03
5756

5857
modbus_read_registers(mb, 0x07D0, 3, gripper_status_closing);
5958

60-
while (gripper_status_closing[0] != gripper_status_closed_obj[0] || gripper_status_closing[0] != gripper_status_requested_position_no_obj[0]){
61-
printf("Gripper not yet closed\n");
59+
while (gripper_status_closing[0] != gripper_status_closed_obj[0] && gripper_status_closing[0] != gripper_status_requested_position_no_obj[0]){
60+
printf("Gripper not yet closed: %.4X vs. %.4X\n", gripper_status_closing[0], gripper_status_requested_position_no_obj[0]);
6261
modbus_read_registers(mb, 0x07D0, 3, gripper_status_closing);
6362
usleep(100 * 1000); // ms * 1000
6463
}
65-
printf("Gripper closed. Wiating 2s before continuation\n");
64+
printf("Gripper closed, press any key to continue\n");
65+
getc(stdin);
6666

67-
sleep(2);
68-
6967
printf("BYPASS: Step 6: Move the robot to the release location\n");
7068

7169
printf("Step 7: Open the Gripper at full speed and full force\n");
72-
uint16_t open_gripper_request_register = [0x0900, 0x0000, 0xFFFF];
70+
uint16_t open_gripper_request_register[3] = {0x0900, 0x0000, 0xFFFF};
7371
modbus_write_registers(mb, 0x03E8, 3, open_gripper_request_register);
7472

7573
printf("Step 8: Read Gripper status until opening is complete\n");
76-
uint16_t gripper_status_opening = [0x0000];
77-
// uint16_t gripper_status_motion = [0x3900, 0x00FF, 0x0E0A];
78-
// uint16_t gripper_status_closed_obj = [0xB900, 0x00FF, 0xBD00]; // gOBJ==0x02 or 0x03
79-
// uint16_t gripper_status_requested_position_no_obj = [0xF900, 0x00FF, 0xBD00]; // gOBJ==0x02 or 0x03
80-
74+
uint16_t gripper_status_opening[1] = {0x0000};
8175
modbus_read_registers(mb, 0x07D0, 3, gripper_status_opening);
8276

83-
while (gripper_status_opening[0] != gripper_status_closed_obj[0] || gripper_status_opening[0] != gripper_status_requested_position_no_obj[0]){
77+
while (gripper_status_opening[0] != gripper_status_closed_obj[0] && gripper_status_opening[0] != gripper_status_requested_position_no_obj[0]){
8478
printf("Gripper not yet opened\n");
8579
modbus_read_registers(mb, 0x07D0, 3, gripper_status_opening);
8680
usleep(100 * 1000); // ms * 1000
@@ -91,4 +85,4 @@ int main(void) {
9185

9286
modbus_close(mb);
9387
modbus_free(mb);
94-
}
88+
}

0 commit comments

Comments
 (0)