Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/qt/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Qt QIODevice::ReadWrite | QIODevice::无缓冲-不支持的打开模式_Qt_Serial Port_Qiodevice - Fatal编程技术网

Qt QIODevice::ReadWrite | QIODevice::无缓冲-不支持的打开模式

Qt QIODevice::ReadWrite | QIODevice::无缓冲-不支持的打开模式,qt,serial-port,qiodevice,Qt,Serial Port,Qiodevice,警告:模式必须为QIODevice::ReadOnly、QIODevice::WriteOnly或QIODevice::ReadWrite。不支持其他模式 以下代码未打开串行端口 if(serialPort.open (QIODevice::ReadWrite | QIODevice::Unbuffered)) { qDebug() << "asdasdas"; serialPort.setDataBits(QSerialPort::Data8

警告:模式必须为QIODevice::ReadOnly、QIODevice::WriteOnly或QIODevice::ReadWrite。不支持其他模式

以下代码未打开串行端口

if(serialPort.open (QIODevice::ReadWrite | QIODevice::Unbuffered))
    {
        qDebug() << "asdasdas";
        serialPort.setDataBits(QSerialPort::Data8);
        serialPort.setParity(QSerialPort::NoParity);
        serialPort.setStopBits(QSerialPort::OneStop);
    }
    else
    {
        qDebug() << "QSerialPort::SerialPortError: " << serialPort.errorString();
    }
if(serialPort.open(QIODevice::ReadWrite | QIODevice::Unbuffered))
{
qDebug()
使用无缓冲标志的方式是什么

没有。
QSerialPort
不支持它

唉,你关于缓冲会让你变慢的假设是没有根据的,除非你有证明这个问题的测量数据。我打赌你没有也不会有这样的测量数据。你还有其他问题。串行端口的带宽通常比较慢,单兆位/秒在缓冲时不是问题,除非你正在做的事情导致缓冲有二次成本,而不是线性成本,它通常具有很低的比例常数

数据传输时,我的gui速度变慢

原则上这是不可能的。因为所有的I/O都是异步的。最有可能的问题是在代码中

此外,您还没有提供有关Qt版本和操作系统的信息


PS:无缓冲模式对您没有帮助。此外,QSerialPort不支持该模式,错误代码会直接为您说明!您明白吗?

如果您不显示据称速度较慢的代码,则无法回答此问题。您的问题是一个经典的X-Y问题:您认为您有问题Y,但没有任何证据,而您确实想这样做询问如何解决问题X:即您的代码开始时很慢。我没有说缓冲会减慢任何速度。当我发送大数据包时,我的程序会减慢。我只是想确认缓冲不会导致它。@TheIndependentQuarius没有“大”这样的事情带有串行端口的数据包。任何大到足以减慢速度的数据包,即使通过最快的“串行”传输,也需要几分钟的时间端口。
memcpy
最近速度非常快。要确认是缓冲造成的,您不想禁用缓冲,您需要在探查器下运行它,并查看缓冲相关函数(如
realloc
memcpy
)所花费的时间。您引用的文本不是他编辑了这个问题。