test
Dependencies: SDFileSystem USBHost mbed
main.cpp@0:c6745d5554d1, 2018-01-19 (annotated)
- Committer:
- USER10
- Date:
- Fri Jan 19 00:31:45 2018 +0000
- Revision:
- 0:c6745d5554d1
- Child:
- 1:16af9125437f
test
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
USER10 | 0:c6745d5554d1 | 1 | #include "mbed.h" |
USER10 | 0:c6745d5554d1 | 2 | #include "USBHostKeyboard.h" |
USER10 | 0:c6745d5554d1 | 3 | //#include "SDFileSystem.h" |
USER10 | 0:c6745d5554d1 | 4 | |
USER10 | 0:c6745d5554d1 | 5 | //キーボード取得データをTX1、RX1からシリアル通信で送信させる |
USER10 | 0:c6745d5554d1 | 6 | //SDカードに入力したデータを保存 |
USER10 | 0:c6745d5554d1 | 7 | //保存形式はcsv |
USER10 | 0:c6745d5554d1 | 8 | //保存場所はディレクトリ「keylog」内の「log」ファイル |
USER10 | 0:c6745d5554d1 | 9 | |
USER10 | 0:c6745d5554d1 | 10 | DigitalOut led(LED1); |
USER10 | 0:c6745d5554d1 | 11 | DigitalOut led2(LED2); |
USER10 | 0:c6745d5554d1 | 12 | DigitalOut led3(LED3); |
USER10 | 0:c6745d5554d1 | 13 | |
USER10 | 0:c6745d5554d1 | 14 | int i=0; |
USER10 | 0:c6745d5554d1 | 15 | |
USER10 | 0:c6745d5554d1 | 16 | Timer t; //タイマー宣言(繰り返しタイマー割り込み) |
USER10 | 0:c6745d5554d1 | 17 | LocalFileSystem local("keylog"); //mbed自体に保存 |
USER10 | 0:c6745d5554d1 | 18 | //SDFileSystem sd(p5, p6, p7, p8, "sd"); //SDファイル用通信ポートの指定 |
USER10 | 0:c6745d5554d1 | 19 | |
USER10 | 0:c6745d5554d1 | 20 | Serial pc1(p13, p14); //シリアル通信ポートの指定(tx1, rx1の順) |
USER10 | 0:c6745d5554d1 | 21 | //Serial pc(USBTX, USBRX); |
USER10 | 0:c6745d5554d1 | 22 | |
USER10 | 0:c6745d5554d1 | 23 | void onKey(uint8_t key) { |
USER10 | 0:c6745d5554d1 | 24 | pc1.printf("%c", key); //1文字PCへ送信(TX1、RX1のシリアル通信) |
USER10 | 0:c6745d5554d1 | 25 | //pc.printf("%c", key); |
USER10 | 0:c6745d5554d1 | 26 | i++; |
USER10 | 0:c6745d5554d1 | 27 | t.stop(); //キーを押すごとにタイマーストップ |
USER10 | 0:c6745d5554d1 | 28 | //リセットしていないのでラップタイム計測状態となる |
USER10 | 0:c6745d5554d1 | 29 | FILE *fp; |
USER10 | 0:c6745d5554d1 | 30 | fp = fopen("/keylog/keylog/log.csv", "a"); //「log.csv」ファイルを書き込み形式で開く |
USER10 | 0:c6745d5554d1 | 31 | fprintf(fp, "Key[%d], :,0x%x,:,%c,:,%0.2f\r\n", i, key, key, t.read()); //左から 入力順番:アスキーコード:入力した文字:経過時間 となる |
USER10 | 0:c6745d5554d1 | 32 | fclose(fp); |
USER10 | 0:c6745d5554d1 | 33 | |
USER10 | 0:c6745d5554d1 | 34 | t.start(); //タイマースタート(一周後からはリスタート) |
USER10 | 0:c6745d5554d1 | 35 | } |
USER10 | 0:c6745d5554d1 | 36 | |
USER10 | 0:c6745d5554d1 | 37 | void keyboard_task(void const *) { |
USER10 | 0:c6745d5554d1 | 38 | |
USER10 | 0:c6745d5554d1 | 39 | USBHostKeyboard keyboard; |
USER10 | 0:c6745d5554d1 | 40 | |
USER10 | 0:c6745d5554d1 | 41 | while(1) { |
USER10 | 0:c6745d5554d1 | 42 | while(!keyboard.connect()) |
USER10 | 0:c6745d5554d1 | 43 | Thread::wait(500); |
USER10 | 0:c6745d5554d1 | 44 | |
USER10 | 0:c6745d5554d1 | 45 | keyboard.attach(onKey); |
USER10 | 0:c6745d5554d1 | 46 | |
USER10 | 0:c6745d5554d1 | 47 | while(keyboard.connected()) //キーボードが切れるまで待つ |
USER10 | 0:c6745d5554d1 | 48 | Thread::wait(500); |
USER10 | 0:c6745d5554d1 | 49 | } |
USER10 | 0:c6745d5554d1 | 50 | } |
USER10 | 0:c6745d5554d1 | 51 | |
USER10 | 0:c6745d5554d1 | 52 | int main(){ |
USER10 | 0:c6745d5554d1 | 53 | |
USER10 | 0:c6745d5554d1 | 54 | mkdir("/keylog/keylog", 0777); //「keylog」ディレクトリ作成 |
USER10 | 0:c6745d5554d1 | 55 | FILE *fp; |
USER10 | 0:c6745d5554d1 | 56 | fp = fopen("/keylog/keylog/log.csv","w"); //「log.csv」ファイルを読込形式で開く |
USER10 | 0:c6745d5554d1 | 57 | fclose(fp); |
USER10 | 0:c6745d5554d1 | 58 | |
USER10 | 0:c6745d5554d1 | 59 | Thread keyboardTask(keyboard_task, NULL, osPriorityNormal, 256 * 4); |
USER10 | 0:c6745d5554d1 | 60 | while(1) { |
USER10 | 0:c6745d5554d1 | 61 | led=!led; |
USER10 | 0:c6745d5554d1 | 62 | Thread::wait(500); |
USER10 | 0:c6745d5554d1 | 63 | } |
USER10 | 0:c6745d5554d1 | 64 | } |