Revision | 42 (tree) |
---|---|
Zeit | 2017-10-14 21:06:33 |
Autor | azuma-fuji |
Bluetoothスタートを実装
@@ -15,6 +15,8 @@ | ||
15 | 15 | CGlobalVariable::CGlobalVariable() |
16 | 16 | { |
17 | 17 | timestamp = 0; |
18 | + global_bluetooth = NULL; | |
19 | + global_bluetooth_cmd = false; | |
18 | 20 | } |
19 | 21 | |
20 | 22 | CGlobalVariable::~CGlobalVariable() |
@@ -212,6 +212,8 @@ | ||
212 | 212 | void plusTimeStamp(); |
213 | 213 | |
214 | 214 | uint16_t global_rgb_value[FilLength]; |
215 | + FILE* global_bluetooth; | |
216 | + bool global_bluetooth_cmd; | |
215 | 217 | |
216 | 218 | private: |
217 | 219 | int timestamp; |
@@ -41,7 +41,12 @@ | ||
41 | 41 | |
42 | 42 | // 指定時間以上押した後、離されたタイミングで終了. |
43 | 43 | if(m_bDetected) |
44 | + { | |
45 | + m_bDetected = false; // 次回呼び出し時のために初期化. | |
44 | 46 | return true; |
47 | + } | |
48 | + | |
49 | + m_bDetected = false; // 離されたらfalseに | |
45 | 50 | } |
46 | 51 | break; |
47 | 52 |
@@ -60,5 +65,22 @@ | ||
60 | 65 | if(iTime >= MSEC500) |
61 | 66 | m_bDetected = true; |
62 | 67 | |
68 | + | |
69 | + // Bluetooth検知. | |
70 | + bool* pBT_CMD = &(CGlobalVariable::getInstance()->global_bluetooth_cmd); | |
71 | + if (*pBT_CMD == true) | |
72 | + { | |
73 | + // タッチセンサ押された状態でBT受け取るとバグるので、Releasedに初期化してから終わる. | |
74 | + m_State = TOUCH_RELEASED; | |
75 | + m_bDetected = false; | |
76 | + | |
77 | + *pBT_CMD = false; | |
78 | + | |
79 | + // BluetoothタスクKill. | |
80 | + ev3_stp_cyc(BLUETOOTH_RECIEVE_CYCLE_TASK); | |
81 | + | |
82 | + return true; | |
83 | + } | |
84 | + | |
63 | 85 | return false; |
64 | 86 | } |
@@ -158,11 +158,15 @@ | ||
158 | 158 | //ev3_lcd_draw_string("Reset Complete! ", 0, CALIB_FONT_HEIGHT*2); |
159 | 159 | //tslp_tsk(500); /* 10msecウェイト */ |
160 | 160 | |
161 | + // Bluetooth起動. | |
162 | + CGlobalVariable::getInstance()->global_bluetooth = ev3_serial_open_file(EV3_SERIAL_BT); | |
163 | + | |
161 | 164 | //************************************************************ |
162 | 165 | // 子タスク起動 |
163 | 166 | //************************************************************ |
164 | 167 | ev3_sta_cyc(MAIN_CYCLE_TASK); |
165 | 168 | ev3_sta_cyc(SAVE_RGB_FILTER_RESULT_CYCLE_TASK); |
169 | + ev3_sta_cyc(BLUETOOTH_RECIEVE_CYCLE_TASK); | |
166 | 170 | //ev3_sta_cyc(TAIL_TASK); |
167 | 171 | |
168 | 172 | //************************************************************ |
@@ -175,6 +179,7 @@ | ||
175 | 179 | //************************************************************ |
176 | 180 | ev3_stp_cyc(MAIN_CYCLE_TASK); |
177 | 181 | ev3_stp_cyc(SAVE_RGB_FILTER_RESULT_CYCLE_TASK); |
182 | + ev3_stp_cyc(BLUETOOTH_RECIEVE_CYCLE_TASK); // Bluetoothは生きてた時用にいちおう. | |
178 | 183 | //ev3_stp_cyc(TAIL_TASK); |
179 | 184 | |
180 | 185 | //************************************************************ |
@@ -381,9 +386,19 @@ | ||
381 | 386 | void bluetooth_receive_task(intptr_t exinf){ |
382 | 387 | |
383 | 388 | //ここにBluetoothとの通信に関すること記述. |
384 | - | |
385 | - | |
386 | - | |
389 | + FILE* pBT = CGlobalVariable::getInstance()->global_bluetooth; | |
390 | + bool* pBT_CMD = &(CGlobalVariable::getInstance()->global_bluetooth_cmd); | |
391 | + | |
392 | + uint8_t c = fgetc(pBT); /* 受信 */ | |
393 | + switch(c) | |
394 | + { | |
395 | + case '1': | |
396 | + *pBT_CMD = true; | |
397 | + break; | |
398 | + default: | |
399 | + break; | |
400 | + } | |
401 | + fputc(c, pBT); /* エコーバック */ | |
387 | 402 | } |
388 | 403 | |
389 | 404 | /// <summary> |