Awesome
SerCommPlugin
A Godot 4.1+ plugin to read/write Arduino serial input.
Read
GDExtension
for more
Want MQTT instead of Serial?
If serial input is not what you're looking for maybe a plugin for MQTT would suite you better?
godot-mqtt repo made by Julian Todd
Dependencies
- Godot 4.1 or above
- godot-cpp
- libserialport (LGPL-3.0 license)
- MSBuild v143 or later for Windows builds
- '
apt install autoconf libtool
' for Linux
- fmt (./src/fmt/) (MIT license)
Build system
- SCons
- Python 3.10 or above
- Python virtual environment
- Git
Compilation Database and/or CMake
Experimental feature
The Scons build will generate a Compilation Database (CD). CLion can open a CD directly
You can also run the generate_cmake.py script to generate a CMakeLists.txt.
mkdir build
cd build
cmake ..
make
Repo structure
src - Plugin source code
deps - Dependencies, like libserialport. Will be created on install\
godot-cpp - Godot bindings. Will be created on install\
Full Build
This will build everything form scratch
python -m venv ./pvenv
// Activate pvenv for Windows
pvenv\Scripts\activate
// Activate pvenv for Unix/MacOS
source pvenv/bin/activate
pip install -r requirements.txt
python install.py
Quick Build
This will only build the GDSercomm part. Requires at least on Full Build before working
python -m venv ./pvenv
// Activate pvenv for Windows
pvenv\Scripts\activate
// Activate pvenv for Unix/MacOS
source pvenv/bin/activate
pip install -r requirements.txt
python build.py
Output
After a completed build all files you need will be in ./demo/bin directory. Except the libserialport library. It will be inside the ./deps/libserialport directory.
Windows = .\deps\libserialport\x64\Debug\libserialport.dll
Linux = libserialport.so
Usage
- Create a SerComm node in your scene.
- Select baudrate and port number.
- Create a script on any other node in scene
- script your logic
By toggle the radio button the extension will search for available ports and refresh the port dropdown list.
Create a SerComm node for each port you want to read or write to.
[!NOTE] SerComm uses the
on_message(message : String)
when a message is recieved. In the_process
function of the node, Godot automatically callsread_serial
for you, then emitson_message
. If you want disable automatic reads, you can override_process
:func _process(delta): var in = waiting_input_bytes(); var read = read_serial(in); print(read);