注释
我们同意您的许多观点,并一直在努力解决架构问题。YamlSettings 分支有我们最新的代码。查看它的修订历史以了解我们所做的所有工作。它仍在测试中,但会在某个时候成为生产版本。我们最初的重点是消除大多数用户为了更改基本机器配置而重新编译的需要。 我们已经消除了几乎所有曾经出现在核心代码中的 ifdef。唯一剩下的是完全禁用 Wifi 和/或蓝牙的那些 – 我们想这样做是因为这些功能的支持库非常庞大,我们希望能够为特殊应用程序回收该空间 – 以及一些非常保护的 DEBUG ifdef – 很少使用的调试语句。 我们的方法是从外到内,首先专注于为引脚和 I/O 设备创建类结构,并通过读取语法是 YAML 子集的结构化文本文件使它们在运行时可配置。随着这种情况稳定下来,或者当需要出现时,我们会接触核心组件。 我们已经启动的一个核心组件是 protocol_exec_rt_system()。处理事件的大量嵌套 ifs 已被更简单的流程所取代。该模块的下一步是用事件队列替换所有实时事件标志,以便 protocol_exec_rt_system() 使事件出列并使用开关进行分派。每一个这样的变化都需要仔细研究与其他子系统的相互作用。正如您所注意到的,模块之间的交互通常结构不佳,但修复它们需要非常仔细的分析和测试,因为存在交互是有原因的,任何改进的结构都必须考虑到它们的目的。 客户端代码也是一团糟。我有一个补丁来创建一个合适的 Client 类,但我一直搁置了它,因为其他工作更紧迫。客户端类补丁可能会在接下来的一两周内到达 YamlSettings 分支。 我们可以使用其他开发人员,但前提是他们可以作为团队的一部分工作。你咆哮的语气在这方面并不令人鼓舞。 我们正在远离 Arduino IDE,因为它太受限制了。我们每个主要开发人员最初都抵制转向 platformio,但在尝试之后,再也无法忍受 Arduino。platformio 只能从 VSCode 使用是不正确的。platformio 主要是一个用 Python 编写的命令行系统。它恰好与 VSCode 集成得特别好,因此 VSCode 用户只需单击几下即可安装它,但声称需要 VSCode 的说法是绝对不正确的。我在 EMACS 中进行大部分编辑,并且可以在 EMACS shell 窗口或任何其他 shell 中进行 platformio 编译。Bart 使用 VSCode,而 Stefan 使用 Visual Studio Community Edition。许多流行的编辑器(如 Atom 和 vim)都有很好的 platformio 集成 – 但你不必使用集成, 我也讨厌必须安装千兆字节的东西 – 但无法绕过安装工具链和必要的库的需要。platformio 非常擅长自动安装这些东西;比我在 40 多年的专业编程中使用过的任何其他系统都要好。platformio 核心的安装需要 60 秒——我只是按照https://docs.platformio.org/en/latest/core/installation.html#id30上的说明重新安装它并计时。它假定您的系统上已经安装了 python – 但如果您使用的是 esptool.py,则必须安装 python,因此这不是新的依赖项。 与 Arduino 相比,platformio 真正有用的一件事是能够检查和调试 Arduino 库代码内部。使用 Arduino IDE,库是预编译的二进制文件,因此查看它们内部需要额外的工作。使用 platformio,Arduino 库作为源代码出现在您的系统上,您可以在其中轻松查看代码并进行更改或添加 printfs 以跟踪正在发生的事情。我已经多次使用该工具来追踪细微的错误。一个特别令人讨厌的错误是由 Arduino 串行端口驱动程序中的“改进”引起的,该错误导致 GCode 执行错误,因为新版本的驱动程序会自动删除字符。 |
米奇, 感谢您的及时回复,很高兴认识您 我叫帕特里克。 我将不得不查看 YamlSettings 分支并尝试了解风向。 我为我可能看起来不守规矩的语气道歉。事实上,我知道 GRBL 本身是为 arduino 类处理器编写的,你和其他开发人员接受了它并成功完成了它到 ESP32 的端口,就其本身而言,重大成就。我的评论不是贬低,而是对未来的集会呐喊。 毕竟,我正在使用您的代码!这本身就是我知道如何支付给另一个程序员的最高赞美:-) 不过,关于试图理解它的封装,我真的(也许仍然)不知所措,因此,在我最黑暗的时刻,我认真地玩弄着重写它……实际上只是将它重新分解成一个重要的方式……对一些我觉得舒服的代码。 众所周知,我会在一个周末重写整个代码库 我会安定下来 老实说,我没想到会在这么短的时间内得到如此有意义和深刻的回应……所以我还必须表扬您的存在和专注……以及对细节的关注……不过,我在阅读时注意到了这一点你的许多博客文章,你回答问题,即使它们本质上是迂腐的……所以你是一个善良的人。我喜欢。 我希望也许用这些额外的话,你会把我的帖子看成不是抱怨你的代码,而是认真地鼓励你实现你的目标。也许,只是也许,在某个时候我可以通过某种方式为主线分支做出贡献。 而且,顺便说一句,如果可能,您可以自由删除此问题。这实际上只是与您开始对话的一种方式。 所以,请不要把我的咆哮太当回事!! 我一定会看看 yaml 分支,并牢记您关于 Arduino IDE 的来之不易的话。一些考虑是由于。我即将重建一台新的个人机器(又一次,3 个月内的第 3 台),上周刚寄来邮件,所以这可能是从 Arduino IDE 继续前进或横向发展的好时机。 还有很多,但我认为现在已经足够了。 祝你周日晚上愉快,我会 TTYL! 和平!
|
大声笑,你也是个老家伙!Emacs 哈哈。你会笑的。我使用旧版本的 Activestate Komodo … 它基本上只是一个文本编辑器 … 在 Windows 上运行 … 并且仍然用 Perl 编写我的大部分快速(有些不是那么快或不是那么快)的东西。叹。旧习难改。再次和平,彻底结束! |
将 GUI 内容添加到 Grbl_ESP32 的问题是代码空间和引脚。我们一直在设计一种方法来连接辅助 MCU,可能是超级便宜的 STM32F040,使用几个引脚。它不仅可以承载图形显示,还可以用作具有成本效益的输入扩展器。显然,处理器可以是 ESP32 或更大的 ARM;STM32F040 的优点是成本低,而且它适合 6 块板的 I/O 模块。 |
严重地。我离开始它很近了。
后来,虽然我喜欢ESP32_GRBL,并且正在做我认为可能是实质性的补充,但我绝对讨厌代码库本身。
你不认识我,但我有将近 50 年的编程经验,包括一些世界上最流行的(大型、集成和/或基于 Web 的)代码库。
我想将整个东西重写为正确的 C++。并 (tf) 摆脱目前的 Grbl.h。数十个甚至数百个全局方法和变量的可见性绝对是可怕的。命名约定受到阻碍。当前的代码分解和目录结构完全具有误导性。
整个事情不利于编写好的附加代码。
这种重写被推迟的时间越长,问题就会变得越严重。
我一开始只是想实现一个 VPlotter(移植了我已经完成的马斯洛运动学),然后我开始使用 LVGL 添加一个 TFT 用户界面,就在那时我开始走下坡路,试图了解它到底是如何工作的.
我的想法是在系统中安装一个私密的(不仅仅是串行的)客户端 UI。毕竟,这样的 UI 会在 ESP32 上运行,我可以访问所有这些全局的,对吗???
此时我的代码库都没有公开。它是此代码库的副本(不是分支)。但我有兴趣讨论它。欢迎对适当的论坛提出建议。
我已经写了大约 10 页来给自己写一套 400 页的文档,描述 ESP32_GRBL 目前是如何工作的,哈哈。
我可能会发布它,并在未来为一个设计良好的系统尝试一个初始架构。或者我可以这样做。
我不知道。
但是(主要是为了bdring)我只是想伸出手说声你好,看看是否有其他人认为代码一团糟,并且有价值到足以正确重写。
或者可能愿意谈论它。
我找不到 bdring 的电子邮件地址。
所以,让我知道。我不确定我将如何得到回复。我是 github/porton1。至少我应该通过在代码库本身上提交一个“问题”来得到对此消息的回复。
所以,谢谢 bdring。您所做的确实是一项巨大的努力,我已经 24/7 全天候工作了大约 3 个月。
我期待着任何答复。