나는이 같은 문자열 전송에서 제대로 문자열을받을 방법 : 때문에, $ 13 -14,283,4, -4,17,6, -240, -180 #는 UART
은 그러나 나타나지 않습니다 버퍼가 '오버로드'되면 어떻게 전체 문자열을받을 수 있습니까? 또는 어떻게 각 바이트를 읽은 후 지울 수 있습니까?
// get a character string
char *getsU2(char *s, int len) {
char *p = s; // copy the buffer pointer
do {
*s = getU2(); // get a new character
if ((*s=='\r') || (*s=='\n')) // end of line...
break; // end the loop s++;
// increment the buffer pointer
len--;
} while (len>1); // until buffer is full
*s = '\0'; // null terminate the string
return p; // return buffer pointer
}
// get a character string
char *getsU2(char *s, int len) {
char *p = s; // copy the buffer pointer
do {
*s = getU2(); // get a new character
if ((*s=='\r') || (*s=='\n')) // end of line...
break; // end the loop
s++;
// increment the buffer pointer
len--;
} while (len>1); // until buffer is full
*s = '\0'; // null terminate the string
return p; // return buffer pointer
}
char getU2(void) {
if(U2STAbits.OERR == 1)
{ U2STAbits.OERR = 0; }
while (!U2STAbits.URXDA); // wait for new character to arrive return U2RXREG;
// read character from the receive buffer }
getsU2(buffer,sizeof(buffer));
들여 쓰기 (당신을 위해 편집 됨)에 익숙해지고 좋은 코딩 스타일을 선택하십시오. –
마이크로 컨트롤러 용입니까? 언제 "버퍼 오버로딩"에 대한 오류가 발생합니까? –
getU2 코드 조각이 불완전한 것처럼 보입니다. 나는 return 문을 보지 않는다. "buffer"변수의 선언은 무엇입니까? – user957902