开源改变世界!!

蓝牙串口 #3

推推 grbl 2年前 (2023-01-29) 140次浏览
关闭
buildlog 打开了这个问题 2018 年 7 月 25 日 · 6条评论
关闭

蓝牙串口#3

buildlog 打开了这个问题 2018 年 7 月 25 日 · 6条评论

注释

蓝牙串口 #3
贡献者

添加此功能的最简单方法可能是使用此库。

https://github.com/espressif/arduino-esp32/tree/master/libraries/BluetoothSerial

我不确定如何处理多个通信渠道。我认为最好只是回应所有通信渠道上的所有流量。来自 Grbl 的所有消息都将发送到串行和蓝牙。通过蓝牙或串行发送的消息将被执行。

这将使您无需更改设置或重新编译即可使用。用户是否尝试同时从两者流式传输取决于用户。

这样你就不会被锁定在频道之外,比如如果你将控制设置为串行,你需要串行控制台将其更改为蓝牙吗?这听起来像个问题。

蓝牙串口 #3
贡献者作者

似乎没有办法在该库中使用密码。

蓝牙串口 #3
贡献者作者

还有这个bug。您可以通过一次发送更长的字符串而不是字节来缓解错误。这将需要大量重写报告。

蓝牙串口 #3
贡献者作者

我正在运行的一些测试看起来不错。我还没有通过手机运行过工作,但我正在手动敲打。

BlueToothSerial 库的主要问题是您不能使用 SerialBT.write(…) 来写入大量字符。少至 7 次后,您将不知不觉地开始丢失它们。最好将要发送的所有内容收集在一个字符串中并使用 SerialBT.print(…)。这意味着我必须完全重写 report.cpp 和 print.cpp。现在所有传出数据都通过此代码….

// A generic send function that everything should use, so easy to add Bluetooth, etc.
void grbl_send(char *text)
{
	Serial.print(text);
	
	if (SerialBT.hasClient())
	{
		SerialBT.print(text);
		delay(2); // possible fix for dropped characters
	}
}

如果 SerialBT.hasClient(),现有的 serial_read() 函数现在也可以查找 BT 数据,

Grbl 有一个 $I 特性,你可以使用 “$I=xxxxx” 保存一些构建信息。我用它来存储蓝牙名称。如果它不为空,则启动蓝牙。这使得测试更容易而无需重写 settings.cpp

目前还没有密码功能,但上游代码现在有,所以这个库可能很快就会有。

蓝牙串口 #3
贡献者作者

这是我使用蓝牙的视频。

https://www.youtube.com/watch?v=TmBBf-_LJpA

在推送代码之前,我还想解决一些问题。Grbl 控制器在 G21 和 G90 之类的东西之前注入一些 G4 P0.05 命令,这偶尔会停止流式传输。不知道为什么 Grbl Controller 会那样做,但固件不应该在意。

蓝牙串口 #3

出色的工作!

蓝牙串口 #3
所有者
培养 评论了 2018 年 8 月 5 日  

这些问题需要一段时间才能解决,但我认为现在已经相当稳定了。我认为该库在所有功能真正稳定之前存在一些问题,但我已经通过 BT 毫无问题地发送了大约 20 个具有 100k 行 gcode 的作业。库中还没有密码保护,这真的很糟糕,但很快就会改变。

请参阅代码的 ESP32_Grbl_Bluetooth 分支。