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.

37 lines
1.1 KiB
Arduino

String demuxCMD(String command, unsigned int data[], int* dataSize) {
command.replace(" ", "");
// "::"를 기준으로 문자열을 분리
int separatorIndex = command.indexOf("::");
String leftPart = command.substring(0, separatorIndex);
String rightPart = command.substring(separatorIndex + 2);
// 우측의 16진수 배열을 분리하여 추출
const char* delimiter = ",";
int startIndex = 0;
int endIndex = rightPart.indexOf(delimiter);
int index = 0;
while (endIndex >= 0) {
String hexValue = rightPart.substring(startIndex, endIndex);
// 16진수 문자열을 16진수 숫자로 변환하여 data 배열에 저장
data[index] = strtoul(hexValue.c_str(), NULL, 16);
index++;
startIndex = endIndex + 1;
endIndex = rightPart.indexOf(delimiter, startIndex);
}
// 남은 마지막 16진수 배열 원소 처리
String hexValue = rightPart.substring(startIndex);
data[index] = strtoul(hexValue.c_str(), NULL, 16);
index++;
// dataSize에 배열 크기 저장
*dataSize = index;
// 왼쪽 부분인 "ABC"을 반환
return leftPart;
}