在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

【EsDA 應用】快速實現串口轉HTTP請求

ZLG致遠電子 ? 2023-11-09 08:25 ? 次閱讀

本文將基于EsDA開發套件快速實現將串口數據轉換為HTTP請求的應用開發,實現串口設備與網絡服務的互聯互通,提供便捷和高效的串口數據轉換功能。

7b0587c0-7e96-11ee-9788-92fbcf53809c.jpg ?項目簡介

HTTP協議是互聯網應用最為廣泛的一種網絡協議,由客戶端發送請求消息,服務端針對客戶端的請求進行響應回復。本文將基于EsDA開發平臺,使用EPC6450-AWI開發板,以及圖形化設計工具AWFlow Designer實現將串口數據轉換為HTTP請求發送給云端,隨后云端針對HTTP請求進行處理響應的功能。該項目主要用到了serial_in_ex,fscript,http_request,fileout,timer,filein和serial_out_ex節點,具體實現請見下文。

7b17f6bc-7e96-11ee-9788-92fbcf53809c.jpg ?項目概述

該項目是將串口數據通過作為HTTP客戶端的EPC6450-AWI開發板去發送HTTP請求到云端服務器,在云端服務器上處理HTTP請求并下發響應數據。
該項目的主要步驟如下:

  1. 配置EPC6450-AWI的網口設備并連接到互聯網;
  2. 配置串口通信參數,包括波特率,數據位,停止位和校驗等;
  3. 從串口讀取HTTP請求參數,在本項目中串口的輸入數據如下:POST方法主要是輸入body消息正文,GET方法主要是輸入url統一資源定位符;
  4. http_request節點向云端服務器發起HTTP請求,云端服務器處理數據后發送響應到客戶端,客戶端接收來自云端服務器的響應數據;
  5. HTTP客戶端接收響應數據后,將響應數據中轉到文本中保存并輸出到串口進行顯示。

7b1fe7b4-7e96-11ee-9788-92fbcf53809c.png

7b17f6bc-7e96-11ee-9788-92fbcf53809c.jpg ?項目準備在本文將不再贅述串口設備在EsDA的基礎通信,讀者可以閱讀以下文章對串口節點和EsDA的一些基礎項目進行熟絡:

  • 【EsDA應用】5分鐘實現一個串口通信業務
  • 【EsDA應用】常用IO設備節點詳解
  • EsDAMPC-ZC1應用——串口服務器(一)

1. 硬件準備

在標有絲印為TF Card 絲印的卡槽處,插入SD卡。

用戶可隨機選擇EPC6450-AWI的可用串口設備,在本文將用UART5進行串口通信。在標有絲印為UTX5,URX5的串口模塊上,將TTL轉USB串口模塊的TX與板子絲印為URX5連接,TTL轉USB串口模塊的RX與板子絲印為UTX5相連;并將TTL轉USB串口模塊另一端的USB口接入電腦

  • 在標有絲印為Type-C接口處,插上Type-C線,并將Type-C線的另一端USB口插入電腦。
  • 在標有絲印為NET0或 NET1的RJ45插座處接上水晶頭,網線另一端水晶接頭插在PC的網絡插座上。

7b392a26-7e96-11ee-9788-92fbcf53809c.png

2. 網絡搭建

本文的網絡搭建是將電腦wifi通過以太網與開發板進行網絡共享,以此達到開發板的以太網口聯網的目的。

將TTL轉USB串口模塊接在絲印為DUART的調試串口上(TX接RX,RX接TX)。打開串口調試助手,檢索并打開TTL轉USB串口模塊的設備端口號后,使用shell命令ip addr,查看網口的ip地址,根據下圖可知,本文使用的網口設備ip地址是192.168.137.251。7b42b546-7e96-11ee-9788-92fbcf53809c.png配置PC上的以太網的IP與開發板的IP地址在同一局域網下。

7b49bba2-7e96-11ee-9788-92fbcf53809c.png

將PC上的WLAN配置共享給與開發板連接的以太網。7b519be2-7e96-11ee-9788-92fbcf53809c.png在串口調試助手輸入shell指令ping www.baidu.com,ping成功即開發板聯網成功。

7b5c8f34-7e96-11ee-9788-92fbcf53809c.png

7b17f6bc-7e96-11ee-9788-92fbcf53809c.jpg ?項目實施本項目業務主要分為兩個部分:

  • POST方法請求項目:模擬傳感器數據通過串口轉HTTP客戶端傳送到HTTP服務器,服務器進行數據分析和處理。將串口數據作為HTTP請求的body參數,http_request節點在整理屬性和輸入參數后對自建的HTTP服務器發起POST方法的HTTP請求;服務器收到請求后,將串口數據保存到本地的文本文件以便后續查看,下發響應數據給客戶端;客戶端收到服務器的響應數據經過數據處理后打印到串口助手的界面進行查看。
  • GET方法請求項目:請求訪問百度服務器。串口提供HTTP請求參數,http_request節點整理屬性和輸入參數對百度服務器發起GET方法的HTTP請求;http_request節點接收來自百度服務器的響應數據,將數據保存到指定的文本文件中存儲再從文本中將數據輸出到串口助手的界面上。

1. POST方法請求

本項目由串口助手模擬將采集的傳感器數據通過開發板的串口傳輸到開發板創建的HTTP客戶端,HTTP客戶端再通過POST方法將傳感器數據作為body參數去請求本地搭建的HTTP服務器,HTTP服務器接收到請求后,將傳感器數據存儲到本地的index.html文件中,并將數據處理后作為響應體回發給客戶端,HTTP客戶端接收到響應消息后打印到串口助手上進行顯示。

1.1 流圖繪制

添加serial_in_ex,fscript,http_request,fileout,timer,filein和serial_out_ex節點到畫布中并連線如下圖。

7b708386-7e96-11ee-9788-92fbcf53809c.png

1.2 節點配置

在本文的serial_in_ex和serial_out_ex節點配置參數和操作一致,后面不再贅述serial_out_ex節點的配置操作。雙擊serial_in_ex節點,點擊配置節點名旁邊的鉛筆圖標。

7b7b9528-7e96-11ee-9788-92fbcf53809c.png

選擇用戶使用的串口設備,根據實際需求配置波特率,奇偶校驗等串口配置參數,本項目中的串口配置參數如下圖所示。7b883d5a-7e96-11ee-9788-92fbcf53809c.png

雙擊serial_in_ex的消費者節點fscript,因為本項目主要是將采集到的傳感器數據作為消息體參數發送到HTTP服務器進行處理,所以該fscript主要是將讀取到的serial_in_ex串口數據賦值給http_request節點的body參數如下:

msg.body = istream_read_string(msg.istream, 100)

雙擊http_request節點,配置方法為POST,并設置用戶想要訪問的HTTP服務器URL(這里的HTTP服務器是筆者本地用python搭建的一個簡易HTTP服務器),根據需要選擇輸出的內容類型,其他參數按需配置即可。7b94219c-7e96-11ee-9788-92fbcf53809c.png雙擊http_request節點的消費者節點fscript,該節點主要是存儲http_request節點的輸出參數msg.payloadLength,用于后續賦值給filein節點的輸入參數讀取的數據長度

set(global.length, msg.payloadLength)

雙擊fileout節點,配置屬性參數如下,在本項目中配置文件打開模式為從頭寫入且丟棄源文件內容,文件名選擇開發板上自動掛載的/flow目錄下的文件,數據來源選擇payload形式。7b9f8d66-7e96-11ee-9788-92fbcf53809c.png雙擊timer節點,配置定時周期時長,定時用filein節點去讀取存放HTTP響應的數據。7baa9fa8-7e96-11ee-9788-92fbcf53809c.png

雙擊timer的消費者節點fscript,配置filein節點的輸入參數如下:

set(msg.topic,"exec:read_data");var length = global.lengthset(msg.payload,length);

雙擊filein節點,配置需要讀取的文件名。7bb5d72e-7e96-11ee-9788-92fbcf53809c.png

雙擊filein的消費者節點fscript,該節點主要將從filein節點讀取到的數據轉換給serial_out_ex節點。

set(output.payload,str(msg.payload,true));

雙擊serial_out_ex節點,該節點配置參數與serial_in_ex節點一樣。

7bc0d034-7e96-11ee-9788-92fbcf53809c.png

1.3 本地HTTP服務器搭建

筆者用python腳本搭建了一個簡易的HTTP服務器,主要功能是收到的POST請求中的消息體數據存儲到本地的index.html文本中,并將收到的消息體數據處理后作為響應體回發給客戶端。在PC端執行以下http_server.py的腳本即開啟了本地的HTTP服務端。

from http.server import BaseHTTPRequestHandler, HTTPServerimport logging
class S(BaseHTTPRequestHandler): def do_HEAD(self): self.send_response(200) self.send_header('Content-type', 'text/html') self.end_headers()
def do_POST(self): content_length = int(self.headers['Content-Length']) post_data = self.rfile.read(content_length)
logging.info("POST request,\nPath: %s\nHeaders:\n%s\n\nBody:\n%s\n", str(self.path), str(self.headers), post_data.decode('utf-8'))
res = "You Input: " + post_data.decode('utf-8') with open("index.html","a+") as f: f.write(post_data.decode('utf-8'))
self.do_HEAD() self.wfile.write("{}".format(res).encode('utf-8'))
def respond(self, opts): response = self.handle_http(opts['status'], self.path) self.wfile.write(response)
def handle_http(self, status_code, path): self.send_response(status_code) self.send_header('Content-type', 'text/html') self.end_headers() content = ''' Title goes here.

This is a test.

You accessed path: {}

'''.format(path) return bytes(content, 'UTF-8')

def run(server_class=HTTPServer, handler_class=S, port=8080): print("run()") logging.basicConfig(level=logging.INFO) server_address = ('', port) httpd = server_class(server_address, handler_class) logging.info('Starting http server...\n') try: httpd.serve_forever() except KeyboardInterrupt: pass httpd.server_close() print("httpd.server_close()") logging.info('Stopping http server...\n')

if __name__ == '__main__': from sys import argv
if len(argv) == 2: run(port=int(argv[1])) else: run()

1.4 下載運行

將流圖下載到目標開發板后,在串口調試助手輸入HTTP請求的消息體(模擬的傳感器數據)后,就可以在串口助手輸出界面看到返回的響應內容如下:7bcd2000-7e96-11ee-9788-92fbcf53809c.png本地的HTTP服務器端收到的來自客戶端的請求信息如下:7bd97b84-7e96-11ee-9788-92fbcf53809c.png打開PC本地的index.html文本,可以看到保存的傳感器數據如下:7be10656-7e96-11ee-9788-92fbcf53809c.png至此,串口轉HTTP客戶端的傳感器數據上云的實驗就已完全結束,接下來開啟訪問百度游覽器的HTTP請求實驗。

2. GET方法請求

該項目主要是通過GET方法請求百度服務器,最后將百度服務器響應的消息進行打印顯示,主要是將串口數據轉換為HTTP請求,發送到服務器端,以實現與遠程服務器的通信。

2.1 流圖繪制

添加serial_in_ex,fscript,http_request,fileout,timer,filein和serial_out_ex節點到畫布中并連線如下圖。

7be91d0a-7e96-11ee-9788-92fbcf53809c.png

2.2 節點配置

在本文的serial_in_ex和serial_out_ex節點配置參數和操作一致,后面不再贅述serial_out_ex節點的配置操作。雙擊serial_in_ex節點,點擊配置節點名旁邊的鉛筆圖標。

7b7b9528-7e96-11ee-9788-92fbcf53809c.png

選擇用戶使用的串口設備,根據實際需求配置波特率,奇偶校驗等串口配置參數,本項目中的串口配置參數如下圖所示。7b883d5a-7e96-11ee-9788-92fbcf53809c.png

雙擊serial_in_ex的消費者節點fscript,因為本項目主要是對HTTP協議的GET方法進行數據請求,而GET的請求參數是拼接在URL的后面,所以串口輸入的主要是http_request節點的URL配置項,該fscript主要是讀取serial_in_ex的串口數據,如下:

var str = istream_read_string(msg.istream, 100)msg.url = str

雙擊http_request節點,配置方法為GET,并設置用戶想要訪問的云端服務器URL,根據需要選擇輸出內容類型,其他參數按需配置即可。7c05f86c-7e96-11ee-9788-92fbcf53809c.png

雙擊http_request節點的消費者節點fscript,該節點主要是存儲http_request節點的輸出參數msg.payloadLength,用于后續賦值給filein節點的輸入參數讀取的數據長度

set(global.length, msg.payloadLength)

雙擊fileout節點,配置屬性參數如下,在本項目中配置文件打開模式為從頭寫入且丟棄源文件內容,文件名選擇開發板上自動掛載的/flow目錄下的文件,數據來源選擇payload形式。7b9f8d66-7e96-11ee-9788-92fbcf53809c.png雙擊timer節點,配置定時周期時長,定時用filein節點去讀取存放HTTP響應的數據。7baa9fa8-7e96-11ee-9788-92fbcf53809c.png

雙擊timer的消費者節點fscript,配置filein節點的輸入參數如下:

set(msg.topic,"exec:read_data");var length = global.lengthset(msg.payload,length);

雙擊filein節點,配置需要讀取的文件名。7bb5d72e-7e96-11ee-9788-92fbcf53809c.png

雙擊filein的消費者節點fscript,該節點主要將從filein節點讀取到的數據轉換給serial_out_ex節點。

set(output.payload,str(msg.payload,true));

雙擊serial_out_ex節點,該節點配置參數與serial_in_ex節點一樣。

7bc0d034-7e96-11ee-9788-92fbcf53809c.png

2.3 下載驗證

將該流圖下載到目標開發板后,在串口調試助手輸入HTTP請求的云端URL后,可以看到返回的響應消息,具體如下圖。7c39ba08-7e96-11ee-9788-92fbcf53809c.png至此該實驗到此結束。

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • HTTP
    +關注

    關注

    0

    文章

    505

    瀏覽量

    31232
  • 數據轉換
    +關注

    關注

    0

    文章

    87

    瀏覽量

    18002
  • ESDA
    +關注

    關注

    0

    文章

    28

    瀏覽量

    7510
收藏 人收藏

    評論

    相關推薦

    EsDA,一站式嵌入式軟件

    EsDA是一套面向工業智能物聯領域的嵌入式系統設計自動化工具集,包含實時操作系統AWorksLP、低代碼開發平臺AWStudio、資源管理平臺AXPI、跨平臺GUI引擎AWTK和云服務平臺ZWS
    的頭像 發表于 09-15 08:10 ?290次閱讀
    <b class='flag-5'>EsDA</b>,一站式嵌入式軟件

    使用NS1串口服務器HTTP模式上傳服務器數據

    HTTP協議工作于客戶端-服務端架構之上。瀏覽器作為HTTP客戶端通過URL向HTTP服務端即Web服務器發送所有請求。Web服務器根據接收到的請求
    的頭像 發表于 08-30 12:36 ?358次閱讀
    使用NS1<b class='flag-5'>串口</b>服務器<b class='flag-5'>HTTP</b>模式上傳服務器數據

    快速實現C2000串口程序升級

    電子發燒友網站提供《快速實現C2000串口程序升級.pdf》資料免費下載
    發表于 08-29 10:50 ?1次下載
    <b class='flag-5'>快速</b><b class='flag-5'>實現</b>C2000<b class='flag-5'>串口</b>程序升級

    請問如何使用HTTP請求獲取本地時間?

    我正在嘗試使用 AT 命令和 HTTP 請求獲取本地時間,我已經從中獲得了時間www.gooogle.com但這個時間是GMT時區, 我想知道如何獲取本地時區,我已經嘗試過 AT CIPNTP,但它不起作用。
    發表于 07-16 06:20

    USB串口串口卡的性能比較

    在當今的電子設備中,串口通信是一種非常常見的通信方式。隨著技術的發展,USB接口逐漸取代了傳統的串口接口,但串口通信在某些特定領域仍然具有不可替代的作用。因此,市場上出現了USB
    的頭像 發表于 07-15 15:21 ?857次閱讀

    鴻蒙開發網絡管理: @ohos.net.http 數據請求

    每一個httpRequest對應一個http請求任務,不可復用
    的頭像 發表于 06-18 15:42 ?823次閱讀
    鴻蒙開發網絡管理: @ohos.net.<b class='flag-5'>http</b>  數據<b class='flag-5'>請求</b>

    ESD管 AZ5825-01F型號ESDA05CPX參數對比

    ESD管 AZ5825-01F型號ESDA05CPX參數對比
    的頭像 發表于 05-11 08:03 ?879次閱讀
    <b class='flag-5'>ESD</b>管 AZ5825-01F型號<b class='flag-5'>ESDA</b>05CPX參數對比

    鴻蒙OS開發實戰:【網絡管理HTTP數據請求

    應用通過HTTP發起一個數據請求,支持常見的GET、POST、OPTIONS、HEAD、PUT、DELETE、TRACE、CONNECT方法。
    的頭像 發表于 04-01 16:31 ?697次閱讀
    鴻蒙OS開發實戰:【網絡管理<b class='flag-5'>HTTP</b>數據<b class='flag-5'>請求</b>】

    鴻蒙原生應用開發-網絡管理HTTP數據請求

    一、場景介紹 應用通過HTTP發起一個數據請求,支持常見的GET、POST、OPTIONS、HEAD、PUT、DELETE、TRACE、CONNECT方法。 二、接口說明 HTTP數據請求
    發表于 03-29 17:51

    鴻蒙OS開發實例:【工具類封裝-http請求

    ;@ohos.promptAction';** **封裝HTTP接口請求類,提供格式化的響應信息輸出功能。 使用 DevEco Studio 3.1.1 Release 及以上版本,API 版本為 api 9 及以上
    的頭像 發表于 03-27 22:32 ?1369次閱讀
    鴻蒙OS開發實例:【工具類封裝-<b class='flag-5'>http</b><b class='flag-5'>請求</b>】

    arkts http 發起請求失敗

    http 發起請求 官網Http
    發表于 03-23 00:33

    HTTP協議的運作方式及請求/響應的步驟

    基于HTTP的客戶/服務器模式的信息交換過程它分四個過程建立連接、發送請求信息、發送響應信息、關閉連接。
    的頭像 發表于 02-01 11:02 ?1410次閱讀
    <b class='flag-5'>HTTP</b>協議的運作方式及<b class='flag-5'>請求</b>/響應的步驟

    如何利用AWFlow快速使用無線模組ZM602

    在物聯網快速發展的今天,無線模組成為連接各種設備于互聯網的關鍵組件。本文旨在介紹如何通過EsDA開發套件快速使用本公司自研的ZM602無線模組的內容。項目簡介無線模組可以使設備通過無線網絡
    的頭像 發表于 01-26 08:25 ?1076次閱讀
    如何利用AWFlow<b class='flag-5'>快速</b>使用無線模組ZM602

    usb串口線怎么使用 usb串口串口usb的區別

    )進行通信。因此,通過使用USB串口線,可以將現代計算機與串口設備連接起來,實現數據傳輸和通信。 在使用USB
    的頭像 發表于 01-22 14:56 ?4649次閱讀

    如何基于EsDA開發套件快速使用射頻讀卡器模塊

    無線射頻讀寫卡技術在門禁系統,電子支付領域和物聯網等領域中具有越來越廣泛的應用。本文將基于EsDA開發套件講解如何快速上手并開發射頻讀卡器模塊的相關業務,為開發者大大縮短了學習和開發時間成本。項目
    的頭像 發表于 01-11 08:24 ?709次閱讀
    如何基于<b class='flag-5'>EsDA</b>開發套件<b class='flag-5'>快速</b>使用射頻讀卡器模塊
    主站蜘蛛池模板: 欧美日韩性猛交xxxxx免费看 | 久久91精品牛牛 | 色视频免费 | 国产二区三区 | 456成人免费高清视频 | 免费特黄 | 视频综合网 | 不卡精品国产_亚洲人成在线 | 国产永久视频夜色资源网 | 国产精品美女免费视频观看 | 秋霞一级特黄真人毛片 | 免费人成在线观看网站品爱网 | 久久天天躁狠狠躁夜夜爽 | 精品成人在线 | 久操视频免费看 | 中文在线资源链接天堂 | 天天射色综合 | 免费高清视频在线观看 | 性叉叉 | 亚洲欧美一区二区三区在线播放 | 色爽爽爽爽爽爽爽爽 | 五月婷婷丁香 | 国内精品91久久久久 | 图片区网友自拍另类图区 | 国产午夜视频在线观看第四页 | 失禁h啪肉尿出来高h受 | 亚洲成a人伦理 | 欧美色图综合 | 五月婷色| 午夜神马福利 | 五月天婷婷色综合 | 综合久色| 成人伊人| 午夜视频在线网站 | 天天干影院 | 免费簧片视频 | 免费看黄在线 | 国产精品毛片久久久久久久 | bt天堂电影 | 国产成人精品日本亚洲专 | 一区二区三区视频免费观看 |