我會馬上進入正題。我的arduino從adc端口讀取值並通過串口發送(值從0到255)。我將它們保存在一個字節類型的向量中。在向arduino發送特定信號之後,它開始向Qt應用程序發送保存在向量中的數據。除了arduino應該發送800個值並且應用程序接收的值比這個值更小之外,一切都在工作。如果我將串行波特率設置爲9600,則可以獲得220個值。相反,如果我將波特率設置爲115200,則只能獲得20個值。你們能幫我解決這個問題嗎?我想使用115200波特率,因爲在這個項目中我需要一個很好的跟蹤速度(實時線性CCD)。我將在下面留下一些代碼:我的Qt應用程序沒有收到由arduino發送的所有數據
的Arduino代碼:
void sendData(void)
{
int x;
for (x = 0; x < 800; ++x)
{
Serial.print(buffer[x]);
}
}
這是發送的值的功能。我認爲是足夠的信息,所以我總結了一下。如果您需要更多代碼,請告訴我。
Qt的串行端口設置代碼:
...
// QDialog windows private variables and constants
QSerialPort serial;
QSerialPortInfo serialInfo;
QList<QSerialPortInfo> listaPuertos;
bool estadoPuerto;
bool dataAvailable;
const QSerialPort::BaudRate BAUDRATE = QSerialPort::Baud9600;
const QSerialPort::DataBits DATABITS = QSerialPort::Data8;
const QSerialPort::Parity PARITY = QSerialPort::NoParity;
const QSerialPort::StopBits STOPBITS = QSerialPort::OneStop;
const QSerialPort::FlowControl FLOWCONTROL = QSerialPort::NoFlowControl;
const int pixels = 800;
QVector<double> data;
unsigned int dataIndex;
QByteArray values;
double maximo;
...
// Signal and slot connection.
QObject::connect(&serial, SIGNAL(readyRead()), this,SLOT(fillDataBuffer()));
...
// Method called when there's data available to read at the serial port.
void Ventana::fillDataBuffer()
{
dataIndex++;
data.append(QString::fromStdString(serial.readAll().toStdString()).toDouble());
if(data.at(dataIndex-1) > maximo) maximo = data.at(dataIndex-1);
/* The following qDebug is the one I use to test the recieved values,
* where I check that values. */
qDebug() << data.at(dataIndex-1);
}
感謝和抱歉,如果它不如此清楚,這一直是一個令人精疲力盡的da Ÿ:P
代碼如何讀取模數轉換器的數據?也許它不能像你想象的那樣快速讀取它...... – wallyk
我讀取de ADC的所有值,將它們保存在一個向量中,然後通過串口傳輸向量。閱讀adc應該不是問題,因爲它是獨立的。 –