JA(EOGH) Q&A Carroty

sprintf 함수에 대한 질문입니다.

풀등 2018. 8. 17. 11:40




sprintf 함수에 대한 질문입니다.|자유 게시판
2017.11.28. 18:41

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번 값을 타기기로 최종 전송

 


이런 상황입니다.


문제는 위와같은 상황으로 전송을 하니 맨 위값 밖에 안올라 갑니다. 혹시 빨간색으로 저장된 부분이 잘못된건가요?

아님 다른 문제가 있는걸까요?


  • 2017.11.28. 18:53답글

    신고

    char TEST[]={0,}; 
    이거의 크기는 1인데요?
    for(j=0;j<704;j++) //rx에서 받은 값 을 저장해서 다시 대입함
    {
    TEST[j] = RXTEST[j]; // RXTEST 는 유아트 rx 인터럽트로 받은값
    }
    이부분 부터 문제가 발생합니다.