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
----------------------------------------
어느 부분이 문제인지 살펴봐 주시면 고맙겠습니다.
수고하세요.
|