-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathmain.c
More file actions
92 lines (81 loc) · 3.06 KB
/
Copy pathmain.c
File metadata and controls
92 lines (81 loc) · 3.06 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
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
#include <stdio.h>
#include "teste.h"
#include "writecoils.h"
#include "mapa.h"
#include "falhas.h"
#define PORTA_COM "/dev/ttyUSB0"
#define BAUDRATE 9600
void mostrarHeader() {
printf("=========================================\n");
printf("MODBUS RTU MASTER - PEDRO HENRIQUE DE ASSUMPÇÃO\n");
printf("=========================================\n\n");
}
void mostrarMenu() {
printf("1. Escrever múltiplos coils (0x0F)\n");
printf("2. Enviar comando com endereço inválido (teste de timeout)\n");
printf("3. Enviar função inválida (teste de exceção 01)\n");
printf("4. Enviar registrador inválido (teste de exceção 02)\n");
printf("5. Enviar valor inválido (teste de exceção 03)\n");
printf("6. Enviar quadro com CRC inválido (teste de erro de integridade)\n");
// TODO: Criar opção de conguração das variaveis globais como BAUDRATE, ENDEREÇO, TIMEOUT, etc
printf("x. Sair\n\n");
}
int main() {
mostrarHeader();
char opcao;
do {
mostrarMenu();
printf("Digite a opção desejada: ");
scanf(" %c", &opcao); // espaço ignora ENTER anterior
switch (opcao) {
case '1':
printf("\n1. Escrever múltiplos coils (0x0F)\n");
sendPosicao(); // writecoils.h
break;
case '2':
printf("\n2. Enviar comando com endereço inválido (teste de timeout)\n");
enviarEnderecoInvalido();
break;
case '3':
printf("\n3. Enviar função inválida (teste de exceção 01)\n");
enviarFuncaoInvalida();
break;
case '4':
printf("\n4. Enviar registrador inválido (teste de exceção 02)\n");
enviarRegistradorInvalido();
break;
case '5':
printf("\n5. Enviar valor inválido (teste de exceção 03)\n");
enviarValorInvalido();
break;
case '6':
printf("\n6. Enviar quadro com CRC inválido (teste de erro de integridade)\n");
enviarCRCInvalido();
break;
// funções internas para teste e desenvolvimento. Poderia ser deativadas com DEBUG=False
case 'T':
case 't':
printf("\nTeste Fixo\n");
teste();
break;
case 'l':
case 'L':
printf("\nTeste Mapa\n");
testeMapaCoils();
break;
case 'w':
case 'W':
printf("\nTeste Write Coils\n");
testeMultiplosCoils();
break;
case 'x':
case 'X':
printf("Saindo do programa...\n");
break;
default:
printf("Opção inválida! Tente novamente.\n");
}
printf("\n");
} while (opcao != 'x' && opcao != 'X');
return 0;
}