Bluetooth mérés program
Fork of RN42-HelloWorld by
Diff: main.cpp
- Revision:
- 3:cd566919776e
- Parent:
- 2:584102a0bf36
- Child:
- 4:acd929bf4c92
--- a/main.cpp Sun Mar 03 11:51:53 2013 +0000 +++ b/main.cpp Mon Mar 04 10:01:58 2013 +0000 @@ -1,29 +1,59 @@ #include "mbed.h" +#include <cstring> -Timer timer; -Ticker meres; -AnalogIn an(p15); -Serial rn42(p9,p10); -Serial pc(USBTX, USBRX); +Timer timer; // az időzítő, ami a mérés időpontját biztosítja +Ticker meres; // egy időzített feladat, ami végrehajta a mérést +AnalogIn an(p15); // az analóg pin +Serial rn42(p9,p10); // a bluetooth serial lábai +Serial pc(USBTX, USBRX);// a számítógépes serial kapcsolat DigitalOut myled(LED1); -int c; +char c; // egy karakter, amit kiolvas a serialread részben +char buf[250]; // a karaktersorozat gyűjtője +char p = 0; // a gyűjtő karaktersorozat aktív elemének az indexe +float szorzo = 3.3; // azaz [V]-ban kapom vissza az értékeket +char elinditva = 0; // 0 ha nem folyik mérés; 1 ha igen +float d_ido = 0.005; // két mérés között eltelt idő void mfunc() { - rn42.printf("%d %f\n",timer.read_ms(), an*3.3); + // mért adat bluetoothra küldése + rn42.printf("%d %f\n",timer.read_ms(), an*szorzo); +} + +void parancs(char cmd[]){ + pc.printf("\nparancs: %s\n",cmd); + if (strcmp(cmd,"start") == 0 && elinditva == 0){ + // azaz el akarom indítani a mérést. + timer.start(); + meres.attach(&mfunc, d_ido); + elinditva = 1; + } + if (strcmp(cmd,"stop") == 0 && elinditva == 1){ + // azaz meg akarom állítani a mérést. + meres.detach(); + timer.stop(); + timer.reset(); + elinditva = 0; + } } int main() { rn42.baud(115200); pc.baud(460800); - // mérés elindítása: - timer.start(); - meres.attach(&mfunc, 0.5); - // biztosítom, hogy kapjon adatot! + // biztosítom, hogy kapjon bejövő adatot! while (1) { while (rn42.readable()) { c = rn42.getc(); pc.putc(c); + if (c!='\n') { + buf[p++]=c; + } else { + pc.printf("%s\n",buf); + parancs(buf); + // visszaállítás a kezdeti értékre + memset(buf, 0, 100); + p=0; + } } } -} \ No newline at end of file +}