关闭 deHarro 打开了这个问题 2018 年 11 月 7 日 · 2 条评论 关闭 处理在 com 端口上接收到的数据的函数#38 deHarro 打开了这个问题 2018 年 11 月 7 日 · 2 条评论 评论 德哈罗 评论了 2018 年 11 月 7 日 • 编辑 嗨斯文, 这不是一个大问题,因为您当前的实施有效,但我想指出这一点。 你最近向我指出了 GRBL 通信的说明,我们过去已经完成了所有这些。 您将与我的操纵杆通信的相关代码部分发布为: 命令行应以 \r\n (CR LF) 结尾才能被识别为一个命令。 private void serialPort_DataReceived(object sender, System.IO.Ports.SerialDataReceivedEventArgs e) { while ((serialPort.IsOpen) && (serialPort.BytesToRead > 0)) { rxString = string.Empty; try { rxString = serialPort.ReadTo("\r\n"); //read line from grbl, discard CR LF this.Invoke(new EventHandler(handleRxData)); //tigger rx process while ((serialPort.IsOpen) && (isDataProcessing)) ; //wait previous data line processed done } catch (Exception errort) { serialPort.Close(); logError("Error reading line from serial port", errort); } } } private void handleRxData(object sender, EventArgs e) { rtbLog.AppendText(string.Format("< {0} \r\n", rxString)); OnRaiseCommandEvent(new CommandEventArgs(rxString)); isDataProcessing = false; } 最初发布者@svenhb在#29(评论) 我刚刚再次阅读了我们关于与 GRBL 通信的讨论,我在GRBL V1.1 站点上偶然发现了以下说明: 与 Grbl 通信的主要方式是向它发送一串字符,然后是回车符 所以你的实现似乎被过度定义了,你搜索“CR LF”,GRBL 只想要“CR”。 哈拉尔德 所有者 svenhb 评论了 2018 年 11 月 7 日 你说得对,下次我会改的。 svenhb 添加了 增强 标签 2018 年 11 月 7 日 所有者 svenhb 评论了 2018 年 11 月 10 日 它已经在当前版本中实现。我检查 CR 或 LF: private void serialPort_DataReceived(object sender, System.IO.Ports.SerialDataReceivedEventArgs e) { while ((serialPort.IsOpen) && (serialPort.BytesToRead > 0)) { byte[] rxBuff = new byte[serialPort.BytesToRead]; serialPort.Read(rxBuff, 0, serialPort.BytesToRead); byte rxTmpChar = 0; try { foreach (byte rxTmpChart in rxBuff) { rxTmpChar = rxTmpChart; if ((rxTmpChar > 0x7F) || (isRealTimeCmd.Contains(rxTmpChar))) // is real time cmd ? { rxChar = rxTmpChar; this.Invoke(new EventHandler(handleRxData)); } else { rxTmpString += (char)rxTmpChar; if ((rxTmpChar == '\r') || (rxTmpChar == '\n')) // end of regular command { if (lastChar >= ' ') { rxChar = 0; rxString = rxTmpString.Trim(); this.Invoke(new EventHandler(handleRxData)); } rxTmpString = ""; } } lastChar = rxTmpChar; } } catch (Exception errort) { serialPort.Close(); logError("Error reading line from serial port", errort); } } } svenhb已完成 关闭 2018 年 11 月 10 日 喜欢 (0) 来自 Fritzing 的一些 svg 文件出现问题 #37 自适应路径的性能问题 #39 v1.3.8-EDGE 重启后键盘快捷键消失 #427 关闭 无法在 gsender 1.2.0 中打开 .gcode 文件 #367 RaspberryPi 运行 gsender 时出现问题 #89 向 fluidnc 发送 $$ 会导致 gsender 崩溃 #473 v1.3.8-EDGE 重启后键盘快捷键消失 #427 关闭无法在 gsender 1.2.0 中打开 .gcode 文件 #367RaspberryPi 运行 gsender 时出现问题 #89向 fluidnc 发送 $$ 会导致 gsender 崩溃 #473功能请求:抑制发送到机器的 gcode 中的 gcode 注释。 #444 关闭通过网络连接进行连接 #171操纵杆运动的剩余问题 #204 关闭新版本认为我的机器一直处于锁定状态 #474 关闭
嗨斯文,
这不是一个大问题,因为您当前的实施有效,但我想指出这一点。
你最近向我指出了 GRBL 通信的说明,我们过去已经完成了所有这些。
您将与我的操纵杆通信的相关代码部分发布为:
我刚刚再次阅读了我们关于与 GRBL 通信的讨论,我在GRBL V1.1 站点上偶然发现了以下说明:
所以你的实现似乎被过度定义了,你搜索“CR LF”,GRBL 只想要“CR”。
哈拉尔德