|
|
|
int write_buff_c(char* buff, char c) {
|
|
|
|
size_t len = strlen(buff);
|
|
|
|
if (len + 1 < BUFF_SIZE) {
|
|
|
|
buff[len] = c;
|
|
|
|
buff[len + 1] = '\0'; // 문자열의 끝을 나타내는 null 문자를 추가해야 합니다.
|
|
|
|
return 1;
|
|
|
|
} else {
|
|
|
|
Serial.println("Not enough space in buffer! (write c)");
|
|
|
|
return 0;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
int write_buff(char* buff, String str) {
|
[Command 및 Process 중간 완료]
- Ethernet을 통한 명령
ㄴ DO!, DI?, AI?, SV!, SV?, PV?
ㄴ AT!(MC9 AutoTune): 테스트 완료, 주석으로 정리해 놨음
ㄴ AO!: DAC 수령 후 작성 예정
- Buffer
ㄴ Write는 CRLF 확인 후 없으면 CRLF 추가 후 write
ㄴ Read는 CRLF 까지 데이터를 출력, CRLF는 미출력으로 필요시 read후 추가 필요
ㄴ 즉, Buffer는 CRLF를 기준으로 쓰기/읽기 진행, 기본적으로 입출력시 CRLF 제외되나, 저장시 CRLF 있는 경우 중복방지처리 됨
2 years ago
|
|
|
// check if last characters are not CRLF and append if not
|
|
|
|
if (!str.endsWith(CRLF)) {
|
|
|
|
str += CRLF;
|
|
|
|
}
|
|
|
|
|
|
|
|
const char* cstr = str.c_str();
|
|
|
|
size_t len = strlen(cstr);
|
|
|
|
if (strlen(buff) + len < BUFF_SIZE) {
|
|
|
|
strcat(buff, cstr);
|
|
|
|
numOf485++;
|
|
|
|
return 1;
|
|
|
|
} else {
|
|
|
|
Serial.println("Not enough space in buffer! (write)");
|
|
|
|
return 0;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
[Command 및 Process 중간 완료]
- Ethernet을 통한 명령
ㄴ DO!, DI?, AI?, SV!, SV?, PV?
ㄴ AT!(MC9 AutoTune): 테스트 완료, 주석으로 정리해 놨음
ㄴ AO!: DAC 수령 후 작성 예정
- Buffer
ㄴ Write는 CRLF 확인 후 없으면 CRLF 추가 후 write
ㄴ Read는 CRLF 까지 데이터를 출력, CRLF는 미출력으로 필요시 read후 추가 필요
ㄴ 즉, Buffer는 CRLF를 기준으로 쓰기/읽기 진행, 기본적으로 입출력시 CRLF 제외되나, 저장시 CRLF 있는 경우 중복방지처리 됨
2 years ago
|
|
|
|
|
|
|
int write_buff_first(char* buff, String str) {
|
|
|
|
const char* cstr = str.c_str();
|
|
|
|
size_t len = strlen(cstr);
|
|
|
|
if (strlen(buff) + len < BUFF_SIZE) {
|
|
|
|
char temp[BUFF_SIZE];
|
|
|
|
strcpy(temp, buff); // copy existing content to temp buffer
|
|
|
|
strcpy(buff, cstr); // copy new string to buffer
|
|
|
|
strcat(buff, temp); // append old content to buffer
|
|
|
|
numOf485++;
|
|
|
|
return 1;
|
|
|
|
} else {
|
|
|
|
Serial.println("Not enough space in buffer! (prepend)");
|
|
|
|
return 0;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
[Command 및 Process 중간 완료]
- Ethernet을 통한 명령
ㄴ DO!, DI?, AI?, SV!, SV?, PV?
ㄴ AT!(MC9 AutoTune): 테스트 완료, 주석으로 정리해 놨음
ㄴ AO!: DAC 수령 후 작성 예정
- Buffer
ㄴ Write는 CRLF 확인 후 없으면 CRLF 추가 후 write
ㄴ Read는 CRLF 까지 데이터를 출력, CRLF는 미출력으로 필요시 read후 추가 필요
ㄴ 즉, Buffer는 CRLF를 기준으로 쓰기/읽기 진행, 기본적으로 입출력시 CRLF 제외되나, 저장시 CRLF 있는 경우 중복방지처리 됨
2 years ago
|
|
|
|
|
|
|
String read_buff(char* buff) {
|
[Command 및 Process 중간 완료]
- Ethernet을 통한 명령
ㄴ DO!, DI?, AI?, SV!, SV?, PV?
ㄴ AT!(MC9 AutoTune): 테스트 완료, 주석으로 정리해 놨음
ㄴ AO!: DAC 수령 후 작성 예정
- Buffer
ㄴ Write는 CRLF 확인 후 없으면 CRLF 추가 후 write
ㄴ Read는 CRLF 까지 데이터를 출력, CRLF는 미출력으로 필요시 read후 추가 필요
ㄴ 즉, Buffer는 CRLF를 기준으로 쓰기/읽기 진행, 기본적으로 입출력시 CRLF 제외되나, 저장시 CRLF 있는 경우 중복방지처리 됨
2 years ago
|
|
|
char* pos = strstr(buff, CRLF);
|
|
|
|
String output = "";
|
|
|
|
if (pos != nullptr) {
|
|
|
|
size_t len = pos - buff;
|
|
|
|
output = String(buff).substring(0, len);
|
[Command 및 Process 중간 완료]
- Ethernet을 통한 명령
ㄴ DO!, DI?, AI?, SV!, SV?, PV?
ㄴ AT!(MC9 AutoTune): 테스트 완료, 주석으로 정리해 놨음
ㄴ AO!: DAC 수령 후 작성 예정
- Buffer
ㄴ Write는 CRLF 확인 후 없으면 CRLF 추가 후 write
ㄴ Read는 CRLF 까지 데이터를 출력, CRLF는 미출력으로 필요시 read후 추가 필요
ㄴ 즉, Buffer는 CRLF를 기준으로 쓰기/읽기 진행, 기본적으로 입출력시 CRLF 제외되나, 저장시 CRLF 있는 경우 중복방지처리 됨
2 years ago
|
|
|
//output += CRLF;
|
|
|
|
|
|
|
|
// Shift remaining string to the start
|
|
|
|
memmove(buff, pos + 2, strlen(pos + 2) + 1);
|
|
|
|
}
|
|
|
|
return output;
|
|
|
|
}
|