#电梯 #TCP服务器 #实时 #硬件 #实验室 #ttk4145 #comedi

app ttk4145_elevator_server

NTNU实时实验室电梯硬件的基于TCP的API

4个版本

使用旧Rust 2015

0.1.3 2018年2月12日
0.1.2 2018年2月12日
0.1.1 2018年2月4日
0.1.0 2018年1月7日

#678 in 硬件支持

无许可证

27KB
436

电梯服务器

TTK4145电梯项目中,电梯硬件通过TCP进行通信。每个电梯都暴露出一个服务器,客户端(电梯逻辑)可以连接到它。此存储库包含电梯接口服务器部分的代码。

用法

依赖关系

硬件 & comedi

为了使此程序运行,需要通过comedi支持的io卡连接电梯硬件,就像在NTNU实时实验室中一样。它专门为与该实验室的电梯硬件一起工作而设计,不建议在实验室外使用此软件。对于将在实时实验室外工作的解决方案,请查看其中一个模拟器(模拟器v2模拟器v3)。

Cargo & Rust

要编译和安装电梯服务器,需要cargo和rust。最好通过rustup安装。

硬件访问

要使进程访问实时实验室中的io卡(电梯硬件),运行进程的用户必须在iocard组中。要将用户student添加到iocard组,请运行sudo usermod -a -G iocard student

安装

如果未安装软件,可以运行cargo install ttk4145_elevator_server来安装它。如果已安装旧版本,并且希望升级到最新版本,则运行cargo install --force ttk4145_elevator_server即可。

运行

可以通过运行ElevatorServer来启动服务器。启动后,服务器将监听在localhost:15657。然后您可以使用客户端连接到它,该客户端遵循协议

客户端

协议

  • 所有TCP消息必须长度为4字节
  • 从硬件读取指令的回复长度为4字节,最后一个字节总是0
  • 向硬件写入指令不发送任何回复

写入

写入中 命令[0] 命令[1] 命令[2] 命令[3]
保留 x x x x
电机方向 1 方向[-1(255),0,1] x x
指令按钮指示灯 2 按钮[0,1,2] 楼层
[0..NF]
值[0,1]
楼层指示器 3 楼层[0..NF] x x
门开指示灯 4 值[0,1] x x
停止按钮指示灯 5 值[0,1] x x

读取

读取中 命令[0] 命令[1] 命令[2] 命令[3] 响应[0] 响应[1] 响应[2] 响应[3]
指令按钮 6 按钮[0,1,2] 楼层[0..NF] x 6 激活[0,1] 0 0
楼层传感器 7 x x x 7 在楼层[0,1] 楼层[0..NF] 0
停止按钮 8 x x x 8 激活[0,1] 0 0
障碍物开关 9 x x x 9 激活[0,1] 0 0

依赖关系

~43KB