2

PIC C を使用して PIC18F4455 マイクロコントローラをプログラミングしています。USB_CDC.h ヘッダー ファイルを使用しています。「W250025」などの文字列を送信するプログラムがコンピュータ上にあります。ただし、usb_cdc_getc() を使用して最初の文字を取得すると、フリーズします。プログラムが 'T' のみを送信する場合があるため、実際には最初の文字だけを取得したいと考えています。

私のコードはなぜ過去に実行されないのですか? received=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);}
      }
4

2 に答える 2

1

PIC マイクロコントローラーの詳細はわかりませんが、それがusb_cdc_getc通常のように動作すると仮定するgetcと、最も可能性の高い原因は、キャラクターが通常はブロックする関数に到達していないことです。改行を送りますか?そもそもキャラクターが uC に到達していないハードウェアの問題である可能性もあります。

それが前者であり、望ましい動作ではない場合、ノンブロッキングのgetch同等物が存在する可能性があります。

于 2010-03-31T03:10:37.477 に答える