开源改变世界!!

构建问题 #44

推推 grbl 2年前 (2023-01-31) 96次浏览
关闭
pihnat 打开了这个问题 2016 年 3 月 15 日 · 8条评论
关闭

构建问题#44

pihnat 打开了这个问题 2016 年 3 月 15 日 · 8条评论

注释

构建问题 #44

嗨 Denvi,
我一直在学习如何使用 Qt 并在此过程中修改 grblControl。在最后几次提交之前,一切都运行良好。
我注意到最初在源代码文件夹中有许多文件和 4 个子文件夹 – 图像、屏幕截图、着色器和翻译。使用这个我没有遇到任何问题——当我在 Qt 中调试时,它运行 grblControl,连接到 Arduino,我可以测试一切正常。

但是,我现在注意到在更高版本中,您的 src 文件夹中只有一些代码(我假设主要的代码最常更新)和更多的子文件夹。这次我第一次运行调试时一切正常。在我关闭 grblControl 并再次按下调试后,grblControl 没有连接到 Arduino。这几乎就像在上次运行调试后串行端口没有正确关闭或者端口没有正确打开一样。我正在使用 Qt Creator 3.5.1 版。知道是什么原因造成的吗?

构建问题 #44
所有者

我没有遇到这样的问题。
有截图吗?第一次运行,第二次,有控制台输出。

构建问题 #44
作者

好的,插入 Arduino 并使用一个空的 Debug 文件夹:

我执行 Debug,编译需要一段时间,但最终会打开 grblControl 窗口。grblControl 在状态中显示“未连接”。这显示在 Qt 的应用程序输出窗口中:

构建问题 #44

在 grblControl 中,我选择服务、设置并单击“设置为默认值”按钮并将串口更改为 COM12。grblControl 状态变为“空闲”。现在是 App Out 窗口:

构建问题 #44

我退出 grblControl:

构建问题 #44

我现在再次单击“调试”。grbl 控制窗口重新打开,状态为“端口打开”,即与 Arduino 没有通信,这是 App Out 窗口:

构建问题 #44

我可以让 grblControl 在调试模式下连接到 Arduino 的唯一方法是删除调试文件夹的内容并重新编译。
注意

  • 选择发布时也会发生这种情况
  • 这只是在源文件夹更改为当前组织后才开始发生。以前这不会发生。
  • 当我从 Release 复制新创建的 grbl_control.exe 文件以替换我通常用于运行 grblControl 的文件夹中的旧 exe 文件时,我也得到“端口打开”状态,这意味着没有与 Arduino 的通信。

有任何想法吗?

构建问题 #44
所有者

我需要知道两件事:

  1. 在退出程序之前尝试设置错误的端口,例如“COM1234”。启动后设置正确的端口。会有帮助吗?
  2. 版本“0.8.1”源也有描述的问题?
构建问题 #44
作者

我有更多细节:

测试条件
Arduino 在 COM12 上,COM1 存在但没有连接到它,最新源 0.8.2。
以下操作在调试模式、发布模式下以及如果我将发布的 grbl_control.exe 文件复制到我通常运行 grblControl 的现有文件夹中也是相同的。

操作
如果端口设置为 COM12 & 状态为“空闲”,我退出 grblControl 并重新运行然后状态为“端口打开”。重新连接到 Arduino 的唯一方法是选择不同的端口,按 OK,然后重新选择 COM12 并按 OK。不同的端口可以是存在的 COM1 或不存在的 COM123。如果选择了 COM12 并且我重新选择它并按确定状态仍然是“端口打开”。

因此,似乎连接到 Arduino 的唯一方法是将端口另一个端口更改COM12 。

我检查了以前的版本,一切正常,直到 2016 年 2 月 19 日提交。问题从 2016 年 3 月 4 日提交开始:
https ://github.com/Denvi/grblControl/tree/9f51945bc62c10c5f08f8adc863fb5ce72719197

构建问题 #44
所有者

如您所料,有必要恢复:

    // Setup serial port
    connect(&m_serialPort, SIGNAL(error(QSerialPort::SerialPortError)), this, SLOT(onSerialPortError(QSerialPort::SerialPortError)));

    if (m_settings.port() != "") {
        m_serialPort.setPortName(m_settings.port());
    }

    openPort();

    m_serialPort.setBaudRate(m_settings.baud());
    m_serialPort.setParity(QSerialPort::NoParity);
    m_serialPort.setDataBits(QSerialPort::Data8);
    m_serialPort.setFlowControl(QSerialPort::NoFlowControl);
    m_serialPort.setStopBits(QSerialPort::OneStop);

到:

     // Setup serial port
     m_serialPort.setParity(QSerialPort::NoParity);
     m_serialPort.setDataBits(QSerialPort::Data8);
     m_serialPort.setFlowControl(QSerialPort::NoFlowControl);
     m_serialPort.setStopBits(QSerialPort::OneStop);
     if (m_settings.port() != "") {
         m_serialPort.setPortName(m_settings.port());
         m_serialPort.setBaudRate(m_settings.baud());
     }

   connect(&m_serialPort, SIGNAL(error(QSerialPort::SerialPortError)), this, SLOT(onSerialPortError(QSerialPort::SerialPortError)));
构建问题 #44
作者

在 frmmain.cpp (0.8.2) 中,我注释掉了第 136 到 151 行(我也删除了第 151 行,即“connect(&m_serialPort …..) 并插入了新行,但现在它根本没有连接到 Arduino .
替换命令中的某处不应该有一个“openPort()”命令吗?

构建问题 #44
所有者

替换命令中的某处不应该有“openPort()”命令吗

不,151号
线应该保留。

寻找最后一次提交。

构建问题 #44
作者

好的,提交清楚地显示了它,我看到了我输入的错误内容。它现在完美运行。
再次感谢您的及时关注。
问候
彼得