Skip to content

Commit 4e8450f

Browse files
committed
add README_J.md
1 parent 56d8e1b commit 4e8450f

File tree

2 files changed

+119
-0
lines changed

2 files changed

+119
-0
lines changed

README.md

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,8 @@
22

33
GG for Arduino is a serial console library. It also contains various functions for implementing the console.
44

5+
[日本語(Japanese)](README_J.md)
6+
57
## Console
68

79
You can implement a command line interface on your Arduino and add your own commands.

README_J.md

Lines changed: 117 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,117 @@
1+
# GG for Arduino
2+
3+
GG for Arduino はシリアルコンソールのライブラリです。コンソールを組み込むための補助的なツール(例えば printf()のような)を含みます。
4+
5+
## コンソール
6+
7+
Arduinoでコマンドラインインターフェース(コンソールの基本機能)が実現できます。もちろん自分で作ったコマンドの追加もできます。
8+
9+
### 通信仕様
10+
11+
* Arduinoの標準シリアル(Serial)
12+
* 115200BPS / 8bitデータ長 / ノンパリティ
13+
* エコーバックはGGが出す(端末でキーを打てば打ったキーが表示されます)
14+
* CR(\r)またはLF(\n)でコマンド実行
15+
16+
### 定義済みコマンド
17+
18+
* `help` コマンド一覧の表示
19+
* `md` メモリダンプ
20+
* `ms` メモリセット
21+
* `mf` メモリフィル(ブロックセット)
22+
* `tp` TP(テストポイント)の状態番号の表示と変更
23+
24+
### コマンドの追加方法
25+
26+
自分で作ったコマンドを追加できます。コマンド実装部(サブルーチン)にはコマンドラインのパラメータが argc と argv で渡されます。C言語の参考書や解説に「コマンドライン引数」を使ったmain()プログラムの例があると思います。これと同じですので参考にしてください。
27+
コマンド実装部(サブルーチン)ができたら登録します。
28+
下記の例をご覧ください。
29+
30+
* [GG_console_cmd.ino](examples/GG_console_cmd/GG_console_cmd.ino).
31+
32+
### コマンドラインインターフェースなしでコンソールを使う方法
33+
34+
コマンドラインインターフェース(コマンド受付機能)は使わないで、printf() のようなコンソールの出力機能だけ使うこともできます。
35+
下記の例をご覧ください。
36+
37+
* [GG_printf.ino](examples/GG_printf/GG_printf.ino).
38+
39+
### タイミング分析
40+
41+
TP(テストポイント)機能を使ってプログラムのタイミング分析ができます。
42+
サブルーチンの処理時間を測定することができます。また割込み処理やRTOSのタスク処理の状況確認にも使えます。
43+
44+
まず、分析するプログラムポイントにステータス番号コントロール(GG_TP_ON / GG_TP_OFF)を埋め込みます。 次に、tpコマンドを使用して、TP1またはTP2に出力するステータス番号を選択します。 ステータス番号はいつでもtpコマンドで切り替えることができます。
45+
46+
状態番号はいくつでも配置できますが、物理的な出力先はTP1とTP2の2つだけです。 Arduinoのピン数が制限されていることと、出力チェックは出力先が増えるだけCPU負荷が増加することから、出力先が2つに限定されています。
47+
48+
以下の例では、TP1はArduinoの2番ピン、TP2はArduinoの3番ピンです。TP1(2番ピン)はオシロスコープの黄色のCH1に接続され、TP2(3番ピン)は紫色のCH2に接続されています。 tpコマンド(tp 10 30)でTP1を状態番号10に設定し、TP2を状態番号30に設定しています。
49+
50+
* [GG_tp.ino](examples/GG_tp/GG_tp.ino).
51+
52+
![tp_10_30](tp_10_30.jpg "Y:TP1(status number 10),M:TP2(status number 30)")
53+
54+
## 利用できる関数/変数/定義
55+
56+
ヒープ(malloc)は使いません。
57+
58+
|関数 / 変数|仕様|
59+
|--|---|
60+
|***GG_for_Arduino.h***||
61+
|int gg_start(const char \*title)|GG for Arduino の開始|
62+
|int gg_tp1_no|TP1のArduinoピン番号. TP1を使うならgg_start()の前にセット|
63+
|int gg_tp2_no|TP2のArduinoピン番号. TP2を使うならgg_start()の前にセット|
64+
|long gg_con_baud|ボーレート. 115200から変更するならgg_start()の前にセット|
65+
|***gg_base.h***||
66+
|GG_TP_ON(number)|TP状態番号をON|
67+
|GG_TP_OFF(number)|TP状態番号をOFF|
68+
|***gg_uty.h***||
69+
|int gg_GetC(void)|1文字入力 (-1 = 入力なし)|
70+
|int gg_PutC(int c)|1文字出力|
71+
|int gg_PutS(const char \*s)|文字列出力|
72+
|int32_t gg_asc2int(char \*p)|文字列を整数に変換. '0x'で16進数と認識|
73+
|int16_t gg_mbuf_init(GGT_MBUF \*mbuf, void\* buf, int max)|ミニバッファツール. 初期化|
74+
|int16_t gg_mbuf_put(GGT_MBUF \*mbuf, int16_t d)|ミニバッファツール. 1バイト書込み|
75+
|int16_t gg_mbuf_get(GGT_MBUF \*mbuf)|ミニバッファツール. 1バイト読出し|
76+
|int16_t gg_mbuf_peek(GGT_MBUF \*mbuf, int16_t ix)|ミニバッファツール. のぞき見|
77+
|gg_time_t|GGでのみ有効な秒単位での総時間。 開始点(0)は2000年1月1日|
78+
|GGT_BCDTIME|日時の構造体(BCD)|
79+
|GGT_TIME|日時の構造体(整数)|
80+
|int gg_tim_bcd2dt(GGT_BCDTIME \*b, GGT_TIME \*t)|GGT_BCDTIMEからGGT_TIMEに変換|
81+
|int gg_tim_dt2bcd(GGT_TIME \*t, GGT_BCDTIME \*b)|GGT_TIMEからGGT_BCDTIMEに変換|
82+
|gg_time_t gg_tim_dt2tt(GGT_TIME \*t)|GGT_TIMEからgg_time_tに変換|
83+
|gg_time_t gg_tim_YYMMDD2tt(int YY, int MM, int DD)|年月日からgg_time_tに変換|
84+
|gg_time_t gg_tim_hhmmss2tt(int hh, int mm, int ss)|時分秒からgg_time_tに変換|
85+
|int gg_tim_tt2dt(gg_time_t x, GGT_TIME \*t)|gg_time_tからGGT_TIMEに変換|
86+
|int gg_tim_checkdt(GGT_TIME \*t)|日時のチェック|
87+
|int gg_tim_repairdt(GGT_TIME \*t)|日時が異常ならそれなりの値に修正|
88+
|int gg_tim_tt2week(gg_time_t x)|gg_time_tから曜日(0=日,1=月..6=土)に変換|
89+
|***gg_printf.h***||
90+
|int gg_vxprintf(int (\*putc)(int), const char \*fmt, va_list vlst)|putc()で出力するvprintf()|
91+
|int gg_xprintf(int (\*putc)(int), const char \*fmt, ...)|putc()で出力するprintf()|
92+
|int gg_printf(const char \*fmt, ...)|標準出力のprintf().%eは非実装|
93+
|int gg_vsprintf(char \*buf, const char \*fmt, va_list vlst)|buf(メモリ)に出力するvsprintf()|
94+
|int gg_sprintf(char \*buf, const char \*fmt, ...)|buf(メモリ)に出力するsprintf()|
95+
|gg_printDATE(gg_time_t)|"YY/MM/DD"|
96+
|gg_printTIME(gg_time_t)|"hh:mm:ss"|
97+
|gg_printDT(gg_time_t)|"YY/MM/DD hh:mm:ss"|
98+
|gg_printDTs(gg_time_t)|"YY/MM/DD hh:mm:ss "|
99+
|***gg_console.h***||
100+
|GG_CON_CMDADD(func, cmd, prm, help)|コンソールコマンド登録|
101+
|GG_CON_CMDMRK(title)|コマンド一覧での区切り行登録|
102+
|GG_CON|コンソール処理のワークエリア(内部で使用)|
103+
|int gg_con_MonInit(void)|コンソールの初期化|
104+
|char \*gg_con_prompt|プロンプト文字列. 初期値=">"|
105+
|int gg_con_MonRePrompt(void)|プロンプトの再表示|
106+
|int gg_con_MonPrompt(void)|プロンプトの表示 (内部で使用)|
107+
|int gg_con_Check(void)|gg_GetC()から1文字取得したらコンソールチェック処理|
108+
|int gg_con_MonCheck(int c)|コンソールチェック処理(c=-1のときは何もしない)|
109+
|int gg_con_MonExec(char \*buf)|コマンドライン1行の処理(注:argv分割のためbufの中は破壊される)|
110+
|int gg_con_MonBuf2Arg(char \*p, char \**argv, int argmax)|buf[]からargv解析(return = argc)(非リエントラント)|
111+
|int gg_con_MonExecArg(int argc, char \**argv)|argv[0]をコマンド名として登録コマンドを検索し、見つかればコマンド実装部を実行|
112+
|int gg_con_CmdInit(void)|コマンド登録リストの初期化|
113+
|int gg_con_CmdAdd(GGT_CMD \*def)|コマンド登録リストに追加|
114+
|int gg_con_CmdN(void)|コマンド登録数|
115+
|int gg_con_CmdHelp(char \*cmd)|cmdのヘルプ表示|
116+
|int gg_con_CmdHelpAll(void)|コマンド一覧の表示|
117+
|int gg_con_RegistCMD(void)|定義済みコマンドの登録(内部で使用)|

0 commit comments

Comments
 (0)