Important changes to forums and questions
All forums and questions are now archived. To start a new conversation or read the latest updates go to forums.mbed.com.
10 years, 6 months ago.
Error in code for wifly
Hey I made the following code but I get an Error: Identifier "ws" is undefined in "main.cpp", Line: 73, Col: 2. The idea for the code is to receive a ECG input which is filtered and then sent to the mbed website. I cant seem to see where I went wrong. Would appreciate if someone cold point it out.
#include "mbed.h" #include "WiflyInterface.h" #include "Websocket.h" AnalogIn Ain(p20); #define NCoef 4 // NCoef is equal to 4 /* wifly object where: mbed - RN-XV * - p9 and p10 are for the serial communication - p3, p2 * - p11 is for the reset pin - p5 * - p26 is for the connection status - p15 * - "mbed" is the ssid of the network * - "password" is the password * - WPA is the security */ WiflyInterface wifly(p9, p10, p11, p26, "mbed", "1234567890", WPA); Ticker s2khz_tick; void s2khz_task(void); // Declare function float iir(float NewSample) { float ACoef[NCoef+1] = { 0.98440741971685686000, // coefficients -3.88963077749501010000, 5.81103181235840700000, -3.88963077749501010000, 0.98440741971685686000 }; float BCoef[NCoef+1] = { 1.00000000000000000000, // coefficients -3.90736054963595820000, 5.77290552976015550000, -3.82150735005017150000, 0.95654367650114913000 }; static float y[NCoef+1]; //output samples static float x[NCoef+1]; //input samples int n; //shift the old samples for(n=NCoef; n>0; n--) { x[n] = x[n-1]; y[n] = y[n-1]; } //Calculate the new output x[0] = NewSample; y[0] = ACoef[0] * x[0]; for(n=1; n<=NCoef; n++) y[0] += ACoef[n] * x[n] - BCoef[n] * y[n]; return y[0]; // return new filtered data } void s2khz_task(void) { float data_in, data_out, ecg; // Declaring float variables char package[30]; data_in=Ain; data_out=iir(data_in); // Retreiving new filtered data ecg=data_out; sprintf (package, "{\"ecg\":%f}", ecg); ws.send(package); } int main() { wifly.init(); // use DHCP while (!wifly.connect()); // join the network Websocket ws("ws://sockets.mbed.org:443/ws/ECG/wo"); ws.connect(); ws.send("Connected"); s2khz_tick.attach_us(&s2khz_task,500); // uses function every 500ms while(1); }
1 Answer
10 years, 6 months ago.
You declare ws within the scope of main in line 80, but you try to use ws inside the s2khz_task, where it is unknown. Try declaring it at or before line 61.
Thanks Wim. Ye stupid mistake. I moved it to line 7 and it compiles, however now I get lights of death so I must have a runtime error. I had two seperate programs, one for filtering and one for wifly connection and both work, so here I am trying to combine the two, but I am ust not seeing the problem, anyone have any ideas?
edit: After just trying the old code with the same edit, i.e. moving the ws to line 7, I got the same problem. Putting the ws on line 62 solved the problem, but I dont understand why it makes a difference if its on line 61 or line 7.
posted by 30 May 2014
Please use proper headline name for the feature, the error is in your code (=user) , not in the wifly library. Thanks !
posted by Martin Kojtal 30 May 2014