rs485 conversion

Dependencies:   mbed

Committer:
foxbrianr
Date:
Sun Jun 16 00:36:06 2019 +0000
Revision:
0:cc2f9ea8cd1f
demo microcom

Who changed what in which revision?

UserRevisionLine numberNew contents of line
foxbrianr 0:cc2f9ea8cd1f 1 #define speakf printf
foxbrianr 0:cc2f9ea8cd1f 2 class emic2 : public Stream
foxbrianr 0:cc2f9ea8cd1f 3 {
foxbrianr 0:cc2f9ea8cd1f 4 public :
foxbrianr 0:cc2f9ea8cd1f 5 emic2(PinName tx, PinName rx): _cmd(tx,rx) {
foxbrianr 0:cc2f9ea8cd1f 6 _cmd.baud(9600);
foxbrianr 0:cc2f9ea8cd1f 7 _cmd.putc('X'); //stop talking if reset and not a power on
foxbrianr 0:cc2f9ea8cd1f 8 _cmd.putc('\r'); // Send a CR in case the system is already up
foxbrianr 0:cc2f9ea8cd1f 9 wait(1); //delay for emic power on boot or reset respone
foxbrianr 0:cc2f9ea8cd1f 10 while (_cmd.getc() != ':'); // When the Emic 2 has initialized and is ready, it will send a single ':'
foxbrianr 0:cc2f9ea8cd1f 11 while (_cmd.readable()) _cmd.getc();//flush out buffer just in case
foxbrianr 0:cc2f9ea8cd1f 12 };
foxbrianr 0:cc2f9ea8cd1f 13 void ready() {
foxbrianr 0:cc2f9ea8cd1f 14 while (_cmd.getc() != ':');
foxbrianr 0:cc2f9ea8cd1f 15 while (_cmd.readable()) _cmd.getc();//flush out recieve buffer just in case
foxbrianr 0:cc2f9ea8cd1f 16 };
foxbrianr 0:cc2f9ea8cd1f 17 int readable() {
foxbrianr 0:cc2f9ea8cd1f 18 return _cmd.readable();
foxbrianr 0:cc2f9ea8cd1f 19 };
foxbrianr 0:cc2f9ea8cd1f 20 int getc() {
foxbrianr 0:cc2f9ea8cd1f 21 return _cmd.getc();
foxbrianr 0:cc2f9ea8cd1f 22 }
foxbrianr 0:cc2f9ea8cd1f 23 void volume(int x) {
foxbrianr 0:cc2f9ea8cd1f 24 speakf("V%D\r",x);
foxbrianr 0:cc2f9ea8cd1f 25 ready();
foxbrianr 0:cc2f9ea8cd1f 26 }
foxbrianr 0:cc2f9ea8cd1f 27 void voice(int x) {
foxbrianr 0:cc2f9ea8cd1f 28 speakf("N%D\r",x);
foxbrianr 0:cc2f9ea8cd1f 29 ready();
foxbrianr 0:cc2f9ea8cd1f 30 }
foxbrianr 0:cc2f9ea8cd1f 31 protected :
foxbrianr 0:cc2f9ea8cd1f 32 Serial _cmd;
foxbrianr 0:cc2f9ea8cd1f 33 //used by printf - supply it and printf works!
foxbrianr 0:cc2f9ea8cd1f 34 virtual int _putc(int c) {
foxbrianr 0:cc2f9ea8cd1f 35 _cmd.putc(c);
foxbrianr 0:cc2f9ea8cd1f 36 return 0;
foxbrianr 0:cc2f9ea8cd1f 37 };
foxbrianr 0:cc2f9ea8cd1f 38 virtual int _getc() {
foxbrianr 0:cc2f9ea8cd1f 39 return -1;
foxbrianr 0:cc2f9ea8cd1f 40 };
foxbrianr 0:cc2f9ea8cd1f 41 };