-
Notifications
You must be signed in to change notification settings - Fork 7
/
direct_tests.c
77 lines (53 loc) · 1.59 KB
/
direct_tests.c
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
#include <fcntl.h>
#include <termios.h>
#include <stdio.h>
#define BAUDRATE B9600
#define MODEMDEVICE "/dev/ttyS10"
int CalculaFCS(char *cads)
{
int i,r;
r=0;
for(i=0;i<=strlen(cads)-1;i++) {
r=(r ^ cads[i]);
printf("%c,",cads[i]);
}
return r;
}
main()
{
int fd,c,res,i;
struct termios oldtio,newtio;
char buf[255],ins[10];
printf("Obrint el port...\n");
fd = open(MODEMDEVICE,O_RDWR | O_NOCTTY);
if (fd<0) {
perror(MODEMDEVICE);
exit(-1);
}
tcgetattr(fd,&oldtio); // Guarda els valors actuals del port
bzero(&newtio,sizeof(newtio)); // Buida els valors per iniciar-los
printf("Configurant el port...\n");
// Inicialitzar el tipus de transmisió de dades
//
// OMROM CPM1: 9600,7,E,2
//
newtio.c_cflag = BAUDRATE | CRTSCTS | CS7 | CSTOPB | PARENB | CLOCAL | CREAD;
newtio.c_iflag = ICRNL;
newtio.c_oflag = 0;
newtio.c_lflag = ICANON; // Tipus d'entrada canònica
// Inicialitzar el temps d'espera
newtio.c_cc[VTIME] = 10;
newtio.c_cc[VMIN] = 5;
tcflush(fd,TCIFLUSH);
tcsetattr(fd,TCSANOW,&newtio);
bcopy("@00MM40*\r\0",&buf,10);
bcopy("@00MM",&ins,6);
printf("%s %2x\n",ins,CalculaFCS(ins));
printf("Enviant petició d'estat...\n");
write(fd,buf,10);
printf("Esperant resposta...\n");
res = read(fd,buf,255);
buf[res]=0;
printf("resposta: %s",buf);
tcsetattr(fd,TCSANOW,&oldtio);
}