User | Revision | Line number | New contents of line |
gtg795y |
0:a6113b3c872b
|
1
|
#include "Serializer.h"
|
gtg795y |
0:a6113b3c872b
|
2
|
|
gtg795y |
0:a6113b3c872b
|
3
|
Serial pc(USBTX,USBRX);
|
gtg795y |
0:a6113b3c872b
|
4
|
|
gtg795y |
0:a6113b3c872b
|
5
|
Serializer::Serializer() {
|
gtg795y |
0:a6113b3c872b
|
6
|
serial=new Serial(p28,p27);
|
gtg795y |
0:a6113b3c872b
|
7
|
wait(2);
|
gtg795y |
0:a6113b3c872b
|
8
|
|
gtg795y |
0:a6113b3c872b
|
9
|
isBusy=0;
|
gtg795y |
0:a6113b3c872b
|
10
|
serial->attach(this, &Serializer::InterruptHandler);
|
gtg795y |
0:a6113b3c872b
|
11
|
}
|
gtg795y |
0:a6113b3c872b
|
12
|
|
gtg795y |
0:a6113b3c872b
|
13
|
Serializer::~Serializer() {
|
gtg795y |
0:a6113b3c872b
|
14
|
delete serial;
|
gtg795y |
0:a6113b3c872b
|
15
|
}
|
gtg795y |
0:a6113b3c872b
|
16
|
|
gtg795y |
0:a6113b3c872b
|
17
|
void Serializer::Reset() {
|
gtg795y |
0:a6113b3c872b
|
18
|
// if (serial->writeable())
|
gtg795y |
0:a6113b3c872b
|
19
|
// serial->printf("reset\r");
|
gtg795y |
0:a6113b3c872b
|
20
|
}
|
gtg795y |
0:a6113b3c872b
|
21
|
int Serializer::IsBusy() {
|
gtg795y |
0:a6113b3c872b
|
22
|
if (serial->writeable())
|
gtg795y |
0:a6113b3c872b
|
23
|
serial->printf("pids\r");
|
gtg795y |
0:a6113b3c872b
|
24
|
return isBusy;
|
gtg795y |
0:a6113b3c872b
|
25
|
|
gtg795y |
0:a6113b3c872b
|
26
|
}
|
gtg795y |
0:a6113b3c872b
|
27
|
void Serializer::Stop() {
|
gtg795y |
0:a6113b3c872b
|
28
|
if (serial->writeable())
|
gtg795y |
0:a6113b3c872b
|
29
|
serial->printf("stop\r");
|
gtg795y |
0:a6113b3c872b
|
30
|
}
|
gtg795y |
0:a6113b3c872b
|
31
|
|
gtg795y |
0:a6113b3c872b
|
32
|
int Serializer::GetCountLeft() {
|
gtg795y |
0:a6113b3c872b
|
33
|
return 0;
|
gtg795y |
0:a6113b3c872b
|
34
|
}
|
gtg795y |
0:a6113b3c872b
|
35
|
int Serializer::GetCountRight() {
|
gtg795y |
0:a6113b3c872b
|
36
|
return 0;
|
gtg795y |
0:a6113b3c872b
|
37
|
}
|
gtg795y |
0:a6113b3c872b
|
38
|
|
gtg795y |
0:a6113b3c872b
|
39
|
void Serializer::ClearCountLeft() {
|
gtg795y |
0:a6113b3c872b
|
40
|
if (serial->writeable())
|
gtg795y |
0:a6113b3c872b
|
41
|
serial->printf("clrenc 1\r");
|
gtg795y |
0:a6113b3c872b
|
42
|
}
|
gtg795y |
0:a6113b3c872b
|
43
|
void Serializer::ClearCountRight() {
|
gtg795y |
0:a6113b3c872b
|
44
|
if (serial->writeable())
|
gtg795y |
0:a6113b3c872b
|
45
|
serial->printf("clrenc 2\r");
|
gtg795y |
0:a6113b3c872b
|
46
|
}
|
gtg795y |
0:a6113b3c872b
|
47
|
|
gtg795y |
0:a6113b3c872b
|
48
|
void Serializer::ClearCount() {
|
gtg795y |
0:a6113b3c872b
|
49
|
if (serial->writeable())
|
gtg795y |
0:a6113b3c872b
|
50
|
serial->printf("clrenc 1 2\r");
|
gtg795y |
0:a6113b3c872b
|
51
|
}
|
gtg795y |
0:a6113b3c872b
|
52
|
|
gtg795y |
0:a6113b3c872b
|
53
|
void Serializer::SetSpeedLeft(int speed) {
|
gtg795y |
0:a6113b3c872b
|
54
|
if (serial->writeable())
|
gtg795y |
0:a6113b3c872b
|
55
|
serial->printf("mogo 1:%i\r", -speed);
|
gtg795y |
0:a6113b3c872b
|
56
|
}
|
gtg795y |
0:a6113b3c872b
|
57
|
void Serializer::SetSpeedRight(int speed) {
|
gtg795y |
0:a6113b3c872b
|
58
|
if (serial->writeable())
|
gtg795y |
0:a6113b3c872b
|
59
|
serial->printf("mogo 2:%i\r", -speed);
|
gtg795y |
0:a6113b3c872b
|
60
|
}
|
gtg795y |
0:a6113b3c872b
|
61
|
void Serializer::SetSpeed(int speed) {
|
gtg795y |
0:a6113b3c872b
|
62
|
if (serial->writeable())
|
gtg795y |
0:a6113b3c872b
|
63
|
serial->printf("mogo 1:%i 2:%i\r", -speed, -speed);
|
gtg795y |
0:a6113b3c872b
|
64
|
}
|
gtg795y |
0:a6113b3c872b
|
65
|
|
gtg795y |
0:a6113b3c872b
|
66
|
void Serializer::SetVPID(int a,int b,int c,int d) {
|
gtg795y |
0:a6113b3c872b
|
67
|
}
|
gtg795y |
0:a6113b3c872b
|
68
|
void Serializer::SetDPID(int a,int b,int,int) {
|
gtg795y |
0:a6113b3c872b
|
69
|
}
|
gtg795y |
0:a6113b3c872b
|
70
|
|
gtg795y |
0:a6113b3c872b
|
71
|
void Serializer::DiGoLeft(int dist,int speed) {
|
gtg795y |
0:a6113b3c872b
|
72
|
if (serial->writeable())
|
gtg795y |
0:a6113b3c872b
|
73
|
serial->printf("digo 1:%i:%i\r",-dist, speed);
|
gtg795y |
0:a6113b3c872b
|
74
|
}
|
gtg795y |
0:a6113b3c872b
|
75
|
void Serializer::DiGoRight(int dist,int speed) {
|
gtg795y |
0:a6113b3c872b
|
76
|
if (serial->writeable())
|
gtg795y |
0:a6113b3c872b
|
77
|
serial->printf("digo 2:%i:%i\r",-dist, speed);
|
gtg795y |
0:a6113b3c872b
|
78
|
}
|
gtg795y |
0:a6113b3c872b
|
79
|
void Serializer::DiGo(int dist,int speed) {
|
gtg795y |
0:a6113b3c872b
|
80
|
if (serial->writeable())
|
gtg795y |
0:a6113b3c872b
|
81
|
serial->printf("digo 1:%i:%i 2:%i:%i\r",-dist, speed, -dist, speed);
|
gtg795y |
0:a6113b3c872b
|
82
|
}
|
gtg795y |
0:a6113b3c872b
|
83
|
|
gtg795y |
0:a6113b3c872b
|
84
|
|
gtg795y |
0:a6113b3c872b
|
85
|
void Serializer::InterruptHandler() {
|
gtg795y |
0:a6113b3c872b
|
86
|
serial->getc();
|
gtg795y |
0:a6113b3c872b
|
87
|
/* pc.putc(serial->getc());
|
gtg795y |
0:a6113b3c872b
|
88
|
isBusy=1;
|
gtg795y |
0:a6113b3c872b
|
89
|
int isReady=0;
|
gtg795y |
0:a6113b3c872b
|
90
|
int len=0;
|
gtg795y |
0:a6113b3c872b
|
91
|
while (serial->readable()) {
|
gtg795y |
0:a6113b3c872b
|
92
|
rxBuffer[len++]=serial->getc();
|
gtg795y |
0:a6113b3c872b
|
93
|
if (len>96)break;
|
gtg795y |
0:a6113b3c872b
|
94
|
}
|
gtg795y |
0:a6113b3c872b
|
95
|
for (int i=0;i<len;i++) {
|
gtg795y |
0:a6113b3c872b
|
96
|
if ((rxBuffer[i]=='A')&&(rxBuffer[i+1]=='C')&&(rxBuffer[i+2]=='K')) {
|
gtg795y |
0:a6113b3c872b
|
97
|
if (i&&(rxBuffer[i-1]=='N'))
|
gtg795y |
0:a6113b3c872b
|
98
|
response=NEGATIVE;
|
gtg795y |
0:a6113b3c872b
|
99
|
else
|
gtg795y |
0:a6113b3c872b
|
100
|
response=WILCO;
|
gtg795y |
0:a6113b3c872b
|
101
|
continue;
|
gtg795y |
0:a6113b3c872b
|
102
|
}
|
gtg795y |
0:a6113b3c872b
|
103
|
if (rxBuffer[i]=='>'){
|
gtg795y |
0:a6113b3c872b
|
104
|
isReady=1;
|
gtg795y |
0:a6113b3c872b
|
105
|
break;
|
gtg795y |
0:a6113b3c872b
|
106
|
}
|
gtg795y |
0:a6113b3c872b
|
107
|
|
gtg795y |
0:a6113b3c872b
|
108
|
}
|
gtg795y |
0:a6113b3c872b
|
109
|
|
gtg795y |
0:a6113b3c872b
|
110
|
|
gtg795y |
0:a6113b3c872b
|
111
|
isBusy=0;
|
gtg795y |
0:a6113b3c872b
|
112
|
return;
|
gtg795y |
0:a6113b3c872b
|
113
|
*/
|
gtg795y |
0:a6113b3c872b
|
114
|
}
|