- 打印
如何在I/O Gateway上使用通用串行驱动程序
了解如何让I/O Gateway与任何串行设备进行通信。
**2021年11月1日,Tulip将不再销售I/O Gateway设备。Edge IO和Edge MC设备仍然可用。了解更多
本文将解释如何使用I/O网关上的通用串行驱动程序与大多数串行设备进行通信。本文可推广到其他Tulip Edge设备,如Edge MC和Edge IO。
本文假设你已经完成了I/O网关的设置。
请注意,该驱动与目前仅适用于Windows Tulip播放器的串行驱动(仅播放器)不同。
什么是通用串行驱动程序?
通用串行驱动程序允许I/O网关使用通用串行协议与其他设备进行通信。这些设备可以是这样的。
- Arduino
- 树莓派
- 其他Tulip Edge设备
- 微型控制器
- 许多其他设备
由于这个驱动器的多功能性,它有一个复杂的配置。这个配置需要与你其他设备的配置完全匹配。
这个驱动程序可以支持同时与多个设备进行通信。
注意:Tulip不会为你连接到通用串行驱动程序的设备编写自定义代码。
开启通用串行驱动程序
通过登录I/O网关创建的本地网络,将您的计算机连接到I/O网关。
打开设备门户。在仪表盘页面,点击页面左侧的 "配置驱动程序 "按钮。
在驱动程序配置页面,点击 "通用串行 "选项。
默认情况下,"通用串行 "选项应该已经是绿色的(启用),并配置了一些常用设置。
Windows倾向于使用回车键(\r)。
通用串行驱动程序需要一些配置,以便继续打开该驱动程序。
下面是每个字段的选项。
写入后缀
- 预期的输入。任何字符串 - 这将被附加到I/O网关将发送给设备的任何消息上,通常是换行(\n)或回车(\n\r)。
- 需要。不需要
路径匹配器
- 预期的输入。到你的设备的系统路径 - 这可以是*,与任何未使用的串行设备相匹配(这对使用usb-to-serial适配器很有用)
- 需要: 是
名称
- 预期的输入。该设备的名称(这将用于从你的应用程序中引用该设备)。
- 必需的: 是
分隔符
- 预期的输入。任何字符串(这将用于把来自你的设备的信息分成几块,然后发送到你的Tulip账户上)
- 要求:是
波特
- 预期的输入。设备将使用的通信波特率
- 需要:是
本地DB9端口
如果你打算使用I/O网关上的本地DB9端口,你将需要在你的路径匹配器中使用/dev/ttyO4
路径**。** 这是一个大写的O,而不是一个0。
构建一个与你的串行驱动程序一起工作的应用程序
下面是如何建立一个应用程序来测试你的驱动程序。
首先,创建一个新的应用程序并添加一个按钮。
在该按钮上添加一个触发器,用你用来配置驱动程序的名称呼出通用串行设备。
这里是你在 "然后 "语句中需要的字段。
- "运行设备功能"
- "通用的串行设备"
- "发送字符串到串行设备"
- 在 "此站"
- 要发送的设备。"text" "RS232"
- 要发送的信息。"文本" "测试通用串行"
在该应用程序中添加一个触发器,当通用串行驱动器发出数据时,将数据记录到一个变量中。使用一个 "If "语句,只有在正确的设备输出数据时才存储数据。
当
- "设备""通用串行设备 "在 "此站 "输出数据
如果
- "设备输出"
- "名称"
- "="
- "文本" "RS232"
那么
- "数据操作"
- "存储"
- "设备输出" "数据"
- 位置。"通用序列"(这是一个变量的名称)
将该变量添加到你的应用程序中。它将是一个具有 "名称 "和 "数据 "属性的对象。
测试该应用程序
使用一个空调制解调器和一个USB到RS232的转换器来测试该应用程序。
将USB连接到你的电脑。然后将空调制解调器适配器连接到RS232适配器和I/O网关的DB9端口。
从开始。
如果你是在Windows上,使用Putty来测试连接。通过使用设备管理器获得端口号。
在 "速度 "框中输入COM端口号,并选择 "连接类型 "为 "串行"
Putty终端只有在你点击运行的应用程序中的按钮时,才会向I/O网关打印消息。
通过Putty输入消息 "Tulip "并按下回车键,将其发送至。
如何使用Node.js在Linux或Mac上测试通用串行驱动程序
这需要node.js和npm。然后,通过npm安装serialport
包。
const SerialPort = require('serialport')
const Readline = require('@serialport/parser-readline')
const port = new SerialPort('/dev/ttyUSB0', { baudRate: 19200 })
const parser = new Readline()
port.pipe(parser)
parser.on('data', line => {
console.log(> ${line})
});
let test = false;
摄取量(()=>{
如果(test){
port.write('output/n')。
test = false
}
else {
port.write('other output\n');
test = true
}
},1000)