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();
    }
}
Revision:
1:833745ae8a7e
Parent:
0:40d65405e747
Child:
2:84178b3b2824
--- a/MjLineSerial.h	Tue Nov 18 14:43:37 2014 +0000
+++ b/MjLineSerial.h	Wed Nov 19 11:16:12 2014 +0000
@@ -2,6 +2,7 @@
 #define MJ_LINE_SERIAL_H
 
 #include "mbed.h"
+#include <vector>
 
 namespace matsujirushi {
 
@@ -11,10 +12,16 @@
     MjLineSerial(RawSerial *serial);
     int getc();
     int putc(int c);
+    int puts(const char *str);
     int printf(const char *format, ...);
 
+    void attachReadLine(void (*func)(const char *str));
+    void task();
+    
 private:
     RawSerial *baseSerial;
+    vector<char> rxBuffer;
+    void (*readLineFunc)(const char *str);
 
 };