{"id":150,"date":"2022-02-03T16:56:56","date_gmt":"2022-02-03T16:56:56","guid":{"rendered":"https:\/\/www.bleuio.com\/blog\/?p=150"},"modified":"2022-07-01T10:36:05","modified_gmt":"2022-07-01T10:36:05","slug":"plotting-real-time-graph-from-bluetooth-device-using-c","status":"publish","type":"post","link":"https:\/\/www.bleuio.com\/blog\/plotting-real-time-graph-from-bluetooth-device-using-c\/","title":{"rendered":"Plotting real-time graph from Bluetooth device using C#"},"content":{"rendered":"\n<p><strong>Bluetooth Low Energy (BLE)<\/strong>&nbsp;is a low power wireless technology used to connect devices. It is a popular communication method, especially in the Internet of Things era. Several devices around the house have a built-in Bluetooth transceiver, and most of them provide useful capabilities to automate jobs. This technology is widely used in the healthcare, fitness, beacons, security, and home entertainment industries. For that reason, it is really interesting to create a desktop application using C# that plot a real-time graph of values from <a href=\"https:\/\/www.hibouair.com\/\">HibouAir &#8211; Air Quality Monitor<\/a> using BleuIO.<\/p>\n\n\n\n<p>For this project, <a href=\"http:\/\/bleuio.com\/\" data-type=\"URL\" data-id=\"http:\/\/bleuio.com\/\">Bluetooth Low Energy USB dongle<\/a> called&nbsp;<strong>BlueIO&nbsp;<\/strong>is used, which will act as a central device to retrieve data.&nbsp;<strong>HibouAir<\/strong>&nbsp;will serve as a peripheral device to transmit the data. The is simple to use and can be used for other purposes such as showing real-time air quality data; temperate, humidity, pressure, particle matters etc.<\/p>\n\n\n\n<p><strong>Let\u2019s start<\/strong><\/p>\n\n\n\n<p>First, let\u2019s create a new project in visual studio and select C# windows form application from the list.<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/smartsensordevices.com\/wp-content\/uploads\/2022\/01\/windows-form-app-1024x202.jpg\" alt=\"\"\/><\/figure>\n\n\n\n<p>Choose a suitable name for your project.<\/p>\n\n\n\n<p>Once the project is created, we will see a blank form screen where we will add buttons and labels to communicate with BleuIO graphically and show plot real-time values from HibouAir.<\/p>\n\n\n\n<p>The application will connect to the BleuIO dongle to its given COM port from the script. You can change the port easily by going to line number 19.<\/p>\n\n\n\n<p>We will have a disconnect button to disconnect BleuIO from the COM port.<\/p>\n\n\n\n<p>By clicking on the Get data button, the script will connect to The BleuIO dongle and put it on DUAL mode. Then it will look for scanned data and filter out the device advertised information that we are looking for. You can change the&nbsp;<strong>scanForDevice&nbsp;<\/strong>value on line number 24<strong>.<\/strong><\/p>\n\n\n\n<p>Once it starts fetching data, it will go through a parser that decodes the advertised data and returns a meaningful number.&nbsp;<\/p>\n\n\n\n<p>In this script, we are only showing how to plot Ambient Light Sensor (ALS) value in lux and plot it on the chart.<\/p>\n\n\n\n<p>The form will look like this.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"595\" src=\"https:\/\/www.bleuio.com\/blog\/wp-content\/uploads\/2022\/02\/image-1024x595.png\" alt=\"\" class=\"wp-image-151\" srcset=\"https:\/\/www.bleuio.com\/blog\/wp-content\/uploads\/2022\/02\/image-1024x595.png 1024w, https:\/\/www.bleuio.com\/blog\/wp-content\/uploads\/2022\/02\/image-300x174.png 300w, https:\/\/www.bleuio.com\/blog\/wp-content\/uploads\/2022\/02\/image-768x446.png 768w, https:\/\/www.bleuio.com\/blog\/wp-content\/uploads\/2022\/02\/image.png 1095w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p>The .cs file associated with this will have the following code.<br>Source code is available at <a href=\"https:\/\/github.com\/smart-sensor-devices-ab\/real-time-graph-csharp.git\">https:\/\/github.com\/smart-sensor-devices-ab\/bluetooth_realtimedata_csharp<\/a><\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>using System;\nusing System.Windows.Forms;\nusing System.IO.Ports;\nusing LiveCharts;\nusing LiveCharts.Configurations;\nusing LiveCharts.Wpf;\nusing System.Threading;\nusing System.Collections;\nusing System.Linq;\nusing System.Text;\nusing Timer = System.Windows.Forms.Timer;\n\nnamespace ConstantChanges\n{\n    public partial class ConstantChanges : Form\n    {\n        \/\/Connect to Serial port\n        \/\/Replace port number to your comport\n        SerialPort mySerialPort = new SerialPort(\"COM7\", 57600, Parity.None, 8, StopBits.One);\n        \/\/string ScannedData = \"\";\n        string ScannedData = \"\";\n        bool clicked = false;\n\n        public string scanForDevice = \"5B07050345840D\";\n        int chartYval ;\n\n        public String ParseSensorData(string input)\n        {\n            int counter = 17;\n            int pressureData = Convert.ToInt32(input&#91;counter + 9].ToString() + input&#91;counter + 10].ToString() + input&#91;counter + 7].ToString() + input&#91;counter + 8].ToString(), 16);\n            chartYval = pressureData;\n\n            return pressureData.ToString();\n\n        }\n        public ConstantChanges()\n        {\n            InitializeComponent();\n            mySerialPort.DataReceived += new SerialDataReceivedEventHandler(mySerialPort_DataReceived);\n            mySerialPort.Open();\n            ArrayList device = new ArrayList();\n            \/\/To handle live data easily, in this case we built a specialized type\n            \/\/the MeasureModel class, it only contains 2 properties\n            \/\/DateTime and Value\n            \/\/We need to configure LiveCharts to handle MeasureModel class\n            \/\/The next code configures MEasureModel  globally, this means\n            \/\/that livecharts learns to plot MeasureModel and will use this config every time\n            \/\/a ChartValues instance uses this type.\n            \/\/this code ideally should only run once, when application starts is reccomended.\n            \/\/you can configure series in many ways, learn more at http:\/\/lvcharts.net\/App\/examples\/v1\/wpf\/Types%20and%20Configuration\n\n            var mapper = Mappers.Xy&lt;MeasureModel&gt;()\n                .X(model =&gt; model.DateTime.Ticks)   \/\/use DateTime.Ticks as X\n                .Y(model =&gt; model.Value);           \/\/use the value property as Y\n\n            \/\/lets save the mapper globally.\n            Charting.For&lt;MeasureModel&gt;(mapper);\n\n            \/\/the ChartValues property will store our values array\n            ChartValues = new ChartValues&lt;MeasureModel&gt;();\n            cartesianChart1.Series = new SeriesCollection\n            {\n                new LineSeries\n                {\n                    Values = ChartValues,\n                    PointGeometrySize = 18,\n                    StrokeThickness = 4\n                }\n            };\n            cartesianChart1.AxisX.Add(new Axis\n            {\n                DisableAnimations = true,\n                LabelFormatter = value =&gt; new System.DateTime((long)value).ToString(\"mm:ss\"),\n                Separator = new Separator\n                {\n                    Step = TimeSpan.FromSeconds(1).Ticks\n                }\n            });\n\n            SetAxisLimits(System.DateTime.Now);\n\n            \/\/The next code simulates data changes every 500 ms\n            Timer = new Timer\n            {\n                Interval = 3000\n            };\n            Timer.Tick += TimerOnTick;\n            R = new Random();\n            Timer.Start();\n        }\n\n        \/\/Store response from the dongle\n        private void mySerialPort_DataReceived(object sender, SerialDataReceivedEventArgs e)\n        {\n\n            SerialPort sp = (SerialPort)sender;\n            string s = sp.ReadExisting();\n\n            \/\/get advertised data\n            if (s.Contains(\"&#91;ADV]\"))\n            {\n                ScannedData = s;\n            }\n\n        }\n\n        public ChartValues&lt;MeasureModel&gt; ChartValues { get; set; }\n        public Timer Timer { get; set; }\n        public Random R { get; set; }\n\n        private void SetAxisLimits(System.DateTime now)\n        {\n            cartesianChart1.AxisX&#91;0].MaxValue = now.Ticks + TimeSpan.FromSeconds(1).Ticks; \/\/ lets force the axis to be 100ms ahead\n            cartesianChart1.AxisX&#91;0].MinValue = now.Ticks - TimeSpan.FromSeconds(8).Ticks; \/\/we only care about the last 8 seconds\n        }\n\n        private void TimerOnTick(object sender, EventArgs eventArgs)\n        {\n            var now = System.DateTime.Now;\n            if(clicked == true) {\n                getBleData();\n            }\n            \n            ChartValues.Add(new MeasureModel\n            {\n                DateTime = now,\n                \/\/Value = R.Next(0, 10)\n                Value = chartYval\n            });\n\n            SetAxisLimits(now);            \n            \/\/lets only use the last 30 values\n            if (ChartValues.Count &gt; 30) ChartValues.RemoveAt(0);\n        }\n\n        private void label1_Click(object sender, EventArgs e)\n        {\n\n        }\n\n        private void cartesianChart1_ChildChanged(object sender, System.Windows.Forms.Integration.ChildChangedEventArgs e)\n        {\n\n        }\n\n        \/\/Get data every 3 seconds\n        private void getBleData()\n        {\n            var inputByte = new byte&#91;] { 13 };\n            byte&#91;] dualCmd = Encoding.UTF8.GetBytes(\"AT+DUAL\");\n            dualCmd = dualCmd.Concat(inputByte).ToArray();\n            mySerialPort.Write(dualCmd, 0, dualCmd.Length);\n            Thread.Sleep(500);\n            byte&#91;] gapScanCmd = Encoding.UTF8.GetBytes(\"AT+FINDSCANDATA=\"+ scanForDevice);\n            gapScanCmd = gapScanCmd.Concat(inputByte).ToArray();\n            mySerialPort.Write(gapScanCmd, 0, gapScanCmd.Length);\n            Thread.Sleep(1200);\n            byte&#91;] bytes = Encoding.UTF8.GetBytes(\"\\u0003\");\n            bytes = bytes.Concat(inputByte).ToArray();\n            mySerialPort.Write(bytes, 0, bytes.Length);\n\n            if (ScannedData != null)\n            {\n                sensor_op.Text = ScannedData;\n                string lastWord = ScannedData.Split(' ').Last();\n                if(lastWord !=null) {\n                    var toPrint = ParseSensorData(lastWord);\n                    sensor_op.Text = \"Current Value :\" + toPrint;\n                }\n                \n                \n            }\n        }\n\n\n        private void btnGetData_Click(object sender, EventArgs e)\n        {\n            var inputByte = new byte&#91;] { 13 };\n            byte&#91;] dualCmd = Encoding.UTF8.GetBytes(\"AT+DUAL\");\n            dualCmd = dualCmd.Concat(inputByte).ToArray();\n            mySerialPort.Write(dualCmd, 0, dualCmd.Length);\n            Thread.Sleep(500);\n            byte&#91;] gapScanCmd = Encoding.UTF8.GetBytes(\"AT+FINDSCANDATA=\"+ scanForDevice);\n            gapScanCmd = gapScanCmd.Concat(inputByte).ToArray();\n            mySerialPort.Write(gapScanCmd, 0, gapScanCmd.Length);\n            Thread.Sleep(1200);\n            byte&#91;] bytes = Encoding.UTF8.GetBytes(\"\\u0003\");\n            bytes = bytes.Concat(inputByte).ToArray();\n            mySerialPort.Write(bytes, 0, bytes.Length);\n\n            if (ScannedData!=null) {\n                sensor_op.Text = ScannedData;\n                string lastWord = ScannedData.Split(' ').Last();\n                if (lastWord != null)\n                {\n                    var toPrint = ParseSensorData(lastWord);\n                    sensor_op.Text = \"Current Value :\"+toPrint;\n                }\n                clicked = true;\n            }  \n            \/\/Show Chart\n            cartesianChart1.Visible = true;\n        }\n    }\n}<\/code><\/pre>\n\n\n\n<p>As you can notice, I wrote COM7 to connect to the serial port because the BleuIO device on my computer is connected to COM7.<\/p>\n\n\n\n<p>You can check your COM port from the device manager.&nbsp;<\/p>\n\n\n\n<p>Also,&nbsp;<strong>scanForDevice&nbsp;<\/strong>value is 5B07050345840D where 45840D is the device id.&nbsp;<\/p>\n\n\n\n<p>Let\u2019s run the project and click on Get Data. You will notice a new light value is plotting in every three seconds.<\/p>\n\n\n\n<p>Here is a demo of this sample application.&nbsp;<\/p>\n\n\n\n<figure class=\"wp-block-embed is-type-video is-provider-youtube wp-block-embed-youtube wp-embed-aspect-16-9 wp-has-aspect-ratio\"><div class=\"wp-block-embed__wrapper\">\n<iframe loading=\"lazy\" title=\"Plotting real-time graph from Bluetooth device using C#\" width=\"640\" height=\"360\" src=\"https:\/\/www.youtube.com\/embed\/NNwn2wAMo-I?feature=oembed\" frameborder=\"0\" allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share\" referrerpolicy=\"strict-origin-when-cross-origin\" allowfullscreen><\/iframe>\n<\/div><\/figure>\n","protected":false},"excerpt":{"rendered":"<p>Bluetooth Low Energy (BLE)&nbsp;is a low power wireless technology used to connect devices. It is a popular communication method, especially in the Internet of Things era. Several devices around the house have a built-in Bluetooth transceiver, and most of them provide useful capabilities to automate jobs. This technology is widely used in the healthcare, fitness, [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":154,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[2],"tags":[],"class_list":["post-150","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-bleuio-tutorial"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.6 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Plotting real-time graph from Bluetooth device using C# - BleuIO - Create Bluetooth Low Energy application<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.bleuio.com\/blog\/plotting-real-time-graph-from-bluetooth-device-using-c\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Plotting real-time graph from Bluetooth device using C# - BleuIO - Create Bluetooth Low Energy application\" \/>\n<meta property=\"og:description\" content=\"Bluetooth Low Energy (BLE)&nbsp;is a low power wireless technology used to connect devices. It is a popular communication method, especially in the Internet of Things era. Several devices around the house have a built-in Bluetooth transceiver, and most of them provide useful capabilities to automate jobs. This technology is widely used in the healthcare, fitness, [&hellip;]\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.bleuio.com\/blog\/plotting-real-time-graph-from-bluetooth-device-using-c\/\" \/>\n<meta property=\"og:site_name\" content=\"BleuIO - Create Bluetooth Low Energy application\" \/>\n<meta property=\"article:published_time\" content=\"2022-02-03T16:56:56+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2022-07-01T10:36:05+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.bleuio.com\/blog\/wp-content\/uploads\/2022\/02\/plotting-real-time-chart-ble-device-csharp-1.jpg\" \/>\n\t<meta property=\"og:image:width\" content=\"800\" \/>\n\t<meta property=\"og:image:height\" content=\"537\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/jpeg\" \/>\n<meta name=\"author\" content=\"BleuIO\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/www.bleuio.com\\\/blog\\\/plotting-real-time-graph-from-bluetooth-device-using-c\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.bleuio.com\\\/blog\\\/plotting-real-time-graph-from-bluetooth-device-using-c\\\/\"},\"author\":{\"name\":\"BleuIO\",\"@id\":\"https:\\\/\\\/www.bleuio.com\\\/blog\\\/#\\\/schema\\\/person\\\/89bc581382d5964043f96efc54b75b80\"},\"headline\":\"Plotting real-time graph from Bluetooth device using C#\",\"datePublished\":\"2022-02-03T16:56:56+00:00\",\"dateModified\":\"2022-07-01T10:36:05+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/www.bleuio.com\\\/blog\\\/plotting-real-time-graph-from-bluetooth-device-using-c\\\/\"},\"wordCount\":474,\"commentCount\":0,\"image\":{\"@id\":\"https:\\\/\\\/www.bleuio.com\\\/blog\\\/plotting-real-time-graph-from-bluetooth-device-using-c\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/www.bleuio.com\\\/blog\\\/wp-content\\\/uploads\\\/2022\\\/02\\\/plotting-real-time-chart-ble-device-csharp-1.jpg\",\"articleSection\":[\"BleuIO tutorial\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/www.bleuio.com\\\/blog\\\/plotting-real-time-graph-from-bluetooth-device-using-c\\\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/www.bleuio.com\\\/blog\\\/plotting-real-time-graph-from-bluetooth-device-using-c\\\/\",\"url\":\"https:\\\/\\\/www.bleuio.com\\\/blog\\\/plotting-real-time-graph-from-bluetooth-device-using-c\\\/\",\"name\":\"Plotting real-time graph from Bluetooth device using C# - BleuIO - Create Bluetooth Low Energy application\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.bleuio.com\\\/blog\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/www.bleuio.com\\\/blog\\\/plotting-real-time-graph-from-bluetooth-device-using-c\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/www.bleuio.com\\\/blog\\\/plotting-real-time-graph-from-bluetooth-device-using-c\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/www.bleuio.com\\\/blog\\\/wp-content\\\/uploads\\\/2022\\\/02\\\/plotting-real-time-chart-ble-device-csharp-1.jpg\",\"datePublished\":\"2022-02-03T16:56:56+00:00\",\"dateModified\":\"2022-07-01T10:36:05+00:00\",\"author\":{\"@id\":\"https:\\\/\\\/www.bleuio.com\\\/blog\\\/#\\\/schema\\\/person\\\/89bc581382d5964043f96efc54b75b80\"},\"breadcrumb\":{\"@id\":\"https:\\\/\\\/www.bleuio.com\\\/blog\\\/plotting-real-time-graph-from-bluetooth-device-using-c\\\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/www.bleuio.com\\\/blog\\\/plotting-real-time-graph-from-bluetooth-device-using-c\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/www.bleuio.com\\\/blog\\\/plotting-real-time-graph-from-bluetooth-device-using-c\\\/#primaryimage\",\"url\":\"https:\\\/\\\/www.bleuio.com\\\/blog\\\/wp-content\\\/uploads\\\/2022\\\/02\\\/plotting-real-time-chart-ble-device-csharp-1.jpg\",\"contentUrl\":\"https:\\\/\\\/www.bleuio.com\\\/blog\\\/wp-content\\\/uploads\\\/2022\\\/02\\\/plotting-real-time-chart-ble-device-csharp-1.jpg\",\"width\":800,\"height\":537,\"caption\":\"plotting real-time chart ble device csharp\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/www.bleuio.com\\\/blog\\\/plotting-real-time-graph-from-bluetooth-device-using-c\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/www.bleuio.com\\\/blog\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Plotting real-time graph from Bluetooth device using C#\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/www.bleuio.com\\\/blog\\\/#website\",\"url\":\"https:\\\/\\\/www.bleuio.com\\\/blog\\\/\",\"name\":\"BleuIO - Create Bluetooth Low Energy application\",\"description\":\"Learn Bluetooth Low Energy programming and build Bluetooth Low Energy Application\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/www.bleuio.com\\\/blog\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/www.bleuio.com\\\/blog\\\/#\\\/schema\\\/person\\\/89bc581382d5964043f96efc54b75b80\",\"name\":\"BleuIO\",\"sameAs\":[\"https:\\\/\\\/www.bleuio.com\\\/blog\"],\"url\":\"https:\\\/\\\/www.bleuio.com\\\/blog\\\/author\\\/biadmin\\\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Plotting real-time graph from Bluetooth device using C# - BleuIO - Create Bluetooth Low Energy application","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.bleuio.com\/blog\/plotting-real-time-graph-from-bluetooth-device-using-c\/","og_locale":"en_US","og_type":"article","og_title":"Plotting real-time graph from Bluetooth device using C# - BleuIO - Create Bluetooth Low Energy application","og_description":"Bluetooth Low Energy (BLE)&nbsp;is a low power wireless technology used to connect devices. It is a popular communication method, especially in the Internet of Things era. Several devices around the house have a built-in Bluetooth transceiver, and most of them provide useful capabilities to automate jobs. This technology is widely used in the healthcare, fitness, [&hellip;]","og_url":"https:\/\/www.bleuio.com\/blog\/plotting-real-time-graph-from-bluetooth-device-using-c\/","og_site_name":"BleuIO - Create Bluetooth Low Energy application","article_published_time":"2022-02-03T16:56:56+00:00","article_modified_time":"2022-07-01T10:36:05+00:00","og_image":[{"width":800,"height":537,"url":"https:\/\/www.bleuio.com\/blog\/wp-content\/uploads\/2022\/02\/plotting-real-time-chart-ble-device-csharp-1.jpg","type":"image\/jpeg"}],"author":"BleuIO","twitter_card":"summary_large_image","schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.bleuio.com\/blog\/plotting-real-time-graph-from-bluetooth-device-using-c\/#article","isPartOf":{"@id":"https:\/\/www.bleuio.com\/blog\/plotting-real-time-graph-from-bluetooth-device-using-c\/"},"author":{"name":"BleuIO","@id":"https:\/\/www.bleuio.com\/blog\/#\/schema\/person\/89bc581382d5964043f96efc54b75b80"},"headline":"Plotting real-time graph from Bluetooth device using C#","datePublished":"2022-02-03T16:56:56+00:00","dateModified":"2022-07-01T10:36:05+00:00","mainEntityOfPage":{"@id":"https:\/\/www.bleuio.com\/blog\/plotting-real-time-graph-from-bluetooth-device-using-c\/"},"wordCount":474,"commentCount":0,"image":{"@id":"https:\/\/www.bleuio.com\/blog\/plotting-real-time-graph-from-bluetooth-device-using-c\/#primaryimage"},"thumbnailUrl":"https:\/\/www.bleuio.com\/blog\/wp-content\/uploads\/2022\/02\/plotting-real-time-chart-ble-device-csharp-1.jpg","articleSection":["BleuIO tutorial"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.bleuio.com\/blog\/plotting-real-time-graph-from-bluetooth-device-using-c\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.bleuio.com\/blog\/plotting-real-time-graph-from-bluetooth-device-using-c\/","url":"https:\/\/www.bleuio.com\/blog\/plotting-real-time-graph-from-bluetooth-device-using-c\/","name":"Plotting real-time graph from Bluetooth device using C# - BleuIO - Create Bluetooth Low Energy application","isPartOf":{"@id":"https:\/\/www.bleuio.com\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.bleuio.com\/blog\/plotting-real-time-graph-from-bluetooth-device-using-c\/#primaryimage"},"image":{"@id":"https:\/\/www.bleuio.com\/blog\/plotting-real-time-graph-from-bluetooth-device-using-c\/#primaryimage"},"thumbnailUrl":"https:\/\/www.bleuio.com\/blog\/wp-content\/uploads\/2022\/02\/plotting-real-time-chart-ble-device-csharp-1.jpg","datePublished":"2022-02-03T16:56:56+00:00","dateModified":"2022-07-01T10:36:05+00:00","author":{"@id":"https:\/\/www.bleuio.com\/blog\/#\/schema\/person\/89bc581382d5964043f96efc54b75b80"},"breadcrumb":{"@id":"https:\/\/www.bleuio.com\/blog\/plotting-real-time-graph-from-bluetooth-device-using-c\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.bleuio.com\/blog\/plotting-real-time-graph-from-bluetooth-device-using-c\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.bleuio.com\/blog\/plotting-real-time-graph-from-bluetooth-device-using-c\/#primaryimage","url":"https:\/\/www.bleuio.com\/blog\/wp-content\/uploads\/2022\/02\/plotting-real-time-chart-ble-device-csharp-1.jpg","contentUrl":"https:\/\/www.bleuio.com\/blog\/wp-content\/uploads\/2022\/02\/plotting-real-time-chart-ble-device-csharp-1.jpg","width":800,"height":537,"caption":"plotting real-time chart ble device csharp"},{"@type":"BreadcrumbList","@id":"https:\/\/www.bleuio.com\/blog\/plotting-real-time-graph-from-bluetooth-device-using-c\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.bleuio.com\/blog\/"},{"@type":"ListItem","position":2,"name":"Plotting real-time graph from Bluetooth device using C#"}]},{"@type":"WebSite","@id":"https:\/\/www.bleuio.com\/blog\/#website","url":"https:\/\/www.bleuio.com\/blog\/","name":"BleuIO - Create Bluetooth Low Energy application","description":"Learn Bluetooth Low Energy programming and build Bluetooth Low Energy Application","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.bleuio.com\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Person","@id":"https:\/\/www.bleuio.com\/blog\/#\/schema\/person\/89bc581382d5964043f96efc54b75b80","name":"BleuIO","sameAs":["https:\/\/www.bleuio.com\/blog"],"url":"https:\/\/www.bleuio.com\/blog\/author\/biadmin\/"}]}},"_links":{"self":[{"href":"https:\/\/www.bleuio.com\/blog\/wp-json\/wp\/v2\/posts\/150","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.bleuio.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.bleuio.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.bleuio.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.bleuio.com\/blog\/wp-json\/wp\/v2\/comments?post=150"}],"version-history":[{"count":6,"href":"https:\/\/www.bleuio.com\/blog\/wp-json\/wp\/v2\/posts\/150\/revisions"}],"predecessor-version":[{"id":159,"href":"https:\/\/www.bleuio.com\/blog\/wp-json\/wp\/v2\/posts\/150\/revisions\/159"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.bleuio.com\/blog\/wp-json\/wp\/v2\/media\/154"}],"wp:attachment":[{"href":"https:\/\/www.bleuio.com\/blog\/wp-json\/wp\/v2\/media?parent=150"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.bleuio.com\/blog\/wp-json\/wp\/v2\/categories?post=150"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.bleuio.com\/blog\/wp-json\/wp\/v2\/tags?post=150"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}