Command line interface for UART.
UARTでコマンドラインインターフェースを実現するためのライブラリです。
UARTからコマンドが入力されるとReadLine関数をコールバックします。
コマンドのデリミタはCR(0x0d)です。
コマンドはバックスペースで消去できます。
#include "mbed.h" #include "MjLineSerial.h" using namespace matsujirushi; RawSerial pc(USBTX, USBRX); MjLineSerial line(&pc); void readLineFunc(const char *str) { if (strcmp(str, "apple") == 0) { line.puts("RINGO"); } else if (strcmp(str, "orange") == 0) { line.puts("MIKAN"); } else { line.puts("unknown."); } line.puts("\r\n"); line.putc('>'); } int main() { pc.baud(115200); line.attachReadLine(readLineFunc); line.putc('>'); for (;;) { line.task(); } }
MjLineSerial.h@4:14ef86f5de57, 2014-11-20 (annotated)
- Committer:
- matsujirushi
- Date:
- Thu Nov 20 13:21:03 2014 +0000
- Revision:
- 4:14ef86f5de57
- Parent:
- 3:e730a11160d7
- Child:
- 5:b7902dd4ab46
Add txDelimieter member.
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
matsujirushi | 0:40d65405e747 | 1 | #ifndef MJ_LINE_SERIAL_H |
matsujirushi | 0:40d65405e747 | 2 | #define MJ_LINE_SERIAL_H |
matsujirushi | 0:40d65405e747 | 3 | |
matsujirushi | 0:40d65405e747 | 4 | #include "mbed.h" |
matsujirushi | 1:833745ae8a7e | 5 | #include <vector> |
matsujirushi | 3:e730a11160d7 | 6 | #include <queue> |
matsujirushi | 0:40d65405e747 | 7 | |
matsujirushi | 0:40d65405e747 | 8 | namespace matsujirushi { |
matsujirushi | 0:40d65405e747 | 9 | |
matsujirushi | 0:40d65405e747 | 10 | class MjLineSerial |
matsujirushi | 0:40d65405e747 | 11 | { |
matsujirushi | 0:40d65405e747 | 12 | public: |
matsujirushi | 0:40d65405e747 | 13 | MjLineSerial(RawSerial *serial); |
matsujirushi | 2:84178b3b2824 | 14 | |
matsujirushi | 0:40d65405e747 | 15 | int putc(int c); |
matsujirushi | 1:833745ae8a7e | 16 | int puts(const char *str); |
matsujirushi | 0:40d65405e747 | 17 | int printf(const char *format, ...); |
matsujirushi | 0:40d65405e747 | 18 | |
matsujirushi | 1:833745ae8a7e | 19 | void attachReadLine(void (*func)(const char *str)); |
matsujirushi | 1:833745ae8a7e | 20 | void task(); |
matsujirushi | 1:833745ae8a7e | 21 | |
matsujirushi | 4:14ef86f5de57 | 22 | const char *txDelimiter; |
matsujirushi | 4:14ef86f5de57 | 23 | |
matsujirushi | 0:40d65405e747 | 24 | private: |
matsujirushi | 0:40d65405e747 | 25 | RawSerial *baseSerial; |
matsujirushi | 1:833745ae8a7e | 26 | vector<char> rxBuffer; |
matsujirushi | 3:e730a11160d7 | 27 | queue<char> txBuffer; |
matsujirushi | 1:833745ae8a7e | 28 | void (*readLineFunc)(const char *str); |
matsujirushi | 2:84178b3b2824 | 29 | |
matsujirushi | 0:40d65405e747 | 30 | }; |
matsujirushi | 0:40d65405e747 | 31 | |
matsujirushi | 0:40d65405e747 | 32 | } // namespace matsujirushi |
matsujirushi | 0:40d65405e747 | 33 | |
matsujirushi | 0:40d65405e747 | 34 | #endif |