I have created a gui in python that allows an arduino controlled mecanum wheel cart to move around.
The cart allows for 8 different move directions and can rotate left and right. Commands are sent over a serial connection between the laptop(w10, python) and the arduino.
I have an Enum class in python representing the different move directions.
I have a corresponding enum in the arduino to interprete the commands from the python task.
What is an easy way to share a single common enum definition for both coding environments?
- You mean simple code-sharing between two pieces of source code in differing languages? You'll have to find some common ground between them.Majenko– Majenko2020-11-28 14:35:47 +00:00CommentedNov 28, 2020 at 14:35
- You mean copy and past the text (the enum list) between the two? I found a great thread that talks about Python enums specifically. But even with the slightly different syntax of all the different options in Python, I still see slight differences that will likely prevent cutting and pasting w/o modification. Ask and I'll post that as an answer if you want.st2000– st20002020-11-28 14:57:21 +00:00CommentedNov 28, 2020 at 14:57
1 Answer1
One approach that I have used for similar purposes is to generate the appropriate header files (or module or whatever) from a simple text file for all the required uses.
Since you already know python this should be pretty easy. Quick "proof of concept" follows. (Warning: I barely know any python.)
One downside to this is that you have to remember to regenerate the header/module each time you update the enum (keys or values) - don't forget to recompile for the C++ part. If you have a build system, it is best to integrate that code generation step into it.
A variation of this is to parse one of the language's source code to extract the definition and output it in a format suitable for the other. That is generally much harder to do though if you want to make it robust.
robot.enum
UP 1DOWN 2LEFT 3RIGHT 4JUMP 5enum_generator.py
def python_enum(filename): with open(filename, 'w') as w: w.write('class Robot(Enum):\n') with open('robot.enum') as r: for line in r: parts = line.split() w.write(f' {parts[0]} = {parts[1]}\n')def cplusplus_enum(filename): with open(filename, 'w') as w: w.write('#pragma once\n') w.write('enum Robot: int {\n') with open('robot.enum') as f: for line in f: parts = line.split() w.write(f' {parts[0]} = {parts[1]},\n') w.write('};');python_enum('robot_enum.py')cplusplus_enum('robot_enum.h')Explore related questions
See similar questions with these tags.

