2015-10-13 3 views
1

у меня есть эта проблема, я есть STM32 Nucleo L152RE и SIM Shield 900, теперь, если я пишу эту простую нить все работают хорошо,Chibios и SIM900 Shiled

'static THD_WORKING_AREA(waRead, 128); 
    static THD_FUNCTION(Thread,arg) { 
    (void)arg; 
    chRegSetThreadName("th_callback"); 
    while (TRUE){ 
    /* This will wait for a character to be received */ 
    uint8_t c = sdGet(&SD1); //questo prende il carattere 
    sdPut(&SD2, c); // questo lo spara alla terminale 
    } 
    } 

' когда я песок В commnad я вижу ответ ok. Теперь я создать этот буфер

'static uint8_t bufferMsg[128];' 

и я использую эту тему для магазина ответ

' static THD_WORKING_AREA(waRead5, 128); 
static THD_FUNCTION(Thread5,arg) { 
    chRegSetThreadName("th_Riempio_Buffer"); 
    msg_t charbuf; 
    int count=0; 
    uint8_t c; 
    event_listener_t Uart1Data; 

    eventmask_t flags; 
chEvtRegisterMask((event_source_t *)chnGetEventSource(&SD1), &Uart1Data, EVENT_MASK(1)); 

    while (TRUE) { 
     chEvtWaitOneTimeout(EVENT_MASK(1), MS2ST(10)); 
     chSysLock(); 
     flags =chEvtGetAndClearFlags(&Uart1Data); 
     chSysUnlock(); 
     if (flags & CHN_INPUT_AVAILABLE) 
       { 
        do 
        { 
        charbuf = chnGetTimeout(&SD1,TIME_IMMEDIATE); 
         if (charbuf != Q_TIMEOUT) 
          { 
         while((charbuf != '\n') && (count < 128)) { 
          sdWrite(&SD2, (uint8_t *)B3,4); // va bene 
          bufferMsg[count]= charbuf; 
            count++; 
            } 
           } 
          } 
        while (charbuf != Q_TIMEOUT); 
       } 
     } 
} 
' 

это тема, не работает и не храните ответ, вы можете мне помочь?

наилучшими пожеланиями А.

ответ

0

FOT меня я использую,

Определять

#define buffer_size 128 
char buffer[buffer_size + 1]; 
int nbytes = 0; 

Функция

void SIM_callback(){    /* GSM900 Serial */ 
    char x = SIM.getc(); 
    buffer[nbytes] = x; 
    nbytes++; if (nbytes > buffer_size) nbytes = buffer_size; 
    buffer[nbytes] = '\0'; 
} 

Главная

main(){ 
    // Clear Buffer 
    buffer[nbytes] = '\0'; 
    ... 
    while(1); 
    ... 
} 

 Смежные вопросы

  • Нет связанных вопросов^_^