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