我为找到了这段代码,并且是IDE中的新手,但我一直试图让这段代码运行。我看到的主要错误是与Qextserialport相关的类似错误的大约12个实例。
C:\Users\Hassman\Downloads\aQtLow\aQtLow\dtransferusb.cpp:
错误:对`QextSerialPort::QextSerialPort(QextSerialPort::QueryMode,QObject*)'的未定义引用
我不知道该怎么办,我有点不知所措。我正在运行QTCreator 5.1.1,我想可能存在兼容性问题,但是请有人帮我一下。也许我没有正确地把标题链接到我的文件上?如有任何建议,将不胜感激!
#include "dtransferusb.h"
#include <QDebug>
#include <QByteArray>
#include "C:/Users/Hassman/Downloads/aQtLow/aQtLow/qextserialport/src/qextserialport.h"
#include "C:/Users/Hassman/Downloads/aQtLow/aQtLow/qextserialport/src/qextserialport_p.h"
#include "globals.h"
dtransferusb::dtransferusb(QObject *parent) :
QThread(parent)
{
}
void dtransferusb::run()
{
SerPort= new QextSerialPort();
int ExpectedLength = NUMBER_OF_REGISTERS * 2 + NUMBER_OF_COILS / 8 + 1;
QTime Startup, Sleeper;
Startup.start();
while(!Shutdown)
{
if(SerPort->isOpen())
{//the port is open so check for data
Sleeper.start();
while((ExpectingResponse > 0) && (SerPort->bytesAvailable() < ExpectedLength))
{
msleep(25);
if(Sleeper.elapsed() > 5000) break;
}
if(SerPort->bytesAvailable() >= ExpectedLength)
{//data found
Receive(ExpectedLength);
}
else
{
if((ExpectingResponse > 2) && (Startup.elapsed() > 15000))
{
qDebug() << "DTxfrUsb " << QString::number(Cfg.DTxfrUsb) << " finds the lack of expected response utterly demoralizing " << SerPort->portName() << " " << QDateTime::currentDateTime().toString(TIMESTAMP_FORMAT);
P[Cfg.Prc].CommFailure();
ExpectingResponse = 0;
SerPort->close();
Sleeper.start();
while(Sleeper.elapsed() < 1000) msleep(100);
}
else
{
if(!WriteRequest())
{
Send(1,0,0); //Function 1 siginfies "gimme data"
}
}
}
}
else
{//need to open the port
SerPort->reset();
SerPort->setPortName(Cfg.Port);
SerPort->setBaudRate(BAUD9600);
SerPort->setDataBits(DATA_8);
SerPort->setStopBits(STOP_1);
SerPort->setFlowControl(FLOW_OFF);
SerPort->setParity(PAR_NONE);
SerPort->setTimeout(1000);发布于 2014-04-16 00:39:09
QextSerialPort是一个不属于官方Qt项目的第三方库。您可以在https://code.google.com/p/qextserialport/找到它--您需要分别安装QextSerialPort。
一些额外的注释:
发布于 2017-02-06 05:39:06
(1)要在应用程序中使用这些类,请使用以下include语句:
#include <QtSerialPort/QtSerialPort>(2)要链接到模块,请将这一行添加到qmake .pro文件中:
QT += serialportQt串口文档
https://stackoverflow.com/questions/23096888
复制相似问题