В настоящее время я получаю данные CAN в режиме реального времени, используя API-интерфейс socketcan в файле main.cpp
.
Я постоянно обновляю фрейм данных CAN в одну переменную в main.cpp
.
Я хочу выразить датчик в режиме реального времени, передав переменную, содержащую кадр данных CAN в main.cpp
, в индикатор анимации QML.
Мне нужно обнаружить изменение переменной, содержащей данные CAN в QML, в реальном времени. время. Интересно, есть ли эффективный способ?
Я пытался поделиться данными с QML, используя emit
. Однако функция, написанная emit
внутри device-> connect (device, & QCanBusDevice :: framesReceived, [device] () {...}
, не работает.
При ее использовании я получаю сообщение об ошибке
'this
' не может быть неявно зафиксировано вэтот контекст.
Я посмотрел на ошибку, но не нашел ответа.
if (QCanBus::instance()->plugins().contains(QStringLiteral("socketcan"))) {
qWarning() << "plugin available";
}
QString errorString;
QCanBusDevice *device = QCanBus::instance()->createDevice(
QStringLiteral("socketcan"), QStringLiteral("vcan0"), &errorString);
if (!device) {
qWarning() << errorString;
} else {
device->connectDevice();
std::cout << "connected vcan0" << std::endl;
device->connect(device, &QCanBusDevice::framesReceived, [device]() {
QCanBusFrame frame = device->readFrame();
QString testV = frame.toString();
QString qvSpeed = frame.payload();
std::string text = testV.toUtf8().constData();
std::string vSpeed = qvSpeed.toUtf8().constData();
//At that point the vVal values are being updated in real time.
//I want to pass the updated vVal to qml gui in real time.
int vVal = static_cast<int>(frame.payload()[0]);
//emit sendMessage(vVal); // 'this' cannot be implicitly captured in this context error.
std::cout << text << std::endl;
});
}
На данный момент main.cpp
не может отправить данные, а QML можетне исправить ошибку.
Внутри device-> connect
, emit sendMessage (vVal);
приведет к ошибке "this" не может быть неявно захвачен в этом контексте "ошибка.
Мне интересно, если естьхороший способ реализовать анимацию, отображая данные QML GUI в реальном времени.