Giter VIP home page Giter VIP logo

qm's Introduction

QM model-based design tool

What's New?

GitHub release (latest by date)

View QM Revision History at: https://www.state-machine.com/qm/history.html

Documentation

The online HTML documentation for the latest version of QM is located at: https://www.state-machine.com/qm/

The offline HTML documentation for this particular version of QM is located in the folder html/. To view the offline documentation, open the file html/index.html in your web browser.

About QM

QM (QP Modeler) is a freeware graphical modeling tool for designing and implementing real-time embedded software based on the UML state machines and the lightweight QP Real-Time Embedded Frameworks (RTEFs). QM is available for Windows 64-bit, Linux 64-bit, and MacOS.

NOTE: For more information, please refer to the online QM Manual at: https://www.state-machine.com/qm/

Downloading and Installing QM

The most recommended way of obtaining QM is by downloading the QP-bundle, which includes QM and also all QP frameworks and the QTools collection. The main advantage of obtaining QM bundled together like that is that you get all components, tools and examples ready to go.

NOTE: QP-bundle is the most recommended way of downloading and installing QM. However, if you are allergic to installers and GUIs or don't have administrator privileges you can also download and install QM separately as described below.

CAUTION: If you have any previous version of QM installed on your system, please uninstall it before installing the new version.

Installing QM on Windows (64-bit)

Go to the QM releases and download the QM installer (qm_<ver>-win64.exe), which is digitally signed by Quantum Leaps. The installer will create a desktop shortcut for QM and will also associate QM model files (*.qm and *.qmp)

Alternatively, if you are allergic to installers, you can download QM zip archive for Windows (qm_<ver>-win64.zip). Installation consists of unzipping the archive into any directory, although the C:\qp\ folder is the recommended default.

NOTE: It is generally not recommended to install QM in such standard locations as "Program Files" or "Program Files (x86)" because these directories have access limitations and don't allow you to modify the QM Style Sheets (qm_dark.qss and qm_light.qss) or the model templates.

If you installed QM via the installer program, the uninstaller will be provided and you can uninstall QM via the standard "Apps and Features".

If you installed QM from the zip archive, you uninstall QM by simply deleting the installation directory.

Installing QM on Linux (64-bit)

Go to the QM releases and download the QM zip archive for Linux (qm_<ver>-linux64.zip). You can unzip the archive into any directory, although the ~/qp/ folder is the recommended default.

After unzipping the archive, go to the qm/bin/ directory and make sure that the qm executable and the qm.sh shell script have executable permissions. You can either do this with your desktop's file manager or at the command line, type:

chmod u+x qm
chmod u+x qm.sh

NOTE: To run the QM application on Linux, you need to run the qm/bin/qm.sh script. Make sure that the file has executable permissions.

Installing QM on macOS

Go to the QM releases and download the disk image for macOS (qm_<ver>-macos.dmg). Because the .dmg file is not coming from the Apple Store, after downloading you need to launch a console and change the attribute of this file:

xattr -c qm_<ver>-macos.dmg

Only after changing the file attribute, you can install QM on your macOS. Double click on .dmg file. This will mount and open the disk image. To install the QM tool, you simply drag the qm.app image into the Applications folder (typically visible in the Dock). If you wish, you might also create the alias of the qm.app and place it on your Desktop.

To uninstall QM, simply delete the qm.app file and the examples.

Example Projects

The QM example models are included in the QP baseline distributions. The console-type examples are available for Windows (MinGW and Visual C++), Linux, and macOS. GUI-based simulations are available for Windows with the raw Win32 API. Cross-platform GUI examples based on the Qt framework are available in QP/C++.

Embedded examples are available for a number of boards, such as ARM Cortex-M, AVR, MSP430 with the IAR, ARM/KEIL, and GNU compilers.

Additionally, a number of examples are provided for the desktop (Windows and POSIX). These examples don't require any embedded hardware to try.

All examples are located in the /examples/ directory, where denotes the folder where you have installed the specific version of the QP framework (QP/C, QP/C++, or QP-nano).

Licensing QM

The QM graphical modeling tool is freeware. It is free to download and free use, but is not open source. During the installation you will need to accept a basic End-User License Agreement (see https://www.state-machine.com/qm/license.html ), which legally protects Quantum Leaps from any warranty claims, prohibits removing any copyright notices from QM, selling it, and creating similar competitive products. The EULA also prohibits distributing QM from third-party websites. The only legitimate source of QM is the SourceForge.net/projects/qpc/ website.

NOTE: QM uses internally the Qt application toolkit under LGPL Please refer to the LGPL Compliance Package for QM in the sub-directory qt_lgpl or online at https://www.state-machine.com/qm/qt_lgpl.html for more information how to obtain the source code for the Qt toolkit.

Licensing Generated Code

The code generated by QM is licensed under the same terms as the underlying QP framework, for which the code has been generated. Please refer to the QP licensing (https://www.state-machine.com/licensing/ ) for more information.

Support and Issue Resolution

Support for QM is provided in the Free Support forum at:

Bug Reports

The QM software has many assertions inside, and the assertions are ENABLED in the release version. When you hit an assertion, or any other error, please check the "Bug Tracker" available at:

If you don't find your problem, please try to reliably reproduce the problem, and submit a concise report to the "Bug Tracker"

Thank you for your help in improving QM!

Feature Requests

Also, if you find inconsistencies or any awkward features, please submit a suggestion how to improve this functionality to the "Feature Tracker" at:

How to Help this Project?

If you like this project, please give it a star (in the upper-right corner of your browser window):

GitHub star

qm's People

Contributors

quantum-leaps avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

qm's Issues

QM for Linux on Apple M1 processor (AARCH64)

I'm using Ubuntu Linux 20.04 on a UTM virtual machine hosted on MacOS on an Apple M1 processor. I had wanted to recreate the development environment I used previously with MacOS on Intel architecture. Is there any plan to release a QM build for this environment (AARCH64)?

Undo/Redo functionality seems inconsistent

Hitting Undo seems to have slightly erratic behaviour; namely when making both a graphical and a code change since the last save.
Hitting Redo does not necessarily get you back to the same state as before hitting undo.

Windows System environment variables

Few small issues:

  1. I unselected Mingw during the installation, since I already have one, but the non-existing path C:\qp\qtools\mingw32\bin was still added to Windows PATH.
  2. QPC was not added to envs, and blinky couldn't find qpc.h. I am not sure if that was intended. I added QPC system variable and it went further fine.
  3. Next, is probably different issue, but I am stuck here: Is this 32/64bit issue?:
/usr/lib/gcc/x86_64-pc-msys/10.2.0/../../../../x86_64-pc-msys/bin/ld: skipping incompatible C:\qp\qpc/ports/win32-qv/dbg/libqp.a when searching for -lqp
/usr/lib/gcc/x86_64-pc-msys/10.2.0/../../../../x86_64-pc-msys/bin/ld: skipping incompatible C:\qp\qpc/ports/win32-qv/dbg/libqp.a when searching for -lqp
/usr/lib/gcc/x86_64-pc-msys/10.2.0/../../../../x86_64-pc-msys/bin/ld: cannot find -lqp
/usr/lib/gcc/x86_64-pc-msys/10.2.0/../../../../x86_64-pc-msys/bin/ld: skipping incompatible C:\qp\qpc/ports/win32-qv/dbg/libqp.a when searching for -lqp
collect2: error: ld returned 1 exit status
make: *** [Makefile:216: build/blinky.exe] Error 1```

can't add state machine

OS: WINDOWS 10
QP Version: 5.1.2
I create a project and then add packet and class, the superclass also be chosed.
but I can not add a state machine below class object.(gray)
and QP 5.1.1 is not such problem

QM 4.1.2 for Mac: console mode unavailable

I'm trying to write a cross-platform Makefile for a project that includes qm code generation.

I see that the qmc command-line compilation utility no longer exists, and the help documentation says to run qm with the -c command line argument. However,

/Applications/qm.app/Contents/MacOS/qm -c

only succeeds in launching the GUI with a blank window (in which the Command-W close-window keystroke shortcut is not enabled).

How do I run the equivalent of qmc on the Mac?

Generate portable C code?

Hi, I'm learning on how to use QM and so far I really like it.

Is there any way of generating portable C code? I mean, I don't want the final code to relay on the qpc framework for compilation. Even If I create the most simple state machine, it will insert calls to "Q_TRAN()" "Q_HANDLED" "Q_SUPER" and definitions like QState, that would force me add the whole framework to my git repository just to compile a blinky.

I would be nicer if you could generate working state machines independent of the framework. and If you really need something from the framework, just add it to the source file. I think that approach would nice. Even for the first compilation, running the blinky example on Windows 10, the makefile will fail to compile (I think because it's not finding the framework!).

At least this would be nice to have it as an "option".

QM 6.1.0 fails to load legacy model from QM 5.2.5

I recently moved to QM 6.1.0 Linux, on Ubuntu 22.04LTS.
It failed to load legacy models built with QM 5.2.5. When attempting to do this, I get a pop up error:

Screenshot from 2024-01-08 20-30-38

Luckily, I checked the release notes found here: https://www.state-machine.com/qm/history.html#qm_6_1_0
The note about the new xml element external_package caught my attention. My model has an external package (.qpm) file. I manually edited the .qm file to replace the tag:
<package file="./gui.qmp"/>
with...
<extern_package file="./gui.qmp"/>

... and the model successfully loaded.

According to the Note section of the release notes under 6.1.0, this change should have been backward compatible, but it seems like it's not.

Links to gui.qp and gui.qpm files that reproduce the issue: https://github.com/smartinou/pfpp/tree/main/firmware/qp_ao/models

No shortcut feature

I searched through all of the provided documents to see if there's an option to assign shortcuts for the editor tools but can't seem to find any. Is there any way to have the ability of shortcuts if not would you be able to consider adding as a new feature for next release?
Thanks

where is QM source code?

I want to make some fixes in QM, so I cloned this repo, and did not find any source inside -- is this the OpenSource project?

about QHSM_MAX_NEST_DEPTH_

in the file qep_hsm.c, if the QHSM_MAX_NEST_DEPTH_ value is small than the required depth, the program maybe occur erro. and the assert is not effected

qmc for armv8 architecture?

Hi,

When I try to run the qmc binary from a docker container running on armv8 architecture I get the following error:

:/opt/qm/bin$ /opt/qm/bin/qmc.sh --version
qemu-x86_64: Could not open '/lib64/ld-linux-x86-64.so.2': No such file or directory

Do you provide some binaries for armv8 architectures? Or could I generate them by myself somehow?

String replacement in Model Search does not update function name

I have noticed that in QM if you replace a string which also happens to be the name of a function and then click "Generate Code", the function name is not changed in the code.

Alternative

What I do is add a space and save the model and then click generate code, so the software detects that the function has been changed so it changes the name as well in the code generation.

grafik

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.