2011-11-06 6 views
1

Cを使用して、シリアルポート経由でpic32プロセッサからターミナルエミュレータへの文字をエコーすることを試みています。ユーザーは文字列を入力するように求められ、ユーザーが入力したときに文字が画面に表示されます。これは、ユーザからのリアルタイムメニュー選択のために後で使用することができる最初のプログラムを設定するためだけである。以下の例:ここではCのシリアルポートに文字をエコーする

main() 
{ 
    // 1. init the console serial port 
    initU2(); 

    // 2. text prompt 
    clrscr(); 
    home();  
    fputs("Enter some text: ", stdout); 
    puts(stdout); 

    // 3. main loop 
    while (1) 
    { 
     // 3.1 read a full line of text 
     getsn(stdout, sizeof(stdout)); 
     // 3.2 send a string to the serial port 
     puts(stdout); 
    } // main loop 
} // main 

は、私は、コマンドライン(入力に関わらず、ユーザーからか)で取得されるものです:

Enter some text: ÿÿÿÿ

私は単にしかし、端末プログラム画面に文字をエコーすることができますユーザーの種類の文字を入力する必要がある場合、Cプログラムは応答していないようです。どんな助けもありがとう!

+0

この何stdioの-libですか? puts()は通常、 'char *'パラメータを必要とします。 getsn()とは何ですか? stdinから読みますか? –

+0

あなたが書いたCコードは、pic32のコードですか?あなたのコードで定義されていないいくつかの関数を呼び出すようです。これらの関数はどこに定義されていますか? 'puts(stdout);の目的は何ですか?オシロスコープが便利ですか? –

答えて

3

あなたは書きました:

fputs("Enter some text: ", stdout); 
puts(stdout); 

私はプットへの通話が無効だと思います。通常のCライブラリのputsでは文字列へのポインタが渡されますが、stdoutには文字列ではありません。その結果、いくつかの迷惑メールがシリアルポートで送信されるのが見えています。

puts行を削除するか、このようにコードを変更するのいずれか試してみてください:

puts("Enter some text: "); 
+0

私は自分のコードを少し考え直さなければならないかもしれませんが、これらの関数のいくつかはpic32にネイティブであり、私は標準のCライブラリを使用しようとしています。とにかくみんなありがとう:) –

関連する問題