contiki os でキーボード入力を取得する方法を知りたいです。
私はすでにgetchar()
、getch()
、を試しましたがscanf()
、gets()
どれもうまくいきませんでした。
contiki os でキーボード入力を取得する方法を知りたいです。
私はすでにgetchar()
、getch()
、を試しましたがscanf()
、gets()
どれもうまくいきませんでした。
getchar、getch、scanf、gets は、ファイル (stdin など) から読み取る POSIX のようなものです --- これらは Contiki には存在しません (おそらくネイティブ プラットフォームで使用できますが)。
したがって、最初に尋ねる質問は、使用しているプラットフォームと、「キーボード」とは何を意味するかです。キーボードがコンピュータからシリアル ポート経由で送信された文字を入力することを意味する場合、Contiki を実行しているモノでそれらがどこで受信されるかを知る必要があります。典型的な取り決めは、uart1 などの uart で文字を受け取ることです。
この場合、contiki は、アプリケーションによって定義される uart1_input_handler などのコールバックを使用します。プラットフォームのメイン ループは、input_handler に送信する文字があるかどうかを確認し、input_handler が定義されていることを確認します。もしそうなら、uart1_input_handler(c) のようなものを呼び出します。
uart1_input_handler を grep することで、さまざまなプラットフォームのこのコードを確認できます。
プラットフォーム/redbee-econotag/contiki-mc1322x-main.c: uart1_input_handler(uart1_getc());
cpu/msp430/dev/uart1x.c: if(uart1_input_handler(c)) {
cpu/stm32w108/dev/uart1.c: uart1_input_handler(c);
等...
入力ハンドラを登録して文字を処理するいくつかの例:
例/シェル:
/* set up the shell */
uart1_set_input(serial_line_input_byte);
serial_line_init();
serial_shell_init();
slip, in examples/ipv6/rpl-border-router/slip-bridge.c
slip_set_input_callback(slip_input_callback);
あなたがやりたいことについての私の推測は、シェルの例から始めて、それらを機能させようとすることです。