注释
@mkeyno请提供一些反馈 |
亲@arkypita 非常感谢您的关心,很抱歉迟到了,我进行了一些测试以检查是否有稳定的 websocket 链接,但是会话日志和我的 esp 日志没有报告任何 websocket 链接,我也尝试阅读您的代码任何 websocket 连接,但没有找到相似的(如果有请纠正我) #include <ESPAsyncWebServer.h>
AsyncWebServer server(80);
AsyncWebSocket WS("/ws");
....
void loop ( void )
{
SerialEvent();
if(NewLine && (millis()-serialTS)>50){ WS.text(inputString); inputString = ""; serialTS=millis();NewLine=false;}
if(INFO) {if( (millis()-Last_query)>210 ) {Serial.print('?'); Last_query=millis();}} // send ? char to GRBL
}
以下是会话日志,如果需要更多数据或测试,请告诉我 6/15/2017 10:10:53 PM SetStatus 机器状态 [连接] |
你好@mkeyno谢谢你的回复 网络套接字?HTML?所以你在 ESP 中实现了一种网络服务器?为什么?对我来说,使用 http 和 html 通过 tcp-ip 传输串行协议似乎很奇怪! 好吧好吧…我已经阅读了https://github.com/LaserWeb/LaserWeb3-ESP8266 对我来说,最简单的方法是在 ESP8266 上实现一个 TcpListener 并将读写重定向到 rx-tx pin。我在 LaserGRBL 中实现的只是一个连接到端口并发送-接收数据的 TcpClient。(这是最简单直观的方法,我真的不明白他们为什么决定使用 websocket)。 但是我可以实现一种与“LaserWeb ESP8266”兼容的包装器。现在我已经虚拟化了管理通信的 LaserGRBL 部分,所以我可以轻松添加一个新的包装器。 幸运的是,我必须有一个 ESP8266 模块,所以当我有时间时,我可以使用 LaserWeb 提供的代码对其进行编程并进行测试。 你必须等几个星期,我现在很忙! |
当然亲爱的@arkypita,我可能会添加可靠的链接,我们需要实时协议,例如 websocket,否则 tcp 链接将阻塞流数据,websockt 易于安装在 web 平台或 .net 平台上,这就是大多数人选择 websocket 的原因 |
你好@mkeyno 我使用这个模式进行编程:
就像在 .gif 图像中一样,我可以连接到 Emblaser2 网络,使用默认 IP 地址联系 ESP,配置我的网络并将 ESP 连接为我的 LAN 的一部分,现在我可以 ping 路由器 DHCP 分配的地址 (192.168.1.170) . 我也已经将 ESP 连接到 arduino,就像在这个模式中一样,arduino 上加载了 Grbl v1.1。 LaserWeb3 和 LaserWeb4 都无法连接到 ESP,我一直卡在这个问题上。 LW4 控制台说;
如果我在 192.168.1.170 上打开浏览器,我有一个 404 页面,其中未找到:/ 你能帮助我吗?使用 laserweb 的 WiFi 网桥是确保我编写的代码 100% 兼容的唯一方法。 |
已解决:我必须使用端口 81 现在我有其他类型的问题,但我想我可以解决它们 |
@mkeyno我知道了! |
@mkeyno |
做得好 @arkypita 你能告诉我你程序中的 websocket 方法吗?您是否使用重新连接 websocket 客户端来使链接稳健? |
测试版:https 所有关于 ESP 的代码都在这个文件中:https ://github.com/arkypita/LaserGRBL/blob/LaserWebESP8266/LaserGRBL/ComWrapper/LaserWebESP8266.cs 我使用了websocket-sharp实现,因为微软只在 .NET framework 4 中实现了 websocket,我喜欢使用 framework 3.5,因为 framework 4 与 Windows XP 不兼容。 |
现在我已经在 ESP 和 Arduino 之间使用 9600baud 进行了测试,但我仍然遇到与 3 条消息之前相同的问题。 这一刻我想不通:
也许您可以帮我测试一下您的硬件是否更稳定,这样我们就可以了解是硬件问题还是 LaserGRBL SW 问题。 |
你也可以和我分享你的ESP代码吗? |
我还实现了一种“通过 websocket 的 grbl 模拟器”(模拟 ESP Websocket 服务器和 Arduino 响应)。模拟器可从“?-> grbl 模拟器”获得,并以 ws://127.0.0.1:81/ 收听 当然,使用模拟器一切正常:-) |
亲@arkypita请检查数据文件夹中的 html 文件,我设计了该网页,以便用户可以更改 GRBL 设置以及 wifi 网桥,我的计划是使用文件阅读器 javascrip上传文件,然后根据 GRBL advance将代码发送到 ESP stream 方法,在 ESP 中将接收到的数据打印到Arduino 串口 else if(cammand=="RAW") {if(!STARTING) {Serial.print(value); CODE="CNC@"; serialTS=millis(); }}
并在 websocket 链接上发送 GRBL 响应 SerialEvent();
if(NewLine && (millis()-serialTS)>50){ WS.text(MainWSclinet,CODE+inputString); inputString = ""; serialTS=millis();NewLine=false;}
|
@mkeyno感谢您的分享。我需要一点时间来理解你的 wifi-bridge 的代码,因为它非常复杂(有很多功能,不仅仅是基本的流媒体)。 你试过2.6.13版本吗?现在应该可以通过 WebSocket 进行通信了。 必须在设置中启用 ESP8266 协议,然后才能配置为简单的 URL。 如果我将它与我的 ESP8266 一起使用,用LaserWeb3-ESP8266代码编程,我可以连接成功,我也可以流式传输一些 GCode,但是流式传输过程很慢,打嗝,grbl 响应给出错误(如上一张图片)突出显示一些整个行程中的数据丢失。 我非常想知道 LaserGRBL v2.6.13 是否连接到您的 ESP8266 或者它是否没有连接,以及流式传输行为是否正确或者是否存在与我相同的问题。 LaserGRBL从第一个版本开始就实现了建议的字符计数流协议(如 stream.py)。 在 LaserGRBL 方面,我使用 USBSerial 和 WebSocket 协议的字符计数,因为它的实现是在外部并且独立于所选的通信通道。 |
@arkypita我使用 ws://192.168.4.1/ws 地址连接到 ESP,websocket 链接稳定,但是我的 ESP 没有连接到 GRBL,所以它无法响应,因此我无法发送 gcode 数据流,你能创建测试版本吗所以我可以不受任何限制地将cnc数据传输到ESP并检查流链接的可靠性, |
好的,很好!
当 arduino/grbl 未连接时,我有 2 个不同的限制阻止流式传输文件的能力
我很容易删除这两个测试。没关系,或者你更喜欢我只删除第一张支票,然后你从 ESP 发回“ok”? |
我找到了所有问题的原因! 这是因为我发送“\r\n”作为线路终止,因为 grbl 标准只需要“\n”。 |
应用户要求@mkeyno我想添加通过 WiFi 以太网连接的功能。
我开发了一个带有 tcp-ip 连接的版本,但我无法测试它,因为我的 arduino 板没有以太网适配器。
有人可以测试它并提供一些反馈吗?
下载链接:https ://github.com/arkypita/LaserGRBL/releases/tag/v2.6.10