char TEST[]={0,};
TEST[0]='>'; //각 기기마다 선언되어있음
for(j=0;j<704;j++) //rx에서 받은 값 을 저장해서 다시 대입함
{
TEST[j] = RXTEST[j]; // RXTEST 는 유아트 rx 인터럽트로 받은값
}
//예를들어 3번기기에서 2번기기로 왔으면 RXTEST에는 41번부터 60번까지의 값이 들어있다.
[1번기기]
for(j=1;j<21;j++)
{
sprintf(TEST+ strlen(TEST),"(%02d)[%03d],",j,sensor[j]); //TEST 배열의 처음부터 값을 입력할려고합니다.
}
[2번기기]
for(j=21;j<41;j++)
{
sprintf(TEST + 200+ strlen(TEST),"(%02d)[%03d],",j,sensor[j]); //TEST 배열의 21*10 번쨰 값부터 입력할려고합니다.
} //여기서 10은 (%02d)[%03d], 이것의 고정 길이 입니다.
[3번기기]
for(j=41;j<61;j++)
{
sprintf(TEST+ 400+strlen(TEST),"(%02d)[%03d],",j,sensor[j]); //TEST 배열의 41*10 번쨰 값부터 입력할려고합니다.
} //여기서 10은 (%02d)[%03d], 이것의 고정 길이 입니다.
TEST[strlen(TEST)*3]=CR;
tx_data0(TEST, strlen(TEST));
위의 값을 입력 할려고 합니다. 그냥 for(j=0;j<61;j++) 안에 집어 넣으면 편하겠지만. 각 for문은 각각 다른 기기 입니다.
한마디로
ㅣ [3번기기]
ㅣ
ㅣ 배열 41 번 부터 60 번까지의 값을 대입완료후 uart로 [2번기기] 기기로 전달
ㅣ
ㅣ
ㅣ [2번기기]
ㅣ
ㅣ 배열 21 번 부터 40 번까지의 값을 대입완료후 [2번기기] 기기에서 전달 받은 값을 합해서
ㅣ 즉, 배열 21 번부터 60번 까지의 값을 uart 로 [1번기기] 로 전달
ㅣ
ㅣ [1번기기]
ㅣ
ㅣ 배열 1 번 부터 20 번까지의 값을 대입완료후 위에[1,2번 기기]에서 전달 받은 값을 더해서
ㅣ 총 1~60번 값을 타기기로 최종 전송
ㅣ
이런 상황입니다.
문제는 위와같은 상황으로 전송을 하니 맨 위값 밖에 안올라 갑니다. 혹시 빨간색으로 저장된 부분이 잘못된건가요?
아님 다른 문제가 있는걸까요?
[출처] sprintf 함수에 대한 질문입니다. (당근이의 AVR 갖구 놀기) |작성자 eogh |
'JA(EOGH) Q&A Carroty' 카테고리의 다른 글
AVR 타이머 OCR 공식에 대하여 (0) | 2018.08.17 |
---|---|
배열 크기 오류 질문 (0) | 2018.08.17 |
문자열을 배열에 넣는 방법 (0) | 2018.08.17 |
전압원의 전류변환 궁금증 질문 (0) | 2018.08.17 |
GPS 위성 수신 문제. (0) | 2018.08.17 |