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

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

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

3天內不再提示

ts7680演示服務器如何實現GPIO支持

星星科技指導員 ? 來源:嵌入式計算設計 ? 作者:Michael Schmidt ? 2022-10-12 10:00 ? 次閱讀

TS-7680 采用標準系統架構介面來控制 GPIO,因此支持 GPIO 的軟件包可由 Sysfs 接口在任何電路板上使用。

要控制GPIO,我們必須首先將GPIO編號寫入,然后使用文件讀取和寫入方向(輸入的有效值為“輸入”,輸出為“輸出”) 。我們還使用文件讀取和寫入GPIO的值,其中有效值為“高”和“低”。/sys/class/gpio/export/sys/class/gpio/gpio#/direction/sys/class/gpio/gpio#/direction

現在,讓我們看一下 中的實現。首先,我們需要“fs”模塊,因為我們將與文件系統中的 sysfs 文件進行交互以控制我們的 GPIO:gpio.js

var fs = require(“fs”)

在執行其他任何操作之前,讓我們實現一個函數,以確保在實際訪問控制 GPIO 的 sysfs 文件之前已執行 GPIO 初始化。這相當簡單。只需嘗試將 GPIO 編號寫入導出文件并返回指示它是否成功的布爾值:

files-aHViPTYzODY3JmNtZD1pdGVtZWRpdG9yaW1hZ2UmZmlsZW5hbWU9aXRlbWVkaXRvcmltYWdlXzU5Yjk2YjZhMmU1OWUuanBnJnZlcnNpb249MDAwMCZzaWc9ZmY2NjMwM2I2YjIxNTg5MjYyZThkYWI1MzY0YWI0MjI253D

現在讓我們看一下該函數。當我們寫入 sysfs 文件時,我們將編寫一個字符串,該字符串將以某種方式命令內核。此函數打開指定的文件并寫入字符串。由于寫入操作非常小,并且無需接觸任何存儲介質即可與內核交互,因此我們使用同步寫入。發生的任何錯誤都將引發異常,我們將捕獲該異常以確定是否返回成功(true)或不返回(false)。TryWrite

files-aHViPTYzODY3JmNtZD1pdGVtZWRpdG9yaW1hZ2UmZmlsZW5hbWU9aXRlbWVkaXRvcmltYWdlXzU5Yjk3NjMyMDE5ZDYucG5nJnZlcnNpb249MDAwMCZzaWc9MzJjZGRmOGM0NTQyYTRlMTMyYTcyYTU4OWI3MTJiYTg253D

現在,我們已準備好實際讀取或寫入 GPIO。該函數將讀取 GPIO 編號并返回指示 GPIO 當前狀態的字符串。如果 GPIO 是輸入,則返回的值將為“I”或 “;如果 GPIO 作為輸出被主動驅動,則返回的值將為 ”“ 或 ”“。如果出現問題,也可以返回“”。gpio_getNPUT_HIGHINPUT_LOWHIGHLOWERROR

讓我們一步一步地看看該怎么做。首先,我們根據傳遞的 GPIO 編號獲取 GPIO 文件的路徑:

files-aHViPTYzODY3JmNtZD1pdGVtZWRpdG9yaW1hZ2UmZmlsZW5hbWU9aXRlbWVkaXRvcmltYWdlXzU5Yjk4MDVlZWU2NTYucG5nJnZlcnNpb249MDAwMCZzaWc9MmJlNzcyNTQyM2IxNjhhNzU1ZTIwZmQ0OTY5MjBjYmI253D

在此之后,我們確保在sysfs中初始化GPIO,如果不成功,則返回錯誤。例如,傳遞的值可能無效:

if (!gpio_init(path,num)) return “ERROR”

然后,我們可以通過讀取相對于GPIO路徑的文件來獲得GPIO的方向。這將是“”表示輸出,或“”表示輸入:directionOUTIN

var dir=fs.readFileSync(path+“/direction”, “utf8”)

接下來,我們通過讀取文件來獲取GPIO的值。這將是一個“”或“,”,它將轉換為一個數字:value10

var data=Number(fs.readFileSync(path+“/value”, “utf8”))

最后,我們將方向/值對轉換為相應的字符串,該字符串返回給調用者:

files-aHViPTYzODY3JmNtZD1pdGVtZWRpdG9yaW1hZ2UmZmlsZW5hbWU9aXRlbWVkaXRvcmltYWdlXzU5Yjk4MTM4MzNiZTYucG5nJnZlcnNpb249MDAwMCZzaWc9MzFiN2Y5MDlhOWEzMzBmY2U4MzdhOWNhYmQwYjM1ZDk253D

Writing to a GPIO

下面是用于寫入 GPIO 的函數。就像 在 中一樣,我們根據 GPIO 編號檢索基本路徑,并確保 GPIO 已初始化:gpio_setgpio_get

files-aHViPTYzODY3JmNtZD1pdGVtZWRpdG9yaW1hZ2UmZmlsZW5hbWU9aXRlbWVkaXRvcmltYWdlXzU5Yjk4MWIwMjMxMDcucG5nJnZlcnNpb249MDAwMCZzaWc9NDM3ZWIyMGE5MTQ3YzUzMzA0ZGQyYTI3MmM5NGUzMGE253D

現在,我們將傳遞的值(即“,”“,”或“”)轉換為要發送到方向寄存器的命令:INPUTHIGHLOW

files-aHViPTYzODY3JmNtZD1pdGVtZWRpdG9yaW1hZ2UmZmlsZW5hbWU9aXRlbWVkaXRvcmltYWdlXzU5Yjk4MWZkYzE2NmYucG5nJnZlcnNpb249MDAwMCZzaWc9Y2NkZmUzZGRlMzhiYmVlNjgyOTMzN2ZlOWU5Y2RmNzU253D

剩下的就是編寫命令并將成功或失敗返回給調用方:

files-aHViPTYzODY3JmNtZD1pdGVtZWRpdG9yaW1hZ2UmZmlsZW5hbWU9aXRlbWVkaXRvcmltYWdlXzU5Yjk4MmUxZTk4M2YucG5nJnZlcnNpb249MDAwMCZzaWc9N2YwYjNmMDQ2YTIwMTk3MWI0NDg0MjNmZTFiYWU0YWM253D

處理 HTTP 請求

此時,我們已準備好編寫函數來處理 HTTP 請求以執行所請求的函數。首先,我們將 URL 拆分為多個組件。第一個組件將是基本網址(例如“gpio”);如果有兩個組件,我們將獲得指定的GPIO值;如果有三個組件,我們將指定的GPIO設置為指定的值。如果組件數量有任何不同,則發出的請求無效,我們將返回錯誤:

files-aHViPTYzODY3JmNtZD1pdGVtZWRpdG9yaW1hZ2UmZmlsZW5hbWU9aXRlbWVkaXRvcmltYWdlXzU5Yjk4M2M0YmMyYjkucG5nJnZlcnNpb249MDAwMCZzaWc9NzY0M2RiOTVhNGY5YjQ3NDE1NzViOWI3ZWNkM2M0NmE253D

我們要做的下一件事是將GPIO編號拆分為一個數組。我們使用逗號字符執行此操作,它允許將多個 GPIO 指定為逗號分隔的列表。如果不存在逗號,則僅指定一個 GPIO,并且將返回一個包含單個元素的數組:

var numlist = url[1].split(“,”)

現在我們準備開始發送我們的回復。由于正在發送JSON字符串,請繼續寫出開頭的數組字符:

res.write(“[”)

接下來,我們在請求中的所有GPIO號碼上設置一個循環:

for (i=0;i

因為我們正在編寫一個JSON數組,所以需要在每個元素之間發送一個逗號。如果前面有一個元素,我們可以在每個元素的開頭寫逗號:

if (i》0) res.write(“,”)

現在,我們將GPIO數字轉換為整數,并進行一些錯誤檢查:

files-aHViPTYzODY3JmNtZD1pdGVtZWRpdG9yaW1hZ2UmZmlsZW5hbWU9aXRlbWVkaXRvcmltYWdlXzU5Yjk4NDc5NTQ4ZDQucG5nJnZlcnNpb249MDAwMCZzaWc9NzVkYTE5YTQzMmIyMmE4YzlhYzBlNGE4Y2E2YWEyZGI253D

接下來,我們查看參數的數量,以決定是獲取還是設置GPIO信息。我們存儲返回字符串并將其寫入輸出:

files-aHViPTYzODY3JmNtZD1pdGVtZWRpdG9yaW1hZ2UmZmlsZW5hbWU9aXRlbWVkaXRvcmltYWdlXzU5Yjk4NzJmMDM5MGUucG5nJnZlcnNpb249MDAwMCZzaWc9NTU0YzMzNjBlMWRiNzMzYzRhZTAxM2FiMmQ3NDA5YmI253D

循環完成后,我們關閉JSON數組并完成向客戶端的發送:

files-aHViPTYzODY3JmNtZD1pdGVtZWRpdG9yaW1hZ2UmZmlsZW5hbWU9aXRlbWVkaXRvcmltYWdlXzU5Yjk4NzZmMTU0ZGQucG5nJnZlcnNpb249MDAwMCZzaWc9NTVjYWJiNWI2NWYwNTAxZjQxYWY1ZGZiY2E2YmU1OGE253D

最后是我們的模塊。導出功能。我們處理任何選項并設置端點以連接到我們的gpio功能:

files-aHViPTYzODY3JmNtZD1pdGVtZWRpdG9yaW1hZ2UmZmlsZW5hbWU9aXRlbWVkaXRvcmltYWdlXzU5Yjk4N2U2NzQ0NGUucG5nJnZlcnNpb249MDAwMCZzaWc9MDI4NmFkYmQ3NmFmNjFjNDk2M2VhMmJhY2ViNjUwMjY253D

下一部分將討論如何支持加速計。

審核編輯:郭婷

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

    關注

    12

    文章

    9547

    瀏覽量

    86830
  • GPIO
    +關注

    關注

    16

    文章

    1235

    瀏覽量

    53160
收藏 人收藏

    評論

    相關推薦

    什么是服務器虛擬化?私人云服務器

    什么是 服務器虛擬化 ? 服務器虛擬化是一種將物理服務器轉化為虛擬服務器的過程,使得多個虛擬服務器可以在同一臺物理
    的頭像 發表于 08-08 10:44 ?1576次閱讀

    linux服務器和windows服務器

    管理工具。這 使得Windows服務器更適合那些對服務器操作系統不太熟悉的用戶,如小型企業和個人網站的管理員。 Windows服務器還擁有廣泛的應用支持。在商業應用領域,很多企業軟件和
    發表于 02-22 15:46

    【NanoPi NEO申請】基于NanoPi NEO的簡單服務器的制作

    申請理由:項目描述:利用NanoPi NEO開發套件制作一個簡單的家庭終端服務器,能夠實現1、利用GPIO口連接外部傳感以測量相關的值2、設備接入以訪問相關傳感
    發表于 10-25 16:17

    Web服務器演示的源代碼在哪里?

    我已經購買了ML505,并且我已經嘗試了它附帶的Web服務器演示。我的計算機檢測到它并建立連接,但我無法在指定的地址顯示一個網頁(我嘗試了許多設置無濟于事)。但是,真正的問題是 - Web服務器
    發表于 08-21 09:35

    如何實現SSH服務器?

    你好,有人已經實現了SSH(2版)服務器嗎?你好嗎?SSH只是帶有SSL的telnet,還是有其他的東西有一個基本的SSH服務器?如何實施SFTP?感謝
    發表于 03-24 10:14

    OPC服務器開發淺談 — 服務器模型

    的開發,主要包括兩大部分的工作:OPC接口的實現和設備驅動部分的開發。OPC接口的實現,實質上就是按照OPC標準進行COM接口開發,對于大多數的OPC服務器開發者來說,我認為沒有必要涉足。目前市場...
    發表于 07-02 08:29

    服務器與物理服務器的區別是什么?

    是指物理上的單獨服務器,物理服務器的構成包括處理、硬盤、內存、系統總線。用戶可以方便的進行遠程維護,免費重裝系統 硬件級別上實現云主機之間的完全隔離; 內置冗余的共享存儲和智能備份,
    發表于 12-09 09:56

    ASUS華碩 TS500-E6/PS4服務器主板BIOS 0

    ASUS華碩 TS500-E6 PS4服務器主板BIOS 0902版 主板驅動
    發表于 12-06 11:54 ?24次下載

    功能服務器支持的操作系統

    功能服務器支持的操作系統              目前功能服務器支持的操作系統主要
    發表于 01-08 14:49 ?902次閱讀

    光盤鏡像服務器支持的操作系統

    光盤鏡像服務器支持的操作系統               目前光盤鏡像服務器支持
    發表于 01-09 11:48 ?755次閱讀

    浪潮天梭TS850多路服務器

    浪潮天梭TS850是我國國內第一款自主設計的八路服務器,為我國云計算的自主可控奠定了硬件基礎。 成功推出國內第一款自主設計的八路服務器天梭TS850。這款
    發表于 03-25 15:18 ?31次下載

    AMD重新構思服務器科技,現可支持APU服務器軟件

    AMD重新構思服務器科技,現可支持APU服務器軟件,幫助服務器適應現代數據中心工作負載的新一代開發工具亮相APU13開發者峰會。
    發表于 11-15 10:19 ?695次閱讀

    如何實現TS-7680硬件的支持

      一旦 npm 升級,任何時候它運行都會返回一個錯誤,說 npm 不支持 node.js v0.10.29,你應該升級到更新的版本。忽略此警告,因為 v0.10.29 是 TS-7680 支持的最新版本,因為較新的版本缺少 A
    的頭像 發表于 06-29 14:20 ?921次閱讀
    如何<b class='flag-5'>實現</b>對<b class='flag-5'>TS-7680</b>硬件的<b class='flag-5'>支持</b>

    并發服務器的設計與實現

    并發服務器支持多個客戶端的連接,最大可接入的客戶端數取決于內核控制塊的個數。當使用Socket API時,要使服務器能夠同時支持多個客戶端的連接,必須引入多任務機制,為每個連接創建一個
    的頭像 發表于 04-25 15:35 ?996次閱讀
    并發<b class='flag-5'>服務器</b>的設計與<b class='flag-5'>實現</b>

    gpu服務器是干什么的 gpu服務器與cpu服務器的區別

     相比于傳統的CPU服務器,GPU服務器支持同時計算大量相似的計算操作,可以實現更強的并行計算性能。GPU服務器通常配備多個高性能的GPU,
    的頭像 發表于 12-02 17:20 ?2183次閱讀
    主站蜘蛛池模板: 特黄特色视频 | 国产做爰一区二区 | 5252色欧美在线激情 | 国产成人91青青草原精品 | 特级黄色淫片 | 特级毛片永久久免费观看 | 高清性欧美xxx | 日本久久黄色 | 欧美黄色免费看 | 丝袜紧身裙国产在线播放 | 婷婷亚洲五月 | 亚洲综合激情丁香六月 | 就操| 亚洲三级免费观看 | 岛国午夜 | 人人做人人爽人人爱秋霞影视 | 特级毛片永久久免费观看 | 亚洲夜夜操 | 丁香婷婷开心激情深爱五月 | 免费观看一级成人毛片 | 欧美特级生活片 | 日本在线观看高清不卡免v 日本在线观看永久免费网站 | www.xxx.日本| 91大神亚洲影视在线 | 婷婷久久综合网 | 男人的天堂色偷偷之色偷偷 | 男人午夜视频在线观看 | 久久精品人人做人人看 | www.亚洲黄色| 日本人xxxxxxxxx69 | 五月婷婷六月婷婷 | 亚洲免费一级视频 | 又黄又粗暴的120秒免费gif视频 | 一区二区三 | 久久久国产精品免费 | 久久激情综合网 | 天天搞天天操 | 男人和女人做免费做爽爽视频 | 西西午夜影院 | 国产在线视频欧美亚综合 | 亚洲国产福利精品一区二区 |