diff --git a/README.md b/README.md index 279e619..aeed105 100644 --- a/README.md +++ b/README.md @@ -7,9 +7,12 @@ Use one include file to replace the Serial.print from Arduino library. [What is the problem with Arduino Serial.print ?](#what-is-the-problem-with-arduino-serialprint-) [Example comparison between Didel TerSer and Arduino Serial](#example-comparison-between-didel-terser-and-arduino-serial) [Using tabular data](#using-tabular-data) +[How to switch from Arduino Serial](#howto-switch-from-arduino-serial) +[Installation](#terser-installation) +[Using tabular data](#using-tabular-data) [TerSer Limitations](#terser-limitations) [Code size and timing comparison](#code-size-and-timing-comparison) -[How to switch from Arduino Serial](#howto_switch) +[Function reference](#function-reference) ### What is the problem with Arduino Serial.print ? Serial.print is is most of the time used as a debugging tool, and with limited resources it is even more important to have the most lighweight solution for this task. @@ -24,28 +27,33 @@ It is admittedly very convenient to just use Serial.print(var); since it doesn't The TerSer.h offer the choice of 4 print format for numbers. Signed variables have a + or – sign in front. | Normal (moz=0) | Spaces (moz=1) | Zeros (moz=2) | Compact (moz=3) | Serial.print | | -------------- | -------------- | -------------- | -------------- | -------------- | + | ![moz0](docs/images/tab_moz0.png?raw=true "Example moz=0") | ![moz1](docs/images/tab_moz1.png?raw=true "Example moz=1") | ![moz2](docs/images/tab_moz2.png?raw=true "Example moz=2") | ![moz3](docs/images/tab_moz3.png?raw=true "Example moz=3") | ![Aserial](docs/images/tab_arduino_serial.png?raw=true "Example Arduino Serial.print") | - + ### How to switch from Arduino Serial If you are looking for a drop-in replacement for Arduino Serial with a smaller memory footprint follow the procedure outlined below to quickly switch your project to Didel TerSer: -* Add **#include ** at the top of your sketch or select the library from your Arduino IDE (*Sketch* | *Include Library*) +* Add ** #include ** at the top of your sketch or select the library from your Arduino IDE (*Sketch* | *Include Library*) * Use the either the library function names we provide or define your own function names, for example: -`#define Serialprint(x) Text(x)` + `#define Serialprint(x) Text(x)` * Search for all occurences or `Serial.print` and replace with `Serialprint` Voila, you have switched to TerSer and enjoy smaller footprint at less mcu cycles #### Function aliasing If you do not like our function/method names, feel free to define names that suit your tastes with i.e.: `#define Serialprint(x) Text(x)` + `#define Serialprint(x,BIN) Bin8(x)` + `#define Serialprint(x,BIN) Bin16(x)` + `#define Serialprint(x) Dec16(x)` + etc. ### TerSer Installation +Go to library manager in your Arduino IDE and search for 'TerSer'. - ### Example comparison between Didel TerSer and Arduino Serial | TerSer | Output TerSer | Output Serial | Arduino Serial | | ------------- | ------------- | ------------- | ------------- | @@ -60,6 +68,7 @@ etc. *uint16_t v16=1120; uint16_t v16b=20; int16_t v16s=20;* + ### Using tabular data Filling the non significative digits with zero or space is a general options, named ShowZ(); and HideZ(); @@ -77,6 +86,7 @@ HideZ();Dec8s(3); SetTab(15); It is up to you to add functions like TextNL(); if you need to keep your Serial.println() habits. + ### TerSer Limitations TerSer does not print floating point numbers. The may happen some day with one more file to import, e.g. names TerFloat.h. @@ -90,4 +100,26 @@ Code size has been obtained by calling one function at a time, compiler under th Execution time has been measured with a Nop replacing the SendCar function. The time depends on the baud rate, ~1 ms per character displayed at 9600 bits/s. +### Function reference +| TerSer function | | +| --------------- | --------------- | +| Car(cc); | Send code cc to the UART | +| cc=Get(); | Wait for a key depressed. Use Teraterm, too tricky with Arduino Terminal | +| Text("abcd"); | Send the text and add a space | +|Textln("abcd"); | Same with CRLF | +| CR(); | Send a CR-LF | +| Bin8(v); | Display the 8 low bits of the variable v, converted to integers (all add a space) | +| Bin16(v); | Display the 16 bits of the variable v, with a dot in the middle | +| Hex8(v); | Display the 2 nibbles of the variable v, converted to integers | +| Hex16(v); | Display the 4 nibbles of the variable v, converted to integers | +| Hex32(v); | Display the 8 nibbles of the variable v, converted to integers | +| Dec8(v); | Display the variable v, with its signs if signed and non-significative space or zeros | +| Dec16(v); | Display the variable v, with its signs if signed and non-significative space or zeros | +| Dec8u(unsigned); Dec8s(signed); | Shorter code | +| Dec16u(unsigned); Dec16s(signed); | Shorter code | +| Normal(); | ..+nnn default mode (a dot represents a space) | +| Spaces(); | +..nnn best for tabular data | +| Zeros(); | +00nnn if you prefer | +| Compact(); | +nnn same as Arduino, but a + is shown if positive signed variable | +