我尝试使用Lua C API和LuaBridge制作lua包,我需要通过串口发送数据,因此使用Qt' s {{ 3}}
绑定工作正常,也就是说,我可以在我的脚本中使用我在Lua中注册的类。但是,每次我使用QSerialPort :: write时,Qt都会在警告后显示:
QObject::startTimer: Timers can only be used with threads started with QThread
我还没有声明QCoreApplication,我不知道应该在哪里声明它,因为库没有main()函数。
我最接近入口点的是
int luaopen_my_io_lib(lua_State *L);
将我的班级注册到Lua。
QSerialPort用作I类注册的成员,并且在没有父QObject的情况下构造。
我该如何解决这个问题?
[编辑]这里是触发警告的代码:
bool SerialIO::write(std::string data) {
m_port.write(data.c_str());
return m_port.waitForBytesWritten(100);
}
其中m_port是QSerialPort。
我认为我应该能够通过启动一个新的QThread来解决这个问题,但这对于我试图实现的目标来说有点过分了......