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 编号写入导出文件并返回指示它是否成功的布尔值:
现在让我们看一下该函数。当我们写入 sysfs 文件时,我们将编写一个字符串,该字符串将以某种方式命令内核。此函数打开指定的文件并写入字符串。由于写入操作非常小,并且无需接触任何存储介质即可与内核交互,因此我们使用同步写入。发生的任何错误都将引发异常,我们将捕获该异常以确定是否返回成功(true)或不返回(false)。TryWrite
现在,我们已准备好实际读取或写入 GPIO。该函数将读取 GPIO 编号并返回指示 GPIO 当前状态的字符串。如果 GPIO 是输入,则返回的值将为“I”或 “;如果 GPIO 作为输出被主动驱动,则返回的值将为 ”“ 或 ”“。如果出现问题,也可以返回“”。gpio_getNPUT_HIGHINPUT_LOWHIGHLOWERROR
让我们一步一步地看看该怎么做。首先,我们根据传递的 GPIO 编号获取 GPIO 文件的路径:
在此之后,我们确保在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”))
最后,我们将方向/值对转换为相应的字符串,该字符串返回给调用者:
Writing to a GPIO
下面是用于写入 GPIO 的函数。就像 在 中一样,我们根据 GPIO 编号检索基本路径,并确保 GPIO 已初始化:gpio_setgpio_get
现在,我们将传递的值(即“,”“,”或“”)转换为要发送到方向寄存器的命令:INPUTHIGHLOW
剩下的就是编写命令并将成功或失败返回给调用方:
处理 HTTP 请求
此时,我们已准备好编写函数来处理 HTTP 请求以执行所请求的函数。首先,我们将 URL 拆分为多个组件。第一个组件将是基本网址(例如“gpio”);如果有两个组件,我们将获得指定的GPIO值;如果有三个组件,我们将指定的GPIO设置为指定的值。如果组件数量有任何不同,则发出的请求无效,我们将返回错误:
我们要做的下一件事是将GPIO编号拆分为一个数组。我们使用逗号字符执行此操作,它允许将多个 GPIO 指定为逗号分隔的列表。如果不存在逗号,则仅指定一个 GPIO,并且将返回一个包含单个元素的数组:
var numlist = url[1].split(“,”)
现在我们准备开始发送我们的回复。由于正在发送JSON字符串,请继续写出开头的数组字符:
res.write(“[”)
接下来,我们在请求中的所有GPIO号码上设置一个循环:
for (i=0;i
因为我们正在编写一个JSON数组,所以需要在每个元素之间发送一个逗号。如果前面有一个元素,我们可以在每个元素的开头写逗号:
if (i》0) res.write(“,”)
现在,我们将GPIO数字转换为整数,并进行一些错误检查:
接下来,我们查看参数的数量,以决定是获取还是设置GPIO信息。我们存储返回字符串并将其写入输出:
循环完成后,我们关闭JSON数组并完成向客户端的发送:
最后是我们的模块。导出功能。我们处理任何选项并设置端点以连接到我们的gpio功能:
下一部分将讨论如何支持加速计。
审核编辑:郭婷
-
服务器
+关注
关注
12文章
9133浏览量
85351 -
GPIO
+关注
关注
16文章
1204浏览量
52060
发布评论请先 登录
相关推荐
评论