注释
|
删除的问题:从标题 |
|
我会在早上试着看看这个。我注意到,有时如果连接了另一台设备,用户界面将不会更新。但是我没有注意到我的 PS3 脚本有这个问题。
|
|
@AustinSaintAubin我没有运行 PS3 脚本,我只是使用其中的几个 socket.io 片段来计算 API 的功能。 通过昨晚的进一步测试,我发现当连接到 websocket 时,您必须先调用 SerialPort.Open,然后CNCEngine才会将您的套接字添加到控制器。 每次我打开 串口列表 它显示我的串行端口未连接,即使我在主 UI 中有活动连接。 |
|
@liqdfire 顺便说一句,如果我们可以创建一个通用接口或样板代码示例来实现 cncjs pendant,那就太好了。这将节省大量时间和麻烦。 |
|
@cheton 我同意你的观点,需要为外部模块创建一个标准的 api,以便能够与 CNC 引擎连接和交互。 尽管我运行 Windows 并且项目中的大多数构建脚本都是 bash 脚本,但我一直在努力设置开发环境。即使在 Windows 上使用 bash,设置也不是很干净。我打算今晚设置一个 Ubuntu 虚拟机并在上面进行设置。 到目前为止,这是我的一些想法:
我非常乐意协助您完成此项目所需的任何工作。 |
|
我在 Windows 中设置了调试环境,并且能够进行一些测试。我无法在调试时重现问题,但我认为它可能与最初想到的吊坠无关。 我今天在我的机器上运行了两个作业,两次都在作业进行到一半时 UI 停止了更新。不过,工作仍然完成,版本 1.8.15。我将继续调试。 |
|
@liqdfire |
|
我找到了这个问题的根本原因。removeConnection() 函数中有一个错误,如果索引值为 -1,则它会强制从连接数组中删除最后一项,这意味着未找到。 的语句 removeConnection(socket) {
const index = _.findIndex(this.connections, (c) => {
return c.socket === socket;
});
this.connections.splice(index, 1);
}
|
我设法为网络使用了一个抽象层(即Controller 类),因此 UI 小部件在发送命令或将数据写入端口时不需要处理端口。我们可以在吊坠上添加类似的东西。吊坠服务器可以拥有多个控制器实例,每个实例都连接到一个串行端口。
CNCEngine 服务的实现类似于按引用调用,只有第一个“打开”命令会打开串口,后续对“打开”命令的调用只会将套接字添加到连接数组中。除非从 UI 或 pendant 主动发出“关闭”命令,否则端口不会关闭以保持正在运行的作业。 事实上,“打开”这个词可能会让人混淆,因为它会接管串行端口,我可能会在未来的版本中添加“连接”和“断开连接”以避免混淆。
你是对的。我需要改进这部分以创建一个通用状态以使其变得简单。 |
|
已在 1.8.16 中修复 我还在 cncjs-pendant-boilerplate 中添加了几个特性,你可以进入命令行模式直接向 Grbl 发送命令。 |



版本 1.8.15
我正在编写一个新的远程吊坠来实现 3D Connection Space Mouse 的慢跑功能,使用 ps3 吊坠作为确定 api 的基础。当我订阅“Grbl:state”事件时,UI 不再更新。
` socket.on(‘connect’, function() {
console.log(‘Socket IO [Connected]: ‘ + socket_address + ‘:’ + socket_port);
具体来说,我可以从主 UI 发送轴移动命令;但是,状态永远不会改变以反映机器位置的变化。我在远程吊坠应用程序中收到的状态报告确实显示了正确的状态信息。