test

Dependencies:   SDFileSystem USBHost mbed

Committer:
USER10
Date:
Fri Jan 19 00:31:45 2018 +0000
Revision:
0:c6745d5554d1
Child:
1:16af9125437f
test

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 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 }