Q&A Home > 고객지원 > 기술지원 > Q&A
7445번 질문에 더하여...
카테고리Ubiquitous Sensor Network
작성자강나루 아이피121.175.230.105
작성일10-10-05 17:02 조회수2859
파일

     11 implementation {
     12     #define RecvBuffSize 10
     13     uint8_t RecvBuff[RecvBuffSize];
     14     uint8_t UartSendMsg[80];
     15     uint8_t recv_num;
     16     bool start_flag;
     17
     18     command result_t StdControl.init() {
     19         call Leds.init();
     20         call UARTControl.init();
     21         atomic {
     22             memset(RecvBuff, 0, RecvBuffSize);
     23             recv_num = 0;
     24             start_flag = 0;
     25         }
     26         return SUCCESS;
     27     }
     28
     29     command result_t StdControl.start() {
     30         call UARTControl.start();
     31         //call Timer.start(TIMER_REPEAT, 1000);
     32         return SUCCESS;
     33     }
     34
     35     command result_t StdControl.stop() {
     36         call UARTControl.stop();
     37         call Timer.stop();
     38         return SUCCESS;
     39     }
     40
     41     event result_t Timer.fired() {
     42         return SUCCESS;
     43     }
     44
     45     task void uart_process() {
     46         atomic {
     47             call SCSuartDBG.UARTSend(UartSendMsg, strlen(UartSendMsg));
     48         }
     49     }
     50
     51     async event void SCSuartDBG.UARTRecv(uint8_t recv_Char) {
     52         //call SCSuartDBG.UARTSend(UartSendMsg, strlen(UartSendMsg));
     53
     54         atomic {
     55
     56             if(start_flag == 0) {
     57                 recv_num = 0;
     58                 start_flag = 1;
     59             }
     60
     61             if(recv_num < RecvBuffSize && start_flag == 1) {
     62                 RecvBuff[recv_num] = recv_Char;
     63                 recv_num++;
     64
     65                 if(recv_num == RecvBuffSize) {
     66                     start_flag = 0;
     67                     post uart_process();
     68                 }
     69             }
     70         }
     71
     72     }
     73
     74
     75 }

안녕하세요. 답변 주신대로 해당 예제를 이용하여 일단 uart쪽 테스트를 위해 위와 같이 조금 수정을 해 보았습니다.
주요 내용은 10개의 문자열을 PC로부터 입력받아 버퍼에 채운 후, 이를 다시 PC로 전달하도록 조금 수정을 했습니다. 일반 시리얼 통신 프로그램을 이용하여 테스트 하였습니다만 send 메시지는 전송이 되는데, receive 메시지는 나타나지 않네요.
----------------------------------------
[RECV (256)] <-
[SEND (10)] -> abcdefghij
[RECV (256)] <-
[SEND (10)] -> abcdefghij
----------------------------------------

어느 부분이 문제인지 살펴봐 주시면 고맙겠습니다.
수고하세요.

 


다음글 HBE-RFID-REX 질문입니다.
이전글 안녕하세요 패킷구조에 관한 질문 드립니다

댓글 등록은 로그인 하신후 이용하실 수 있습니다.


HB_USN
2010-10-07 16:25 삭제
47 call SCSuartDBG.UARTSend(UartSendMsg, strlen(UartSendMsg));

위 라인에 문제가 있습니다. 아래와 같이 고쳐주시면 문제가 해결 될 것 같네요.

call SCSuartDBG.UARTSend(RecvBuff, recv_num);
119.203.239.59