test

Dependencies:   SDFileSystem USBHost mbed

Committer:
USER10
Date:
Wed Jan 24 09:54:28 2018 +0000
Revision:
1:16af9125437f
Parent:
0:c6745d5554d1
mbed_HOST; ;

Who changed what in which revision?

UserRevisionLine numberNew contents of line
USER10 0:c6745d5554d1 1 #include "mbed.h"
USER10 0:c6745d5554d1 2 #include "USBHostKeyboard.h"
USER10 1:16af9125437f 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 Timer t; //タイマー宣言(繰り返しタイマー割り込み)
USER10 1:16af9125437f 15 SDFileSystem sd(p5, p6, p7, p8, "sd"); //SDファイル用通信ポートの指定
USER10 0:c6745d5554d1 16
USER10 0:c6745d5554d1 17 Serial pc1(p13, p14); //シリアル通信ポートの指定(tx1, rx1の順)
USER10 0:c6745d5554d1 18
USER10 0:c6745d5554d1 19 void onKey(uint8_t key) {
USER10 0:c6745d5554d1 20 pc1.printf("%c", key); //1文字PCへ送信(TX1、RX1のシリアル通信)
USER10 1:16af9125437f 21
USER10 0:c6745d5554d1 22 t.stop(); //キーを押すごとにタイマーストップ
USER10 0:c6745d5554d1 23 //リセットしていないのでラップタイム計測状態となる
USER10 0:c6745d5554d1 24 FILE *fp;
USER10 1:16af9125437f 25 fp = fopen("/sd/keylog/log.csv", "a"); //「keylog」ディレクトリ内の「log.csv」ファイルを書き込み形式で開く
USER10 1:16af9125437f 26 fprintf(fp, "Key,:,0x%x,:,%c,:,%0.2f\r\n", key, key, t.read()); //左から 入力順番:アスキーコード:入力した文字:経過時間 となる
USER10 0:c6745d5554d1 27 fclose(fp);
USER10 0:c6745d5554d1 28
USER10 0:c6745d5554d1 29 t.start(); //タイマースタート(一周後からはリスタート)
USER10 1:16af9125437f 30
USER10 0:c6745d5554d1 31 }
USER10 0:c6745d5554d1 32
USER10 0:c6745d5554d1 33 void keyboard_task(void const *) {
USER10 0:c6745d5554d1 34
USER10 0:c6745d5554d1 35 USBHostKeyboard keyboard;
USER10 0:c6745d5554d1 36
USER10 0:c6745d5554d1 37 while(1) {
USER10 0:c6745d5554d1 38 while(!keyboard.connect())
USER10 0:c6745d5554d1 39 Thread::wait(500);
USER10 0:c6745d5554d1 40
USER10 0:c6745d5554d1 41 keyboard.attach(onKey);
USER10 0:c6745d5554d1 42
USER10 0:c6745d5554d1 43 while(keyboard.connected()) //キーボードが切れるまで待つ
USER10 0:c6745d5554d1 44 Thread::wait(500);
USER10 0:c6745d5554d1 45 }
USER10 0:c6745d5554d1 46 }
USER10 0:c6745d5554d1 47
USER10 1:16af9125437f 48 int main(){
USER10 1:16af9125437f 49 mkdir("/sd/keylog", 0777); //「keylog」ディレクトリ作成
USER10 1:16af9125437f 50 FILE *fp = fopen("/sd/keylog/log.csv","w"); //「log.csv」ファイルを読込形式で開く
USER10 1:16af9125437f 51 if(fp == NULL) {
USER10 1:16af9125437f 52 error("Could not open file for write\n"); //この行がないと不具合が発生
USER10 1:16af9125437f 53 }
USER10 0:c6745d5554d1 54 fclose(fp);
USER10 0:c6745d5554d1 55
USER10 0:c6745d5554d1 56 Thread keyboardTask(keyboard_task, NULL, osPriorityNormal, 256 * 4);
USER10 0:c6745d5554d1 57 while(1) {
USER10 0:c6745d5554d1 58 led=!led;
USER10 0:c6745d5554d1 59 Thread::wait(500);
USER10 0:c6745d5554d1 60 }
USER10 0:c6745d5554d1 61 }