創作內容

9 GP

C# WebRecieve

作者:貓貓風 ฅ●ω●ฅ│2017-07-17 22:57:49│巴幣:18│人氣:451
.

















這篇所要達成的功能是接收從 arduino WebServer 上面的資料, arduino 的架設 WebServer

的方式在這篇  arduino WebServer  , 主要是用 WebRequest 的方式來接收資料,然後

使用 Substring 來解析取得的資料,擷取需要的部分,以下範例為取得從Server端上傳來的

指定 analog pin 的值呈現在畫面上,之後每秒將取得的值儲存在Log中


  1. using System;  
  2. using System.Collections.Generic;  
  3. using System.ComponentModel;  
  4. using System.Data;  
  5. using System.Drawing;  
  6. using System.Linq;  
  7. using System.Text;  
  8. using System.Windows.Forms;  
  9. using System.Net;  
  10. using System.IO;  
  11. using System.Threading;  
  12.   
  13. namespace WebRecieve_test  
  14. {  
  15.     public partial class Form1 : Form  
  16.     {  
  17.         private Thread _th;  
  18.         private delegate void updateLabel(string str, Control ctl);  
  19.         private string[] _dataArray = new string[10];  
  20.   
  21.         public Form1()  
  22.         {  
  23.             InitializeComponent();  
  24.         }  
  25.   
  26.         private void Form1_Load(object sender, EventArgs e)  
  27.         {  
  28.             _th = new Thread(ReadData);  
  29.             _th.Start();  
  30.         }  
  31.   
  32.         private void Update_Label(string value, Control ctl)  
  33.         {  
  34.             if (this.InvokeRequired)  
  35.             {  
  36.                 updateLabel uu = new updateLabel(Update_Label);  
  37.                 this.Invoke(uu, value, ctl);  
  38.             }  
  39.             else  
  40.             {  
  41.                 ctl.Text = value.ToString();  
  42.             }  
  43.         }  
  44.   
  45.         private void ReadData()  
  46.         {  
  47.             while(true)  
  48.             {  
  49.                 //將要取得HTML原如碼的網頁放在WebRequest.Create(@”網址” )  
  50.                 WebRequest myRequest = WebRequest.Create(@"http://10.56.66.173/");  
  51.                 //Method選擇GET  
  52.                 myRequest.Method = "GET";    
  53.                 //取得WebRequest的回覆  
  54.                 WebResponse myResponse = myRequest.GetResponse();    
  55.                 //Streamreader讀取回覆  
  56.                 StreamReader sr = new
  57.                 StreamReader(myResponse.GetResponseStream());  
  58.                 //將全文轉成string  
  59.                 string result = sr.ReadToEnd();  
  60.                 //關掉StreamReader  
  61.                 sr.Close();    
  62.                 //關掉WebResponse  
  63.                 myResponse.Close();  
  64.                 //搜尋頭尾關鍵字  
  65.                 string temp_str = "";  
  66.   
  67.                 for (int i = 0; i <= 5; i++)  
  68.                 {  
  69.                     int first = result.IndexOf("analog input" + i + " is </td>
  70.                     <td ALIGN=CENTER");  
  71.                     int last = result.LastIndexOf(" " + i + "</td></tr>");    
  72.                     string HTMLCut = result.Substring(first + 39, last - first - 38);
  73.                     temp_str +=  "analog input"+i+" is "+HTMLCut + "\n";  
  74.                     _dataArray[i] = HTMLCut;  
  75.                     Update_Label(temp_str + "\n", label1);  
  76.                 }  
  77.                 store_data();  
  78.                 Thread.Sleep(1000);  
  79.             }  
  80.         }  
  81.   
  82.         private void store_data()  
  83.         {  
  84.             string str = System.Windows.Forms.Application.StartupPath;  
  85.             string file = str + "\\data\\" + DateTime.Now.Year.ToString() +
  86.             DateTime.Now.Month.ToString() + DateTime.Now.Day.ToString() +  
  87.             DateTime.Now.Hour.ToString() + ".log";  
  88.               
  89.             if (Directory.Exists(str + "\\data\\"))  
  90.             {  
  91.                 //資料夾存在  
  92.             }  
  93.             else  
  94.             {  
  95.                 //新增資料夾  
  96.                 Directory.CreateDirectory(str + "\\data\\");  
  97.             }  
  98.   
  99.             if (!System.IO.File.Exists(file))  
  100.             {  
  101.                 FileStream filestream = new FileStream(file, FileMode.Create);  
  102.                 filestream.Close();  
  103.             }  
  104.   
  105.             StreamWriter sw = new StreamWriter(file, true);  
  106.             for(int i = 0 ; i <= 5 ; i++)  
  107.             {  
  108.                 if(i < 5)  
  109.                 {  
  110.                     sw.Write("analog input"+ i+" is " + _dataArray[i] + ",");  
  111.                 }  
  112.                 else  
  113.                 {  
  114.                     sw.Write("analog input" + i + " is " + _dataArray[i]);  
  115.                 }  
  116.             }  
  117.             sw.Write("\r\n");  
  118.             sw.Close();  
  119.         }  
  120.   
  121.   
  122.         private void Form1_FormClosed(object sender, FormClosedEventArgs e)  
  123.         {  
  124.             _th.Abort();  
  125.             _th.Join();       
  126.         }  
  127.     }  
  128. }  


執行結果

arduino 上 呈現的畫面




Client端 每秒接收的畫面





Log中儲存的資料







引用網址:https://home.gamer.com.tw/TrackBack.php?sn=3648129
All rights reserved. 版權所有,保留一切權利

相關創作

同標籤作品搜尋:涼涼風|C#|arduino

留言共 3 篇留言

彩゛天空゜
這樣去應徵巴哈工程師會上ㄇ

07-17 23:02

貓貓風 ฅ●ω●ฅ
巴哈是寫網頁 CSS 跟 後端處理 與 手機程式 跟我這部分方向完全不一樣07-17 23:05
珀伽索斯(Ama)
看到後面感覺挺不錯的,若我有工具做起來應該會很有成就感

07-17 23:05

貓貓風 ฅ●ω●ฅ
因為有UI呈現感覺就會差很多07-17 23:09
約瑟森林的一枚白伊

07-18 15:45

貓貓風 ฅ●ω●ฅ
[e26]07-18 16:26
我要留言提醒:您尚未登入,請先登入再留言

9喜歡★s1234567 可決定是否刪除您的留言,請勿發表違反站規文字。

前一篇:Kagewani Cri... 後一篇:C# fileCopy...

追蹤私訊切換新版閱覽

作品資料夾

robert286 ლ(´•д• ̀ლ
ლ(´•д• ̀ლ看更多我要大聲說21小時前


face基於日前微軟官方表示 Internet Explorer 不再支援新的網路標準,可能無法使用新的應用程式來呈現網站內容,在瀏覽器支援度及網站安全性的雙重考量下,為了讓巴友們有更好的使用體驗,巴哈姆特即將於 2019年9月2日 停止支援 Internet Explorer 瀏覽器的頁面呈現和功能。
屆時建議您使用下述瀏覽器來瀏覽巴哈姆特:
。Google Chrome(推薦)
。Mozilla Firefox
。Microsoft Edge(Windows10以上的作業系統版本才可使用)

face我們了解您不想看到廣告的心情⋯ 若您願意支持巴哈姆特永續經營,請將 gamer.com.tw 加入廣告阻擋工具的白名單中,謝謝 !【教學】