You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
IFB_dev/FC_InterfaceBoard/FC_InterfaceBoard.ino

168 lines
3.8 KiB
C++

#include "FC_InterfaceBoard.h"
#define CR "\r"
#define FIN "\n"
#define CRLF "\r\n"
#define RcvOK "OK\r"
#define RcvErr "ER\r"
#define MODE_DEBUG false
String IdeSerial; // for 485_0
void setup() {
// Serial setup (Debug)
Serial.begin(9600);
Serial.print("Version ::: ");
Serial.println(VERSION);
Serial.print("Comment ::: ");
Serial.println(COMMENT);
// modules setup (init.)
Ethernet_setup();
GPIO_setup();
RS485_setup();
// Timer set
MsTimer2::set(1, timer_1ms);
MsTimer2::start();
}
void loop() {
// wait for a new client:
//webReponse();
client = server.available();
if (client) {
String Buf_eth;
String message;
String cmd;
String cmdData;
unsigned int data[32];
int dataSize;
// check if client is connected
Serial.println("Client Connected!!!");
// Do What Message Command
while(client.connected()){
// read data check
if(client.available() > 0) {
char c ;//= client.read();
while((c = client.read())) {
if((c == '\n') && (Buff_Eth_Rd[strlen(Buff_Eth_Rd)-1] == '\r')){
write_buff_c(Buff_Eth_Rd, c);
break;
}else{
write_buff_c(Buff_Eth_Rd, c);
}
}
// 데이터를 수신했으므로 타임아웃 타이머 초기화
lastDataReceivedTime = millis();
}
message = read_buff(Buff_Eth_Rd);
// If data read
if(message != ""){
cmd = demuxCMD(message, &cmdData);
//Serial.println(">> " + message);
message = "";
//Serial.println(cmd);
if(cmd=="ALL?"){
client.print(Prcss_ALL_Read());
}
// GPIO
else if(cmd=="DO!"){
dataSize = demuxNum(cmdData, data);
client.print(Prcss_DO_Write(data, dataSize));
}else if(cmd=="AO!"){
dataSize = demuxNum(cmdData, data);
client.print(Prcss_AO_Write(data, dataSize));
}
// MC9
else if(cmd=="SV_1!"){
dataSize = demuxNum(cmdData, data);
client.print(Prcss_SV_Write_1(data, dataSize));
}else if(cmd=="AT_1!"){
dataSize = demuxNum(cmdData, data);
client.print(Prcss_AT_Write_1(data, dataSize));
}
else if(cmd=="SV_2!"){
dataSize = demuxNum(cmdData, data);
client.print(Prcss_SV_Write_2(data, dataSize));
}else if(cmd=="AT_2!"){
dataSize = demuxNum(cmdData, data);
client.print(Prcss_AT_Write_2(data, dataSize));
}
// Init
else if(cmd=="State?"){
client.print(cmd + " " + RcvOK + FIN);
}else if(cmd=="RngAO!"){
dataSize = demuxNum(cmdData, data);
client.print(Prcss_RngAO(data, dataSize));
Init_AO = true;
}else if(cmd=="ChMC9_1!"){
dataSize = demuxNum(cmdData, data);
client.print(Prcss_ChMC9_1(data, dataSize));
Init_MC9 = true;
}else if(cmd=="ChMC9_2!"){
dataSize = demuxNum(cmdData, data);
client.print(Prcss_ChMC9_2(data, dataSize));
Init_MC9 = true;
}
// Extra
else{
client.print(cmd + " " + RcvErr + FIN);
}
message = "";
}
// Debug
if(MODE_DEBUG){
//Serial.print("Received command: ");
//Serial.println(command);
}
// check Timeout
if (millis() - lastDataReceivedTime > timeoutPeriod) {
Serial.println("Client Disconnected... (Timeout)");
client.stop();
}
Periodic_run();
}
Serial.println("Client Disconnected...");
}
Periodic_run();
}
void AnalogIn_Print(){
for (int i = 0; i < Size_AI; i++) {
Serial.print(Values_AI[i]);
Serial.print("\t");
}
Serial.println();
}