评论
在一个半相关的说明中,因为这是自从您将我的状态灯插件添加到您的 plugins.h 以来我第一次构建图像,我也能够通过在我的 my_machine 中包含这一新行来简单地添加它。H: #define STATUS_LIGHT_ENABLE 1 // 启用 RGB 状态灯插件 并重命名我的 init 函数以匹配 plugins.h 的预期内容。我将更新我的 github 以尽快反映更改。 到目前为止一切正常。也谢谢你的改变。 |
啊,是的,我必须禁用我的 VFD 和 MODBUS 插件才能启用 keypad.c。我只是把 VFD 和 MODBUS 放回去并得到以下错误:
UART = 5 的定位毕竟不能解决这个问题。知道是什么原因造成的吗? |
抱歉,第一次发生这种情况时我不得不躲开。很明显问题出在哪里 – driver.c 的第 125 行,我能够通过删除该行中的 KEYPAD_TEST 来临时解决它。 似乎逻辑需要考虑使用额外的 UART 作为缓解因素,但这里存在需要解决的操作顺序问题以及应在何处声明辅助 UART。你怎么看? |
蜘蛛网正在离开我的大脑。问题是目前没有一种机制可以增加一个以上的 UART,对吗?所以我们似乎需要一个 UART_MODBUS 和 UART_KEYPAD 的概念作为示例,然后我们可以将它们指向正确的位置? |
我正在查看 modbus.c 并尝试确定我是否可以使用 MODBUS-SERIAL_PORT 作为替代方法来告诉用户 UART1 仅用于 modbus 流量,但似乎多个并行 UART 尚未完全添加? |
是和否…我最近在内核中添加了对注册和声明(打开)UART 端口的支持,目前最多四个。STM32F4xx 有最多两个端口的代码,并且用户已经为他的特定需求添加了两个额外端口的插件(并且他有支持该功能的硬件)。目前 iMXRT1062 驱动程序仅支持一个端口,可以添加更多端口——但是要使用哪个 MCU UART 端口/引脚?在没有请求的情况下,我是否应该花时间为驱动程序添加端口? 一些技术细节(我需要开始编写更多文档): 我添加了一个结构体io_stream_properties_t,它在向核心注册 UART 流时使用。这包含有关端口实现属性的信息,代码可以使用这些属性来查找和声明具有所需属性的端口实现。还有一个 当用户插件代码添加端口时会出现先有鸡还是先有蛋的问题——这些端口在注册之前无法被发现,因此代码顺序变得很重要。是否应该对每个插件进行预初始化调用,或者需要端口的代码是否应该延迟声明直到启动序列完成?后一种选择是我更喜欢的。 因此,仍有工作要做,但我相信,配置 grblHAL 所需的灵活性以及用户插件添加需要 I/O 引脚和 UART 端口的代码的基础已经到位。 |
@5ocworkshop |
好问题。grblHAL2000 板在设计中也有两个 UART。Serial1 连接到 Modbus 接口,Serial8 连接到 40 针 RaspberryPi 接头。Pi 接口的目的是提供一个可扩展的接口,用于开发各种扩展,如替代吊坠、切割声学分析、更复杂的相机相关功能或可能更复杂的 ATC 或其他机器人功能,以防 grblHAL 被更广泛地用作传统 CNC 之外的运动控制系统。
我试图使用 MODBUS_SERIAL_PORT 但我无法确定在那里使用的正确值是什么以及它如何映射到 UART,或者我可能只是遇到了单个 UART 限制? 我能理解这不是您的优先事项。我最近从路由器升级到 VFD/Spindle,并通过 Pi 在 IR 接口上使用基本的慢跑/悬垂功能。我将查看 STM 代码,看看我是否可以从中改编一些内容以在板上启用第二个 UART。我认为,鉴于 grblHAL 出色的可扩展性,支持两个 UART,一个用于 MODBUS,一个用于附件插件是一个很好的起点。 |
你之前是。
基本上它是关于复制大部分现有代码并为第二个 UART 修改它。我 grblHAL 的可扩展性使其成为一种编程平台,我最近添加了一个HPGL 解释器作为插件– 无需更改核心中的一行代码。我这样做有几个原因,一个是作为核心可扩展性的概念验证(或某种酸性测试?)。 |
泰耶,
不是问题,只是想感谢您对 keypad.c 插件所做的更改。感谢您最近的更新。
我能够将它设置为键盘模式,将它添加到 my_machine.h 并毫无问题地编译它。我添加了几行代码以在托管遥控器的 Pi 上的 IR 键 relase 上发送点动取消命令,现在点动得到改进并且更安全。更重要的是,我不再需要修改后的模块了。一切正常,包括对 UART 驱动程序的 UART 更改。
我确实必须将 keypad.c 移动到我的粉丝列表底部(即使我没有启用其他模块),否则我会遇到一堆关于只能拥有一个 UART 相关模块的编译时错误。这对我来说似乎很奇怪,因为我没有在抛出错误的模块中进行编译。好像是在编译 driver.c 的时候。我在某处错过了 IFDEF 吗?
这是有效的
— SNIP —
//#define FANS_ENABLE 1 // 通过 M106/M107 启用风扇控制。启用粉丝插件。
// UART 在风扇下方,键盘也在下方,因此我们将新的 UART 用于 IR 遥控器的 Pi 接口
#define UART_PORT 5 // 请参阅 uart.c 中的硬件定义 – 更新代码以支持 serial8 Teensy
#define KEYPAD_ENABLE 2 // I2C 键盘设置为 1,串行数据等其他输入设置为 2
— SNIP —
有没有办法避免将 UART 的 #define 添加到 my_machine.h?