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
- Committer:
- matsujirushi
- Date:
- 2014-11-20
- Revision:
- 4:14ef86f5de57
- Parent:
- 3:e730a11160d7
- Child:
- 5:b7902dd4ab46
File content as of revision 4:14ef86f5de57:
#ifndef MJ_LINE_SERIAL_H #define MJ_LINE_SERIAL_H #include "mbed.h" #include <vector> #include <queue> namespace matsujirushi { class MjLineSerial { public: MjLineSerial(RawSerial *serial); int putc(int c); int puts(const char *str); int printf(const char *format, ...); void attachReadLine(void (*func)(const char *str)); void task(); const char *txDelimiter; private: RawSerial *baseSerial; vector<char> rxBuffer; queue<char> txBuffer; void (*readLineFunc)(const char *str); }; } // namespace matsujirushi #endif