Wawilib

What is WawiLib?

WawiLib will reduce the time you need to develop and debug Arduino projects with at least 25%.

How? WawiLib gives you real time monitoring of Arduino variables without interrupting the main program loop. It does so by reading and writing these variables via USB, Serial, SoftSerial, Ethernet-TCP, WiFi …

The only thing you need to do is initialize the communication channel, initialize the WawiLib library and add 1 single line of code per variable to be monitored.

WawiLib can only access static variables. Monitoring of local variables does not make much sense as their lifetime is very short and as the main program loop keeps running while WawiLib monitors and changes their value.

Where does the idea of WawiLib come from?

Since the ’80s large industrial installations are controlled by PLC’s (Programmable Logic Controllers). Siemens, Fanuc and Rockwell are some of the major players in the PLC market. 

A PLC has a main loop where the application program is executed. Main loops cannot be put on hold to wait for input as the PLC would lose control over the machine or installation it is controlling. The programming software for the PLC’s of different brands has at least 1 function in common: the user can monitor and modify the variables in the PLC while it is executing its main loop.  In practice the software presents a variable table where the user can add and modify the variables of interest. The Arduino IDE does not have a variable table, therefore while your main loop is running it is not easy to monitor and modify various variables in a flexible way. 

Our concept brings the variable monitoring technology from the world of the industrial automation to the Arduino world and enables real time monitoring of Arduino variables. In PC programming terms the variable table is also know as a “Watch window”. The term Watch window and Arduino Library together form the name WawiLib.

WawiLib main screen with list of variables

What technologies are used in WawiLib?

Writing software is a very expensive and time consuming job. Therefore it is important to use the best technology for the job. Depending on the job and the needs and the strategy of the company different choices are optimal. Why did we choose wxWidgets & C++ combined with Win32 or Win64?

WxWidgets was born in 1992 and is still maintained and improved today. One of the biggest challenges of software development is to choose a technology that guarantees return on investment in the long term. Not a bad word on other technologies such as C#, Java, .Net, Wpf and Silverlight but they simply cannot beat wxWidgets & C++ at all if long term track record is prime.

WxWidgets is also one of the very limited number of libraries (or the only one?) able to create a native look and feel on multiple platforms such as Windows, Linux and macOS. It is compiled for the OS and not running on a VM (virtual machine) or using some other kind of emulation. WawLib is currently not available for MacOS or Linux but, depending on the reaction of the market, WawiLib for Linux and MacOS might see the light of day in the future.

Once the choice for wxWidgets was made, we had to choose between C++ and Python as programming language. C++ has the same track record (or even better) compared to wxWidgets as it comes to long term sustainability. It is a (real) ISO standard and is still developed and maintained. C++ is also blazingly fast, and is supported by a myriad of compilers (Microsoft VC, GCC and others). The last argument why we chose C++ is that it has a very small footprint.  

In practice: if your computer can run Windows 10, it will run WawiLib without any problems with additional CPU loads below 10%.

How is WawiLib tested?

WawiLib was developed on Windows 7 and tested on Windows 10 and Windows 7. About 10 different test boards of different suppliers are available in our test factory: the classic genuine Arduino boards (Uno, Mega, Due, Nano 33 ble, Mkr 1000 wifi, Mkr WiFi 1010 and Nano 33 ble), some clones such as the SaintSmart Mega and the XDRduino Mega and the recently added ISP8266 based NodeMcu boards.

To communicate via cabled Ethernet, a Genuine Arduino Ethernet 2 shield, SaintSmart Mega Ethernet shield and a HanRun Ethernet shield were used. An Arduino WiFi shield and a MKR ethernet shield are also part of our test factory.

 The first WawiLib version used a RS232RS485 Shield V1R1 that was connected to our Dell Precision 3620 Workstation via RS232C (yes Dell still foresees a standard RS232C serial port on their high end product range). Later USB to serial converters such as CH340 and similar were added to our range of test equipment.

The youngest members of our test factory are ISP8266 based boards, such as the tiny 8266 stamp but also the CH340 NodeMcu V3 Lua Wifi, the D1 Mini NodeMcu Lua IOT and ESP-12F Wemos D1 Wifi.

Check in the WawiLib reference tables to see if WawiLib has been tested with your hardware. 

Get started with WawiLib today

Start now with real time monitoring of your Arduino variables