Changeset - 91761de0142c
[Not reviewed]
add-textview
0 1 0
Hasan Yavuz Ă–ZDERYA - 10 years ago 2015-06-17 16:46:46
hy@ozderya.net
text view working for ascii data
1 file changed with 6 insertions and 0 deletions:
0 comments (0 inline, 0 general)
mainwindow.cpp
Show inline comments
 
@@ -197,96 +197,102 @@ void MainWindow::onDataReady()
 
        {
 
            serialPort.read(1);
 
            skipByteRequested = false;
 
            bytesAvailable--;
 
        }
 

	
 
        if (bytesAvailable < packageSize)
 
        {
 
            return;
 
        }
 
        else
 
        {
 
            int numOfPackagesToRead =
 
                (bytesAvailable - (bytesAvailable % packageSize)) / packageSize;
 
            QVector<DataArray> channelSamples(numOfChannels);
 
            for (unsigned int ci = 0; ci < numOfChannels; ci++)
 
            {
 
                channelSamples[ci].resize(numOfPackagesToRead);
 
            }
 

	
 
            int i = 0;
 
            while(i < numOfPackagesToRead)
 
            {
 
                for (unsigned int ci = 0; ci < numOfChannels; ci++)
 
                {
 
                    channelSamples[ci].replace(i, (this->*readSample)());
 
                }
 
                i++;
 
            }
 

	
 
            for (unsigned int ci = 0; ci < numOfChannels; ci++)
 
            {
 
                addChannelData(ci, channelSamples[ci]);
 
            }
 
        }
 
    }
 
    else
 
    {
 
        serialPort.clear(QSerialPort::Input);
 
    }
 
}
 

	
 
void MainWindow::onDataReadyASCII()
 
{
 
    while(serialPort.canReadLine())
 
    {
 
        QByteArray line = serialPort.readLine();
 
        line = line.trimmed();
 

	
 
        if (ui->cbEnableTextView->isChecked())
 
        {
 
            ui->ptTextView->appendPlainText(line);
 
        }
 

	
 
        auto separatedValues = line.split(',');
 

	
 
        if (separatedValues.length() >= int(numOfChannels))
 
        {
 
            for (unsigned int ci = 0; ci < numOfChannels; ci++)
 
            {
 
                double channelSample = separatedValues[ci].toDouble();
 
                addChannelData(ci, DataArray({channelSample}));
 
            }
 
        }
 
        else // there is missing channel data
 
        {
 
            qWarning() << "Incoming data is missing data for some channels!";
 
            for (int ci = 0; ci < separatedValues.length(); ci++)
 
            {
 
                double channelSample = separatedValues[ci].toDouble();
 
                addChannelData(ci, DataArray({channelSample}));
 
            }
 
        }
 
    }
 
}
 

	
 
void MainWindow::onPortError(QSerialPort::SerialPortError error)
 
{
 
    switch(error)
 
    {
 
        case QSerialPort::NoError :
 
            break;
 
        case QSerialPort::ResourceError :
 
            qWarning() << "Port error: resource unavaliable; most likely device removed.";
 
            if (serialPort.isOpen())
 
            {
 
                qWarning() << "Closing port on resource error: " << serialPort.portName();
 
                portControl.togglePort();
 
            }
 
            portControl.loadPortList();
 
            break;
 
        case QSerialPort::DeviceNotFoundError:
 
            qCritical() << "Device doesn't exists: " << serialPort.portName();
 
            break;
 
        case QSerialPort::PermissionError:
 
            qCritical() << "Permission denied. Either you don't have \
 
required privileges or device is already opened by another process.";
 
            break;
 
        case QSerialPort::OpenError:
 
            qWarning() << "Device is already opened!";
 
            break;
 
        case QSerialPort::NotOpenError:
0 comments (0 inline, 0 general)