Do you want to write a gui front-end to Searduino?
Searduino is made to ease and speed up development for the Arduino boards. In short, with Searduino you get
- C/C++ interface – use C/C++ to program your Arduino boards
- Makefiles – easy to use Makefiles for inclusion in your project
- Stand alone program – build your Arduino code to run on your local computer instead
- Simulator – run your Arduino code in a simulator to test it
- Simulation API – write your own test cases in C/C++
- Python simulation API – write your tests in Python
- Arduino example (to C/C++) translation
About the gui
In a way searduino has a gui – We have been developing a gui written Python (pygtk) to make sure we write the underlying library in a way that makes it easy to develop a real gui. So there is a gui but no proper one. Anyhow, here’s a snapshot of the (non proper) Python gui:
We believe that the gui needs to be written in C/C++ and using a thread safe graphical toolkit. The speed which which the callbacks call the gui require as short path as possible from the source to the handler and as already mentioned that the toolkit is thread safe (the Arduin ocode is executed in a thread). There is however a threshold for max updates per second which can be used but we still believe that C/C++ is the best way – but don’t hesitate to contact us (see email address below) if you believe differently.
Want to join?
If you like creating guis and want to help out on Searduino – send an email to hesa -at- sandklef.com
Btw: the python gui was also used to test Searduino’s Python extension
When running Arduino code locally Searduino defaults to simply print when Arduino code uses the new USBDevice stuff available on the Leonardo board. It is now (locally on my laptop) possible to add HID fakers – currently Searduino implements Mouse.move on X11 systems using the XTest extension.
It took a while to get it to work, more on why below, but it seems to be working fine developing code for Leonardo now.
Where to get it:
- from git / master branch
- a release is under consideration
Tested so far:
- Compile and upload for Leonardo boards
- Move the mouse around using the Mouse.move method
- Test more
- Make twi code work (Arduino 1.0.1 has a slight change in the API)
Problems encountered when adding support for Leonardo:
- Had to include all objects form libsearduino (dunno way right now). This was done using the linker flag “-whole-archve”). You as a developer need not do anything to use this.
- USB device has to be attached in the main function. Searduino provides a macro (searduino_usb_init()) for this.
This work involves switching to Arduino 1.0.1, making sure Searduino handles the new kind of pin (pwm and digital..)
For some of the students in the embedded project we provide a picture of the current Python GUI frontend to Searduino.
New version of the manual with some text on how to write a simulator frontend: manual
News in 0.65
Pins are now working more like the actual boards
Boards are set up separately
Only allow write on serial after a call to begin has been made
More Arduino examples used to verify installation
If no registered listener for log msgs, then default to fprintf to stderr
Added rather stupid stub for pulseIn
Searduino version can be requested in Makefile
Documented how to set USB device manually
Started working on documenting I2C devices
Better management of Analog pins
Fixed Savannah bugs:
#36284 SEARDUINO_DEBUG not available…
#36280 Serial print functions do not work for stand alone programs
#36227 arduino_ex2c: main.c not added in Makefile
#36226 Add OS specific paths to upload script
#36285 Add pulseIn to searduino stubs
#36286 Add doc about USER_PORT
#36224 Add version handling in makefiles
GNU/Linux 32 bit:
GNU/Linux 64 bit:
searduino-bin-0.64-x86_64.tar.gz (UPDATED LINK!!!!)
Windows 32 bit: