Bluetooth mérés program

Fork of RN42-HelloWorld by Chris Styles

Committer:
szabolor
Date:
Mon Mar 04 10:20:42 2013 +0000
Revision:
4:acd929bf4c92
Parent:
3:cd566919776e
Bluetoothon kereszt?l lehet ?ll?tani az delta id?t ?s a szorz?t is!

Who changed what in which revision?

UserRevisionLine numberNew contents of line
chris 0:c1134839fe1a 1 #include "mbed.h"
szabolor 3:cd566919776e 2 #include <cstring>
szabolor 4:acd929bf4c92 3 #include <cstdio>
chris 0:c1134839fe1a 4
szabolor 3:cd566919776e 5 Timer timer; // az időzítő, ami a mérés időpontját biztosítja
szabolor 3:cd566919776e 6 Ticker meres; // egy időzített feladat, ami végrehajta a mérést
szabolor 3:cd566919776e 7 AnalogIn an(p15); // az analóg pin
szabolor 3:cd566919776e 8 Serial rn42(p9,p10); // a bluetooth serial lábai
szabolor 3:cd566919776e 9 Serial pc(USBTX, USBRX);// a számítógépes serial kapcsolat
chris 0:c1134839fe1a 10 DigitalOut myled(LED1);
szabolor 3:cd566919776e 11 char c; // egy karakter, amit kiolvas a serialread részben
szabolor 3:cd566919776e 12 char buf[250]; // a karaktersorozat gyűjtője
szabolor 3:cd566919776e 13 char p = 0; // a gyűjtő karaktersorozat aktív elemének az indexe
szabolor 3:cd566919776e 14 float szorzo = 3.3; // azaz [V]-ban kapom vissza az értékeket
szabolor 3:cd566919776e 15 char elinditva = 0; // 0 ha nem folyik mérés; 1 ha igen
szabolor 3:cd566919776e 16 float d_ido = 0.005; // két mérés között eltelt idő
chris 0:c1134839fe1a 17
szabolor 2:584102a0bf36 18 void mfunc() {
szabolor 3:cd566919776e 19 // mért adat bluetoothra küldése
szabolor 3:cd566919776e 20 rn42.printf("%d %f\n",timer.read_ms(), an*szorzo);
szabolor 3:cd566919776e 21 }
szabolor 3:cd566919776e 22
szabolor 3:cd566919776e 23 void parancs(char cmd[]){
szabolor 3:cd566919776e 24 pc.printf("\nparancs: %s\n",cmd);
szabolor 3:cd566919776e 25 if (strcmp(cmd,"start") == 0 && elinditva == 0){
szabolor 3:cd566919776e 26 // azaz el akarom indítani a mérést.
szabolor 3:cd566919776e 27 timer.start();
szabolor 3:cd566919776e 28 meres.attach(&mfunc, d_ido);
szabolor 3:cd566919776e 29 elinditva = 1;
szabolor 4:acd929bf4c92 30 } else
szabolor 3:cd566919776e 31 if (strcmp(cmd,"stop") == 0 && elinditva == 1){
szabolor 3:cd566919776e 32 // azaz meg akarom állítani a mérést.
szabolor 3:cd566919776e 33 meres.detach();
szabolor 3:cd566919776e 34 timer.stop();
szabolor 3:cd566919776e 35 timer.reset();
szabolor 3:cd566919776e 36 elinditva = 0;
szabolor 4:acd929bf4c92 37 } else
szabolor 4:acd929bf4c92 38 if (sscanf(cmd,"set%*[ ]time%*[ ]%f",&d_ido)==1){
szabolor 4:acd929bf4c92 39 // azaz beállítom a mérések közötti időt
szabolor 4:acd929bf4c92 40 } else
szabolor 4:acd929bf4c92 41 if (sscanf(cmd,"set%*[ ]scale%*[ ]%f",&szorzo)==1){
szabolor 4:acd929bf4c92 42 // azaz beállítom a mérés szorzóját
szabolor 3:cd566919776e 43 }
szabolor 4:acd929bf4c92 44
szabolor 2:584102a0bf36 45 }
szabolor 2:584102a0bf36 46
chris 0:c1134839fe1a 47 int main() {
chris 0:c1134839fe1a 48 rn42.baud(115200);
szabolor 1:581f6547e8aa 49 pc.baud(460800);
szabolor 2:584102a0bf36 50
szabolor 3:cd566919776e 51 // biztosítom, hogy kapjon bejövő adatot!
chris 0:c1134839fe1a 52 while (1) {
szabolor 1:581f6547e8aa 53 while (rn42.readable()) {
szabolor 1:581f6547e8aa 54 c = rn42.getc();
szabolor 1:581f6547e8aa 55 pc.putc(c);
szabolor 3:cd566919776e 56 if (c!='\n') {
szabolor 3:cd566919776e 57 buf[p++]=c;
szabolor 3:cd566919776e 58 } else {
szabolor 3:cd566919776e 59 pc.printf("%s\n",buf);
szabolor 3:cd566919776e 60 parancs(buf);
szabolor 3:cd566919776e 61 // visszaállítás a kezdeti értékre
szabolor 3:cd566919776e 62 memset(buf, 0, 100);
szabolor 3:cd566919776e 63 p=0;
szabolor 3:cd566919776e 64 }
chris 0:c1134839fe1a 65 }
chris 0:c1134839fe1a 66 }
szabolor 3:cd566919776e 67 }