Robofun 機器人論壇

標題: 如何用網頁上的欄位數值,轉給ARDUINO 使用? [打印本頁]

作者: kenko    時間: 2018-8-14 16:40
標題: 如何用網頁上的欄位數值,轉給ARDUINO 使用?
如何用網頁上的欄位數值,轉給ARDUINO 使用?
作者: 超新手    時間: 2018-8-14 20:18
用 html 的 get
作者: kenko    時間: 2018-8-15 08:24
抱歉!!由於是超新手,所以可以給一些範例嗎? 有關hTML 和ARDUINO的相關範例?

作者: kenko    時間: 2018-8-20 13:01
超新手大大:可否給一些範例嗎? 有關hTML 和ARDUINO的相關範例?
作者: 超新手    時間: 2018-8-20 14:34
本帖最後由 超新手 於 2018-8-20 15:16 編輯

HTML
  1. <html>
  2. <form method="get">
  3. <input type="number" name="Data" />
  4. <input type="submit" value="OK"/>
  5. </form>
  6. </html>
複製代碼


如果輸入 123,
你就會在網址列得到
....................?Data=123

1)為了了解整個程序, 你先在 pc 上做測試.
把上面HTML那個存成 index.html
然後雙擊  index.html
你自己的瀏灠器(IE 或 Chrome)就會去開 index.html
此時輸入數字123後, 按下 OK
網址列就會出現 .......?Data=123
照這樣操作, 就知道我在說什麼

2) Arduino 上也是一樣
當你按下 Arduino  的網頁時
Arduino 就會收到 ?Data=xxx
在 ?Data 後面收到的文字 xxx, 就是使用者輸入的數字
用 atoi 把文字再轉回數字即可




另外
Data 這個字是可以修改的, 只要改 html 的內容即可
還可以支援 不同的 form ...., 或一個 form 可取得不同輸入值.............
可以先在 pc 測一下
然後再移植到 arduino


作者: kenko    時間: 2018-8-22 08:46
感恩~~~
我再試試~~
謝謝!!!
作者: kenko    時間: 2018-8-22 11:54
2) Arduino 上也是一樣
當你按下 Arduino  的網頁時
Arduino 就會收到 ?Data=xxx
在 ?Data 後面收到的文字 xxx, 就是使用者輸入的數字
用 atoi 把文字再轉回數字即可

SORRY!! 可以給一下範例程式嗎?
如何用Arduino 連上PC網頁?
如何用 get ?
及如何取的Data?
作者: 超新手    時間: 2018-8-22 12:13
沒範例...
>>如何用Arduino 連上PC網頁?
這句話有點奇怪
應該是"如何用PC連上Arduino 網頁 "
Arduino  應該是 SERVER 端, 而不是 CLIENT 端
難道你要的不是這樣?

作者: kenko    時間: 2018-8-22 13:36
我要的是Arduino  當CLIENT端
PC 當SERVER 端~~


作者: kenko    時間: 2018-8-22 13:38
在PC 端預設 您給的 HTML 並執行時~~
CLIENT 端 有一個Data 會 改變!! 繼續 執行 Arduino
作者: 超新手    時間: 2018-8-22 13:47
本帖最後由 超新手 於 2018-8-22 14:22 編輯

如果 Arduino 是 client
Arduino  就是輸入值的人
它自己就知道那個值, 不必去取得吧?

簡單的問
是誰負責輸入 123, 並按入 OK 的?


作者: kenko    時間: 2018-8-22 16:26
由PC網頁上輸入 123 並按下 OK後
由Arduino 接收 此值  繼續工作~~

作者: 超新手    時間: 2018-8-22 16:36
本帖最後由 超新手 於 2018-8-22 16:45 編輯

PC 和 Arduino 的關係是?
不會是用 usb 接到電腦吧?
WEB server 是架在遠端嗎?

不如仔細解釋一下你的架構

作者: kenko    時間: 2018-8-23 08:03
WEB server 是架在遠端嗎?屬於遠端,算是網路上的一員(PC server 網頁)
Arduino 的關係是?屬於網路上的一員(client),且有數個.使用時不接PC,直接給client IP

作者: kenko    時間: 2018-8-23 08:07
因此須考慮 arduino IP和 client 得方式,將指定的 數值傳 給 某個 client IP 讓ARDUINO 繼續計數
作者: 超新手    時間: 2018-8-23 09:11
server 要傳給 client?  所以你己經寫好了嗎?
除非用固定 ip ,  或打洞
否則在網際網路上, server 是找不到 client 的
比較簡單的方式,
應該是當使用者輸入值後
將此數值變成網頁的一部份
arduino  再固定時間去捉網頁的值
這樣才會簡單
即使這樣....也很複雜


作者: kenko    時間: 2018-8-23 10:21
目前用您寫的HTML 已經可以留下訊息~~但是不知ARDUINO怎麼讀取??
ARDUINO 都是固定IP, Server 也是固定IP ~~~但是目前對於連線上還有疑慮~~還在測試中!!

作者: kenko    時間: 2018-8-23 10:25
目前已經可以連上,ARDUINO 網頁 但是會有網頁更新和延遲導致網頁開起來時會不順~~~
因此才會想起用PC 當 SERVER
作者: 超新手    時間: 2018-8-23 10:48
想要用 PC SERVER,
可以寫 JavaScript 的網頁,

但是簡單的方式, 是你輸入數字後, 按下 OK
再連過去 Arduino 的網頁, 順便把值傳過去
變成有兩個 server, 一個 PC, 一個 Arduino
只是 Arduino 是隱藏的網頁



作者: kenko    時間: 2018-8-23 11:04
因為對JavaScript 的網頁不熟~~所以如最後都無法成功,才會選擇此方式上~~
但是目前比較想要知道的是ARDUINO 如何將 ?Ddta轉到 ARDUINO 使用??
因為您寫的HTML 已經有呈現 出Ddta 但是不知如何轉~~至ARDUINO
感恩~~謝謝您的幫忙及回饋!!
作者: 超新手    時間: 2018-8-23 11:38
本帖最後由 超新手 於 2018-8-23 11:42 編輯

改成
  1. <html>
  2. <form action="http://xxx.yyy.zzz">
  3.   <input type="number" name="Data" />
  4.   <input type="submit" value="OK">
  5. </form>
  6. </html>
複製代碼


其中 xxx.yyy.zzz 要改成 Arduino 的網頁, 別照抄


仔細想想, 這樣網頁會轉向
好像也不合你的需求

作者: kenko    時間: 2018-8-23 11:48
網頁的部分,先別修正~~目前測試應該可以,
因此麻煩先告知ARDEINO 如何將DATA 讀取轉至ARDUINO 可以使用的程式吧??
作者: 超新手    時間: 2018-8-23 12:43
沒程式....
簡單的方法是,
如果 client 連上時
且available() >0,. 用 read() 把資料一個 byte一個 byte收進來
並組合一個字串(STRING)
如果字元 = '\r', 就表示字串結束
然後使用 indexof("?Data=") 找出?Data=的位址
如果找到, 就把後面的文字抓出來
然後用 atoi 轉成數字

作者: kenko    時間: 2018-8-23 16:30
寫得很"簡單",但是對於我這個新手而言,
實在不知您說的該在哪兒寫!!
可否像上次一樣給一小段程式寫法,給我參考
感恩~~

作者: kenko    時間: 2018-8-23 16:34
例如:該怎麼判斷 available() >0?
又怎麼 read()?
再怎麼組合一個字串(STRING)?
且字元 = '\r',如何判斷?
且怎麼找出indexof("?Data=") 找出?Data=的位址?
如果找到, 就把後面的文字抓出來?
作者: 超新手    時間: 2018-8-23 16:42
本帖最後由 超新手 於 2018-8-23 17:03 編輯

你不是本來是把 arduino 當成 wifi server
其中就有範例
WiFiWebServer.ino
裡面就有
client.available()
client.read()

找到差不多的範例了
https://github.com/esp8266/Ardui ... r/WiFiWebServer.ino
作者: kenko    時間: 2018-8-27 14:50
找了一天, 都找不到ESP8266WiFi.h 的程式~~
所以目前還無法測試!!
作者: 超新手    時間: 2018-8-27 15:11
本帖最後由 超新手 於 2018-8-27 15:14 編輯

不是就在同一網站下?
https://github.com/esp8266/Ardui ... ies/ESP8266WiFi/src

而且...根本不必用它的
用你原先的就可以了
你只是參考他的寫法就好了
目前已經可以連上,ARDUINO 網頁 但是會有網頁更新和延遲導致網頁開起來時會不順~~~
因此才會想起用PC 當 SERVER

作者: kenko    時間: 2018-9-3 16:49
卡住~~先暫停好了!!
感謝您~~後續有問題再發問!!




歡迎光臨 Robofun 機器人論壇 (https://www.robofun.net/forum/) Powered by Discuz! X3.2