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 인터럽트로 받은값
    }
    이부분 부터 문제가 발생합니다. 


'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
Posted by 풀등
,