从USB操纵杆输入信息
我们正在研究如何将USB操纵杆连接到AnyMath模型,以便能够从真实的输入设备测试模型或硬件的控制。
.gif)
任务说明
任何硬件都可以连接到AnyMath中的脚本和模型,在这个项目中,我们展示了通过USB将HID设备(人机接口设备)连接到本地计算机的能力。 AnyMath子系统负责与AnyMath进行通信。整合。
运行命令 engee.package.install("Engee-Device-Manager") 在命令行上,获取您的ID并下载客户端程序(链接将出现在终端中,您可以点击它)。
在[通信和安全]部分获取访问令牌(https://engee.com/account/safety )你的AnyMath个人帐户("个人访问令牌"部分)。
启动程序后 engee-device-manager.exe (配置为您的地址并使用有效的PAT令牌),在AnyMath和本地计算机之间创建安全通信通道,允许您在单个模型中使用本地软件和硬件资源。
您可以通过HID配置文件连接到本地硬件,该配置文件可以配置为输入设备,操纵杆,Arduino等业余爱好平台和许多其他硬件工具。
在Windows中,您可以通过在命令窗口中键入行来检查操纵杆 joy.cpl. 这是一个辅助工具,允许您检查连接的操纵杆,但它不会显示键盘,鼠标或Arduino。
专责小组 Get-PnpDevice -Class "HIDClass" | Select-Object FriendlyName, InstanceId 它允许您看到VID和PID标识符,我们将需要配置与设备(操纵杆)的通信信道。 这里是找到他们的地方。:
数字1781和0898需要转换为十进制,可以在后续命令中使用。 在Linux上,命令执行相同的操作 lsusb.
下一步是检查连接:
hid = Main.EngeeDeviceManager.Devices.HID.Hid(6017,2200)
可以通过指定数据包大小从该通道读取数据。 接收向量的大小受设备发送的信息量的限制。
Main.EngeeDeviceManager.Devices.HID.read( hid, 8 )
我们已经读取了一个8字节的数据包,反映了控制面板的旋钮和按钮的实际位置。 然后这个包可以被转换和重新组合以提取必要的信息。
从USB/HID设备读取数据到AnyMath模型
从真实硬件获取新数据并将其发送到AnyMath模型并不比在脚本中获取这些信息困难得多。 首先,我们使用AnyMath功能块创建一个模型。:
engee.open("usb_controller_example.engee")
.png)
此组件的代码包含以下行:
package_dir = "/internal_persistent_vol/support_packages/locations/AnyMath-Device-Manager/AnyMathDeviceManager.jl"
if !isdefined(Main, :AnyMathDeviceManager)
include("$(package_dir)/src/AnyMathDeviceManager.jl")
end
using .AnyMathDeviceManager.Devices: HID
mutable struct Block <: AbstractCausalComponent
hid::Any
function Block()
hid = HID.Hid(6017,2200)
return new(hid)
end
end
初始化后,在计算模型的每一步都有一个代码被执行。:
function (c::Block)(t::Real)
return HID.read(c.hid, 8)
end
因此,我们得到一个组件,该组件从控制面板读取数据并将数字发送到模型。
运行此模型的步骤
创建此模型将工作的工作环境的最小步骤如下:
-启动AnyMath计划。集成(可能会实施更新)
-点击"连接"(连接通常需要10秒)
-将硬件连接到本地计算机
-启动模型(通过在设置中启用减速,以便模型时间以与用户实时相同的速度运行)。
结论
我们轻松地将操纵杆连接到AnyMath环境,我们可以控制模型参数,物理或自动化操作。