Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
BusSerial.cpp@1:62db8d68f92e, 2020-03-06 (annotated)
- Committer:
- ttrist
- Date:
- Fri Mar 06 16:38:11 2020 +0000
- Revision:
- 1:62db8d68f92e
- Parent:
- 0:418bb20836bd
- Child:
- 2:6895c7ec9db1
2020/3/7 add SendBusSerial(~);
Who changed what in which revision?
| User | Revision | Line number | New contents of line |
|---|---|---|---|
| ttrist | 0:418bb20836bd | 1 | #include "BusSerial.h" |
| ttrist | 0:418bb20836bd | 2 | |
| ttrist | 0:418bb20836bd | 3 | BusSerial::BusSerial(PinName tx, PinName rx,Timer *timer):BufferedSerial(tx,rx) |
| ttrist | 0:418bb20836bd | 4 | { |
| ttrist | 0:418bb20836bd | 5 | _timer = timer; |
| ttrist | 0:418bb20836bd | 6 | _timer -> start(); |
| ttrist | 0:418bb20836bd | 7 | } |
| ttrist | 0:418bb20836bd | 8 | |
| ttrist | 0:418bb20836bd | 9 | void BusSerial::GetBusSerial(uint8_t *Argument_Array, int myHead_ID, int RecieveData_sizeof, int BusSerialTimeout) |
| ttrist | 0:418bb20836bd | 10 | { |
| ttrist | 0:418bb20836bd | 11 | long BusSerialTimeout_start_t = _timer->read_ms(); //タイマーセット |
| ttrist | 0:418bb20836bd | 12 | for (int i = 0; i < RecieveData_sizeof; i++) *(Argument_Array + i) = 0; //データ初期化 |
| ttrist | 0:418bb20836bd | 13 | |
| ttrist | 0:418bb20836bd | 14 | //*** データ受信 ちゃんとなるまでループ(timeoutあり)*** |
| ttrist | 0:418bb20836bd | 15 | while (*Argument_Array != myHead_ID) { |
| ttrist | 0:418bb20836bd | 16 | //*** 1byte読み込み *** |
| ttrist | 0:418bb20836bd | 17 | if (readable() > 0) *Argument_Array = getc(); |
| ttrist | 0:418bb20836bd | 18 | |
| ttrist | 0:418bb20836bd | 19 | if (*Argument_Array == myHead_ID ) { |
| ttrist | 0:418bb20836bd | 20 | int old_i = 0; |
| ttrist | 0:418bb20836bd | 21 | //*** データ格納エリア *** |
| ttrist | 0:418bb20836bd | 22 | for (int i = 1; i < RecieveData_sizeof; i++) { |
| ttrist | 0:418bb20836bd | 23 | //格納中のtimeout処理用時間設定 |
| ttrist | 0:418bb20836bd | 24 | if (old_i != i) { |
| ttrist | 0:418bb20836bd | 25 | old_i = i; |
| ttrist | 0:418bb20836bd | 26 | BusSerialTimeout_start_t = _timer->read_ms(); //データ格納timeout用 |
| ttrist | 0:418bb20836bd | 27 | } |
| ttrist | 0:418bb20836bd | 28 | |
| ttrist | 0:418bb20836bd | 29 | //***データ格納部*** |
| ttrist | 0:418bb20836bd | 30 | if (readable() > 0) { |
| ttrist | 0:418bb20836bd | 31 | *(Argument_Array + i) = getc(); |
| ttrist | 0:418bb20836bd | 32 | } else { |
| ttrist | 0:418bb20836bd | 33 | if (_timer->read_ms() - BusSerialTimeout_start_t > BusSerialTimeout) break; |
| ttrist | 0:418bb20836bd | 34 | i--; |
| ttrist | 0:418bb20836bd | 35 | } |
| ttrist | 0:418bb20836bd | 36 | } |
| ttrist | 0:418bb20836bd | 37 | } |
| ttrist | 0:418bb20836bd | 38 | if (_timer->read_ms() - BusSerialTimeout_start_t > BusSerialTimeout) break;//timeout |
| ttrist | 0:418bb20836bd | 39 | } |
| ttrist | 1:62db8d68f92e | 40 | } |
| ttrist | 1:62db8d68f92e | 41 | |
| ttrist | 1:62db8d68f92e | 42 | void BusSerial::SendBusSerial(uint8_t *Argument_Array ,int RecieveData_sizeof){ |
| ttrist | 1:62db8d68f92e | 43 | for(int i=0;i<RecieveData_sizeof;i++) putc(*(Argument_Array+1)); |
| ttrist | 1:62db8d68f92e | 44 | } |