String Prcss_ALL_Read(){ String str = ""; str += "AI?:"; for (int i = 0; i < Size_AI; i++) { int sum_AI = 0; for(int j = 0; j < AI_AVG_SIZE; j++) { sum_AI += Recent_AI[i][j]; } char formattedNumber[5]; // 4자리 숫자 + 널 종료 문자 //sprintf(formattedNumber, "%04X", Values_AI[i]); // 4자리로 고정된 형식의 문자열 생성 sprintf(formattedNumber, "%04X", sum_AI); // 4자리로 고정된 형식의 문자열 생성 str += formattedNumber; // 형식화된 문자열 추가 str += ','; } str += RcvOK; str += "DI?:"; char formattedNumber[5]; sprintf(formattedNumber, "%04X", Values_DI); str += formattedNumber; str += ','; str += RcvOK; str += "PV_1?:"; for (int i = 0; i < RS485_1_Rcv_size*2; i++) { char formattedNumber[5]; int rcv = int(RS485_1_Rcv_PV[i/RS485_1_Rcv_size]); sprintf(formattedNumber, "%04X", RS485_1_Values_PV[i] * rcv); str += formattedNumber; str += ','; } str += RcvOK; str += "SV_1?:"; for (int i = 0; i < RS485_1_Rcv_size*2; i++) { char formattedNumber[5]; int rcv = int(RS485_1_Rcv_SV[i/RS485_1_Rcv_size]); sprintf(formattedNumber, "%04X", RS485_1_Values_SV[i] * rcv); str += formattedNumber; str += ','; } str += RcvOK; return str + FIN; } String Prcss_DO_Write(unsigned int data[], int dataSize){ String str = "DO!:"; if(dataSize != 1){ str += RcvErr; return str + FIN; } unsigned int data0 = data[0]; for (int bit = 0; bit < 16; bit++) { digitalWrite(DoPin[bit], bitRead(data0, bit) ? HIGH : LOW); } str += RcvOK; return str + FIN; } String Prcss_AO_Write(unsigned int data[], int dataSize){ String str = "AO!:"; int d = 2; for(int i=0 ; i data[i+1]) ? data[i] : data[i+1]; }else{ rng = data[i]; } AO_setup(i, rng); delay(d); i++; // every 0 ch, not 1 ch. } str += RcvOK; return str + FIN; } String Prcss_ChMC9(unsigned int data[], int dataSize){ String str = "ChMC9!:"; int d = 20; for(int i=0 ; i