plotly interface based on ardunio sample code
Library for plotting a simple x/y scatter chart on the plot.ly website.
See plotly_HelloWorld for sample usage.
Diff: plotly.h.orig
- Revision:
- 7:9409a72ab6c0
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/plotly.h.orig Tue Jul 29 13:30:31 2014 +0000 @@ -0,0 +1,152 @@ +#ifndef plotly_streaming_ethernet_h +#define plotly_streaming_ethernet_h + +#include <EthernetInterface.h> +#include <TCPSocketConnection.h> + +// size of the large buffer used for constructing messages. +#define k_bufferSize 400 + + +/** Create a plot on plot.ly +* +* Based on the Ardunio code supplied by plot.ly +* +* Creates a streaming X/Y scatter plot with line on the plot.ly site. +* Update periods can be between 50ms and 60s due to limitations imposed by plot.ly. +* +* Requires an mbed with network support. +* +* Provided as is, it works for me but your mileage may vary. Sorry, I don't have time to offer much support on this. +* +* You will need to create a plot.ly account and then go to https://plot.ly/settings to get your API key and a streaming token. +* +* See Plotly_HelloWorld for a sample implimentation. +* +*/ + +class plotly +{ + public: + /** + @param username Your plot.ly username + @param api_key Your plot.ly API key + @param stream_token A plot.ly streaming token for your plot.ly account + @param filename The name of the file to save the chart as + */ + plotly(char *username, char *api_key, char* stream_token, char *filename); + /** + */ + ~plotly(); + + /** Initalises the chart + + This fucntion creates a blank chart on the plot.ly system and configures it to recieve streamed data using the specified token + + Time taken for this function can vary depending on network delays. + + If you wish to change any of the options line max points or world readability then make sure you change them BEFORE calling this function. + */ + bool init(); + + /** + Adds a point to the chart. The chart MUST be initalised before calling this. + Note, if the streaming network port is closed then this will attempt to open the port and re-establish the stream connection, this could block for a while. + + @param x The X value. + @param y The y value. + */ + void plot(unsigned long x, int y); + /** + Adds a point to the chart. The chart MUST be initalised before calling this. + Note, if the streaming network port is closed then this will attempt to open the port and re-establish the stream connection, this could block for a while. + + @param x The X value. + @param y The y value. + */ + void plot(unsigned long x, float y); + + /** + Adds a point to the chart. The chart MUST be initalised before calling this. + Note, if the streaming network port is closed then this will attempt to open the port and re-establish the stream connection, this could block for a while. + + @param x The X value. + @param y The y value. + */ + void plot(float x, float y); + + /** + Opens the streaming connection. + + Normally you'd do this after a sucessful call to init() and before starting plotting in order to avoid a connection delays when you first call plot() + */ + bool openStream(); + /** + closes the streaming connection + */ + void closeStream(); + + /** + output message level + Messages are sent to stderr (which defaults to the mBed USB programing/debug port). + 0 = Debugging, 1 = Informational, 2 = Status, 3 = Errors (default), 4 = Quiet + */ + int log_level; + + /** + set true to not actually connect to the network.. + */ + bool dry_run; + + /** + Maximum points to display on the streaming chart, once you go over this old points will no longer be displayed. + Defaults to 30 + */ + int maxpoints; + + /** + Sets whether the chart will be public or not. + Defaults to true + */ + bool world_readable; + + /** + Converts timestamps to the local time zone + */ + bool convertTimestamp; + /** + Timezone string to use + */ + char *timezone; + /** + Sets what to do if the file already exists, valid options are: + "new","overwrite" (default),"append","extend" + */ + char *fileopt; + + private: + + void reconnectStream(); + + bool print_(int d); + bool print_(unsigned long d); + bool print_(float d); + bool print_(char *d); + bool printNetTerminator_(); + + + bool sendFormatedText(char* data, int size); + + char buffer[512]; +// char rxBuffer[128]; + TCPSocketConnection *socket; + + char *username_; + char *api_key_; + char *stream_token_; + char *filename_; + + bool initalised; + +}; +#endif