10 #ifndef LIBRARIES_EASYCOMM_H_ 11 #define LIBRARIES_EASYCOMM_H_ 20 #define RS485_TX_TIME 9 21 #define BUFFER_SIZE 256 22 #define BAUDRATE 19200 53 static uint16_t BufferCnt = 0;
55 String str1, str2, str3, str4, str5, str6;
62 if (incomingByte ==
'\n') {
63 buffer[BufferCnt] = 0;
64 if (buffer[0] ==
'A' && buffer[1] ==
'Z') {
65 if (buffer[2] ==
' ' && buffer[3] ==
'E' &&
77 rawData = strtok_r(Data,
" ", &Data);
78 strncpy(data, rawData + 2, 10);
83 rawData = strtok_r(Data,
" ", &Data);
84 if (rawData[0] ==
'E' && rawData[1] ==
'L') {
85 strncpy(data, rawData + 2, 10);
91 }
else if (buffer[0] ==
'V' && buffer[1] ==
'U') {
94 strncpy(data, Data + 2, 10);
99 }
else if (buffer[0] ==
'V' && buffer[1] ==
'D') {
102 strncpy(data, Data + 2, 10);
107 }
else if (buffer[0] ==
'V' && buffer[1] ==
'L') {
110 strncpy(data, Data + 2, 10);
115 }
else if (buffer[0] ==
'V' && buffer[1] ==
'R') {
118 strncpy(data, Data + 2, 10);
123 }
else if (buffer[0] ==
'S' && buffer[1] ==
'A' &&
124 buffer[2] ==
' ' && buffer[3] ==
'S' &&
130 str3 = String(
" EL");
133 rs485.
print(str1 + str2 + str3 + str4 + str5);
136 }
else if (buffer[0] ==
'R' && buffer[1] ==
'E' &&
137 buffer[2] ==
'S' && buffer[3] ==
'E' &&
142 str3 = String(
" EL");
145 rs485.
print(str1 + str2 + str3 + str4 + str5);
147 }
else if (buffer[0] ==
'P' && buffer[1] ==
'A' &&
148 buffer[2] ==
'R' && buffer[3] ==
'K' ) {
153 str3 = String(
" EL");
156 rs485.
print(str1 + str2 + str3 + str4 + str5);
159 }
else if (buffer[0] ==
'V' && buffer[1] ==
'E') {
162 str2 = String(
"SatNOGS-v2.2");
165 }
else if (buffer[0] ==
'I' && buffer[1] ==
'P' &&
168 str1 = String(
"IP0,");
172 }
else if (buffer[0] ==
'I' && buffer[1] ==
'P' &&
175 str1 = String(
"IP1,");
179 }
else if (buffer[0] ==
'I' && buffer[1] ==
'P' &&
182 str1 = String(
"IP2,");
186 }
else if (buffer[0] ==
'I' && buffer[1] ==
'P' &&
189 str1 = String(
"IP3,");
193 }
else if (buffer[0] ==
'I' && buffer[1] ==
'P' &&
196 str1 = String(
"IP4,");
200 }
else if (buffer[0] ==
'I' && buffer[1] ==
'P' &&
203 str1 = String(
"IP5,");
207 }
else if (buffer[0] ==
'I' && buffer[1] ==
'P' &&
210 str1 = String(
"IP6,");
214 }
else if (buffer[0] ==
'I' && buffer[1] ==
'P' &&
217 str1 = String(
"IP7,");
221 }
else if (buffer[0] ==
'I' && buffer[1] ==
'P' &&
224 str1 = String(
"IP8,");
228 }
else if (buffer[0] ==
'G' && buffer[1] ==
'S') {
234 }
else if (buffer[0] ==
'G' && buffer[1] ==
'E') {
240 }
else if(buffer[0] ==
'C' && buffer[1] ==
'R') {
242 if (buffer[3] ==
'1') {
248 }
else if (buffer[3] ==
'2') {
254 }
else if (buffer[3] ==
'3') {
260 }
else if (buffer[3] ==
'4') {
266 }
else if (buffer[3] ==
'5') {
272 }
else if (buffer[3] ==
'6') {
278 }
else if (buffer[3] ==
'7') {
284 }
else if (buffer[3] ==
'8') {
290 }
else if (buffer[3] ==
'9') {
297 }
else if (buffer[0] ==
'C' && buffer[1] ==
'W') {
299 if (buffer[2] ==
'1') {
301 rawData = strtok_r(Data,
",", &Data);
302 strncpy(data, rawData + 4, 10);
306 }
else if (buffer[2] ==
'2') {
308 rawData = strtok_r(Data,
",", &Data);
309 strncpy(data, rawData + 4, 10);
313 }
else if (buffer[2] ==
'3') {
315 rawData = strtok_r(Data,
",", &Data);
316 strncpy(data, rawData + 4, 10);
320 }
else if (buffer[2] ==
'4') {
322 rawData = strtok_r(Data,
",", &Data);
323 strncpy(data, rawData + 4, 10);
327 }
else if (buffer[2] ==
'5') {
329 rawData = strtok_r(Data,
",", &Data);
330 strncpy(data, rawData + 4, 10);
334 }
else if (buffer[2] ==
'6') {
336 rawData = strtok_r(Data,
",", &Data);
337 strncpy(data, rawData + 4, 10);
341 }
else if (buffer[2] ==
'7') {
343 rawData = strtok_r(Data,
",", &Data);
344 strncpy(data, rawData + 4, 10);
348 }
else if (buffer[2] ==
'8') {
350 rawData = strtok_r(Data,
",", &Data);
351 strncpy(data, rawData + 4, 10);
356 }
else if (buffer[0] ==
'R' && buffer[1] ==
'S' 357 && buffer[2] ==
'T') {
361 }
else if (buffer[0] ==
'R' && buffer[1] ==
'B') {
371 buffer[BufferCnt] = incomingByte;
379 for (uint16_t i = 0; input[i] !=
'\0'; i++) {
380 if (isalpha(input[i]))
double input
Motor Position feedback in deg.
void easycomm_proc()
Get the commands from RS485 and response to the client.
double setpoint
Position set point in deg.
void begin(uint16_t baudrate)
Initialize the RS485 transceiver.
#define BAUDRATE
Set the Baudrate of easycomm 3 protocol.
#define RS485_DIR
Digital output, to set the direction of RS485 communication.
enum _rotator_status rotator_status
Rotator status.
enum _rotator_error rotator_error
Rotator error.
bool switch_el
End-stop vales.
double park_el
Park position for both axis.
uint8_t available(void)
The number of chars/uint8_t that are available in RS485 buffer.
int8_t inside_temperature
Inside Temperature.
double speed
Motor Rotation speed in deg/s.
uint8_t read()
Read a char/uint8_t from RS485 bus.
void easycomm_init()
Initialize the RS485 bus.
double setpoint_speed
Speed set point in deg/s.
bool homing_flag
Homing flag.
enum _control_mode control_mode
Control mode.
Class that functions for easycomm 3 implementation.
void flush()
Waits for the transmission of outgoing serial data to complete.
void print(String str)
Print a string to RS485 bus.
#define RS485_TX_TIME
Delay "t"ms to write in serial for RS485 implementation.
Class that functions for interacting with a RS485 transceiver.
uint16_t load
Motor Load in mA.
#define BUFFER_SIZE
Set the size of serial buffer.
rs485 rs485(RS485_DIR, RS485_TX_TIME)
bool isNumber(char *input)