Modbus-Droid Software Projects Technology

Introducing Modbus-Droid!

After much furious learning and coding between VLI semesters, I have finally churned out my first ever Android app.


Modbus-Droid is a Modbus TCP client / scanner, that is designed to scan a contiguous block of modbus registers at a regular interval.

Using the software:

All you do to get this going, is go to the settings page and set the IP address of the Modbus Server (or slave in old terminology), the TCP port you want to communicate on, and the polling time. Then set the register offset you want to start reading values at, the length (or quantity) of registers you want to read, and the register type (Holding Registers/Coils, Input Registers/Coils). Press Menu->Connect, and once it connects and receives modbus register data, it will display in a list. You can then change the settings for the offset, register range, or register length at any time, and the list will update on the next scan.

Finally, you can also change the data display – which is how the data you are reading is displayed on the screen. Coil data can, of course, only be displayed as binary – so I represent those as “True” or “False”. But the register data can be displayed as binary – a collection of 16 1’s or 0’s for each register, unsigned and signed integers (single register, double register, or quad register types), as well as floats and double floats (which are 32-bit and 64-bit respectively).

If you are displaying Holding Registers, you can write the values, and the write dialog displayed will be tailored to your data display. So if you have the binary display, you will get a list of 16 checkboxes, where you can set, or unset individual bits within the register. If you are displaying an unsigned int, it will not let you put in a decimal place or a negative sign. Similarly, it will let you put in a negative sign when you are displaying signed ints, and it will give you the decimal place when you are displaying floats. I just want to make sure that people, like me, don’t make a mistake when entering the data to be written.

Other aspects of the project that are interesting to me

One thing about this whole process that has really excited me is that this was a fun learning experience for me, and I feel pretty confident that whatever Alec (my friend who only lives a few blocks away, and who is also a hobby android developer – his app is called MeterMaid) and I cook up for our next project will go a little faster and we both are confident enough in our knowledge of the Android APIs to go quite a bit quicker.

I’m also excited to release my first ever open source project, which is based upon an open source library – Modbus4J. (To be fair, there is one component of the library, that the original creator has chosen to not open source).

I’ve used this project to learn a little about Launchpad project hosting site, and the Bazaar version control system. I’m definitely not an expert by any means on either system, so please give me any feedback on how to better manage this project, or better set up the launchpad site (or better utilize bazaar for code management).
Launchpad site for the project:
Report and view Bugs Here:

Finally you should note – this is still in beta. I’m sure there are bugs I haven’t found, and a couple of less than optimal things that I do know about. So please let me know by emailing me or filing a bug.