2016-08-09 4 views
0

Я хотел бы сделать проект, который выводит значение из Arduino и краски в Qt. Я не уверен, может ли это сделать QCustomPlot. Не могли бы вы дать мне какое-нибудь предложение?краска в qcustomplot по сигналу от Arduino

Например, я создаю графический интерфейс Qt для ввода позиции (x, y) в Arduino и выполняю вычисления, затем Arduino посылает сигнал значения в Qt и нарисовывает фигуру в позиции, которую я хочу. Является ли это возможным?

+0

Уверен, это возможно. Начните здесь https://github.com/dmontanari/qplotduino, это проект, который делает все это – demonplus

ответ

0

Несколько лет назад я делаю что-то подобное, используя QWT и QextSerialPort. Вам необходимо подключить Arduino с помощью последовательного порта (в Windows COM1, COM2 ...), и вы сможете читать/записывать данные из буфера.

Теперь Qt интегрирует встроенную поддержку этой задачи, проверьте QtSerialPort Support, чтобы настроить порт, проверьте этот класс QSerialPort. Как читать данные? Использование QByteArray, пример:

QByteArray responseData = serial->readAll(); 
while(serial->waitForReadyRead(100)) 
     responseData += serial->readAll(); 

Теперь хранить все байты в QVector типа двойной.

QVector<double> data; 
QDataStream stream(line); 
stream >> data; 

Данные будут помечены как QCustomPlot. Пример:

int numSamples = data.size(); 
QVector<double> x(numSamples), y(numSamples); // initialize with entries 0..100 
for (int i=0; i<numSamples; ++i) 
{ 
    x[i] = i/50.0 - 1; // x goes from -1 to 1 
    y[i] = data[i]; // In this line copy the data from your Arduino Buffer and apply what you want, maybe some signal processing 
} 
// create graph and assign data to it: 
customPlot->addGraph(); 
customPlot->graph(0)->setData(x, y); 
// give the axes some labels: 
customPlot->xAxis->setLabel("x"); 
customPlot->yAxis->setLabel("y"); 
// set axes ranges, so we see all data: 
customPlot->xAxis->setRange(-1, 1); 
customPlot->yAxis->setRange(0, 1); 
customPlot->replot(); 

Наслаждайтесь!

Смежные вопросы