PIC C - USB_CDC_GETC()并检索字符串

时间:2010-03-31 01:58:40

标签: c pic

我正在使用PIC C编程PIC18F4455微控制器。我正在使用USB_CDC.h头文件。我在计算机上有一个程序发送一个字符串,如“W250025”。但是,当我使用usb_cdc_getc()获取第一个char时,它会冻结。有时程序只发送'T',所以我真的想要得到第一个字符。

为什么我的代码永远不会执行过去= usb_cdc_getc();当我发送“W250025”?

if (usb_cdc_kbhit())
      {
         //printf(lcd_putc, "Check 3"); delay_ms(3000); printf(lcd_putc, "\f");
         received = usb_cdc_getc();
         printf(lcd_putc, "Received "); lcd_putc(received); delay_ms(3000); printf(lcd_putc, "\f");
         if (received == 'W'){   //waveform
            disable_interrupts(INT_TIMER1);
            set_adc_channel(0);
            load_and_print_array(read_into_int(), read_into_int());}
         else if (received == 'T'){ //temperature
            set_adc_channel(1);
            enable_interrupts(INT_TIMER1);}
      }

2 个答案:

答案 0 :(得分:1)

我不知道PIC单片机的具体细节,但是,假设usb_cdc_getc的行为与普通getc相似,最可能的原因是你的角色没有达到这个功能,通常是块。你发送换行符了吗?它也可能是一个硬件问题,其中角色首先没有到达你的uC。

如果是前者,而不是期望的行为,则可能存在非阻塞getch等效。

答案 1 :(得分:0)

也许这会有所帮助:

  

usb_cdc_getc() - 从接收缓冲区中获取一个字符。如果   它将等待直到接收缓冲区中没有数据   接收缓冲区中有数据。如果你不想要   要在无限循环中等待,请先使用usb_cdc_kbhit()   在致电usb_cdc_getc()之前检查是否有数据。"

来自https://github.com/tkrworks/PICnome-Firmware/blob/master/usb_cdc.h