Skip to content
QtWS25 Last Chance
  • 0 Votes
    2 Posts
    354 Views
    G
    @Guy-Radford This appears to be a bug as the CAN Frames are decoded correctly on a windows machine, I have raised a Bug report with QT: https://bugreports.qt.io/browse/QTBUG-113538
  • libsocketcan not found in 5.14.1

    Solved General and Desktop qcanbusdevice serialbus 5.14
    4
    0 Votes
    4 Posts
    3k Views
    aha_1980A
    @rejuce Libsocketcan is still optional, but gives additional functions, as stated here: https://doc.qt.io/qt-5/qtserialbus-socketcan-overview.html If you don't use that, you can safely ignore the warning. But if you install the libsocketcan library, that's fine too. Regards
  • Connect multiple slots to one signal

    Solved QML and Qt Quick signal&slot qcanbusdevice
    10
    0 Votes
    10 Posts
    7k Views
    B
    @J.Hilk I found out what my problem was. My two slot are excuted. The problem was that it didn't pass a certain condition in the second slot. My problem is solved. Thank you for your responses. Best Regards,
  • Problem reading a message from a QCanBusDevice.

    Unsolved General and Desktop qcanbusdevice can bus qml
    11
    0 Votes
    11 Posts
    2k Views
    B
    @aha_1980 said in Problem reading a message from a QCanBusDevice.: A circular buffer will not help to filter out messages you are not interested in. I want to use it to store the messages in order to avoid two device attempting to access to the network at the same time
  • Wait until slot end to continue program execution

    Solved General and Desktop qcanbusdevice
    10
    0 Votes
    10 Posts
    4k Views
    B
    @J.Hilk Thanks you. Its works. Regards.
  • Qt CanBus,SYSTEC CAN can't read CAN frames

    Solved General and Desktop qcanbusdevice
    7
    0 Votes
    7 Posts
    2k Views
    aha_1980A
    Hi @Babs, Just one note: device->setConfigurationParameter(QCanBusDevice::CanFdKey,false); That is not needed, as CanFd is disabled by default (and SYSTEC hardware is not FD capable, at least as far as I know). Regards
  • 0 Votes
    11 Posts
    1k Views
    B
    @aha_1980 Thanks you. Regards,
  • QCanBusDevice and CanOpen device

    Unsolved General and Desktop can bus qcanbusdevice qcanbus
    11
    0 Votes
    11 Posts
    4k Views
    B
    @aha_1980 i call setConfiguration parameter in my class constructor. Here is my class header #ifndef CANOPENDEVICE_H #define CANOPENDEVICE_H #include <QObject> #include <QSettings> #include <QQmlEngine> #include "protocolmanager.h" #include "ByteArrayQmlWrapper.h" #include "objectdictionary.h" #include "TypesQmlWrapper.h" #include "QQmlVarPropertyHelpers.h" #include "QQmlConstRefPropertyHelpers.h" #include "QQmlPtrPropertyHelpers.h" #include "edsreader.h" #include "QQmlEnumClassHelper.h" #include "QQmlObjectListModel.h" #include "QQmlListPropertyHelper.h" QML_ENUM_CLASS (CanOpenNmtCmd, StartNode = 0x01, StopNode = 0x02, SetPreOp = 0x80, ResetNode = 0x81, ResetComm = 0x82, NB_CMDS) QML_ENUM_CLASS (CanOpenLssCommands, SwitchState = 0x04, ChangeNodeId = 0x11, ChangeBitrate = 0x13, StoreConfig = 0x17, NB_CMDS) class CanOpenDevice: public QObject { Q_OBJECT QML_WRITABLE_VAR_PROPERTY(CanOpenNodeId,nodeId) QML_WRITABLE_VAR_PROPERTY (bool, isMaster) QML_WRITABLE_PTR_PROPERTY (QCanBusDevice, device) QML_WRITABLE_PTR_PROPERTY(ProtocolManager,protocolManager) QML_WRITABLE_VAR_PROPERTY (QString, edsFileName) QML_WRITABLE_VAR_PROPERTY(QString,deviceName) QML_WRITABLE_VAR_PROPERTY(QStringList,deviceInfo) QML_WRITABLE_VAR_PROPERTY(QStringList,subEntriesList) QML_WRITABLE_VAR_PROPERTY(QStringList,entries) QML_WRITABLE_VAR_PROPERTY(QString, deviceProfile) public: explicit CanOpenDevice(QObject *parent=Q_NULLPTR); CanOpenDevice(const CanOpenNodeId &nodeId,const QString &identNumber,QObject *parent=nullptr); void init(void); void start(); void stop(void); void reset(void); void createDevice(QString plugin,QString interface); void setConfiguration(int key); ProtocolManager * getProtocolManger(); ObjectDictionary * getObjectDictionary(); Q_INVOKABLE ByteArrayWrapper * createBufferFromInt8 (const QmlBiggestInt value); Q_INVOKABLE ByteArrayWrapper * createBufferFromInt16 (const QmlBiggestInt value); Q_INVOKABLE ByteArrayWrapper * createBufferFromInt32 (const QmlBiggestInt value); Q_INVOKABLE ByteArrayWrapper * createBufferFromUInt8 (const QmlBiggestInt value); Q_INVOKABLE ByteArrayWrapper * createBufferFromUInt16 (const QmlBiggestInt value); Q_INVOKABLE ByteArrayWrapper * createBufferFromUInt32 (const QmlBiggestInt value); Q_INVOKABLE ByteArrayWrapper * createBufferFromHex (const QString & hex); Q_INVOKABLE ByteArrayWrapper * createBufferFromString (const QString & str); Q_INVOKABLE ByteArrayWrapper * readValue (const int index, const int subIndex); Q_INVOKABLE void changeValue (const int index, const int subIndex, ByteArrayWrapper * buffer); Q_INVOKABLE void sendNmtChangeRequest (const int nodeId, const CanOpenNmtCmd::Type state); Q_INVOKABLE void sendLssActionRequest (const CanOpenLssCommands::Type cmd, const int argument = 0); Q_INVOKABLE void sendSdoReadRequest (const int nodeId, const int index, const int subIndex, const bool blockMode = false); Q_INVOKABLE void sendSdoWriteRequest (const int nodeId, const int index, const int subIndex, ByteArrayWrapper * buffer); Q_INVOKABLE void writeValuetoSubEntry(ObjDicIndex index,ObjDicSubIndex subIndex,QString value); Q_INVOKABLE QString getParameterNameforSubEntry(QString subEntry); void getWritableEntries(); Q_INVOKABLE QString entryParamName(QString idxStr); Q_INVOKABLE QString getDefaultValue(QString subIdx); Q_INVOKABLE void modifyValue(QString val,QString subEntry); Q_INVOKABLE QStringList getSubEntries(QString entry); Q_INVOKABLE void dataToCan(QString entry); public slots: Q_INVOKABLE void loadObjectDictionary(QString edsFilePath); //Q_INVOKABLE bool writeValueToEntry(); protected slots: //void onCanOpenParamChanged(void); signals: void initialized(quint32 bitRateKey,QString plugin="systeccan",QString interface = "can"); void started(void); void stopped(void); void reseting(void); void EntryWritten(); void loaded(QString edsFilePath); private: bool m_ready; bool m_running; QString m_interface; QString m_plugin; EdsReader *m_edsReader; QSettings *m_setting; ObjectDictionary *m_obd; }; #endif // CANOPENDEVICE_H
  • 0 Votes
    4 Posts
    3k Views
    M
    Yes, you're right. Thanks.
  • 0 Votes
    7 Posts
    3k Views
    aha_1980A
    @MrBrightSide8 said in bool QCanBusDevice::connectDevice and QCanBus's createDevice always return true?: Yes, I can see it in vcanconf.exe in channel 1 and 2 of the CAN device. So you mean, channel 1 and 2 are the real hardware channels, right? Do you see virtual channels there also? (You could also post a screenshot of vcanconf.exe). If the channels 1 and 2 are the hardware CAN channels, you should be able to connect to "can0" or "can1". Unfortunately I don't have Vector CAN hardware at hand so I could always test using the virtual channels only. Is there anyway to determine the actual hardware connection in code? There is currently none, except using availableDevices() first.