评论
Teensy 在 MCU 上有 USB 堆栈,而不是像你发现的那样在外部芯片上。然而,一个插件可以通过操纵函数指针来做各种各样的事情,包括修改流处理的方式。复制输出应该很容易,在插件初始化函数中保存(相关的)HAL 流指针,调用串行初始化函数(这将返回一个带有指向串行流函数的指针的结构)并将其也保存起来。向插件添加输出函数并用这些函数更新 HAL,在这些函数中调用保存的指针中的函数,你就可以开始了:
处理输入并不是那么容易,IMO 混合 usb 和串行数据不是一个好主意。将函数附加到前台进程(通过grbl.on_execute_realtime)会更好。从中读取串行输入并将其提交进行处理。
请注意,实时命令的处理方式与常规输入不同,您必须通过调用
这里的问题是检测“USB 未激活”——它可以通过监听来自它的实时命令来完成,如果安静一段时间让串口接管控制?IMO 上面的方法更好,因为即使 USB 处于控制状态,它也允许慢跑。 可以注意到,我已经制定了一个驱动程序级协议,允许通过 pin 上的握手进行流切换,缺点是它需要发送方合作。顺便说一句,Teensy 驱动程序还不支持这个。 Teensy 可用的另一个选项是通过 Phils Pro 板上的第二个 USB 端口连接并为此添加代码支持。如果有人能应对这个挑战就好了…… |
泰耶, 一如既往,感谢您的详细建议。 在我看到这个之前,我正在四处查看您的 MPG 代码。当我想使用红外遥控器时,是否也可以选择使用将串行输入转移到 MPG 控制器使用的引脚的信号线? 我有 IR 遥控器与 Pi 通信,我写了一个小 python 存根来生成基本的点动命令并将它们输出到串行端口。现在我只是将 Pi 的 USB 链接直接插入 Teensy 但我想如果我在 Pi 上使用 UART 而不是 USB 串口,并且我将一个引脚连接到 MPG 输入触发引脚,我应该能够通过串行引脚发送它们,即使笔记本电脑已连接? (编辑)我现在才看到您提到它需要“发件人合作”。我在哪里可以了解更多相关信息?我猜 IOSender 今天有这个,但它没有在其他地方广泛部署?啊,我还莫名其妙地掩饰了你的意思,说 Teensy 驱动程序还不支持这个。我今天可以学习哪个驱动程序作为示例? |
我刚刚重新启动了一个干净的项目,但在使 UART 串行通信正常工作方面仍然存在问题。 我有来自 teensy 的 UART8 TX 和 RX 引脚连接到我的 Pi。我没有连接 CTS/RTS 引脚。 如果我在 teensy 板上运行基本草图,我会在 Pi 的那些引脚上获得 115200 的预期输出,所以知道引脚是好的。我尝试在 my_machine.h 中设置这些:
我还更新了 uart.c 中的引脚以获得 uart8 的正确引脚:
没有运气。别针上什么都没有。 我还尝试注释掉 USB_SERIAL 配置,并保留 UART_PORT。那也没有用。 关于接下来要尝试什么的任何想法? |
我认为这与使用 Serial8 有关。查看 uart.c 源文件中 UART5 的详细信息,我注意到一些值与 pjrc 提供的不同: https://github.com/PaulStoffregen/cores/blob/master/teensy4/HardwareSerial8.cpp |
我经常发现自己在车间里,需要慢跑机器以让龙门架离开,但如果我在机器上切割,我不会把笔记本电脑带出去。
我想要一种通过按钮或操纵杆等以有限方式移动机器的方法,而无需拿起我的笔记本电脑并启动发送器。
在 grblHAL2000 板上有一个 RaspberryPi 接头连接器,其中包括将 Pi 上的 UART 连接到 Teensy 上的 Serial2。最初我在想 Teensy 的行为就像 arduino,默认情况下 USB 串口会在串口上复制,所以我可以在笔记本电脑未连接时从 Pi 发送一些基本的点动命令,然后移动机器.
事实证明,默认情况下,Teensy 不会在任何物理串行引脚上镜像 USB 串行通信。
我正在考虑在 Teensy 上使用 Serial2 上的 Pi 和一个插件,也许可以允许慢跑,但我不确定最好的方法。我希望能够在 Pi 端使用 USB IR 遥控器(我有几个)之类的东西,并将这些按键映射到各种 GCODE 和 grbl 命令。这听起来像是一种合理的方法吗?或者当 USB 未处于活动状态时以某种方式在 serial2 上启用双向通信并直接与 grblHAL 核心对话是否更有意义,就好像它只是另一个发送者一样?