In this small task, you need to optimise basic (not complex) existing Java (SE 6) code and provide sufficient comments so it can easily be understood. The deliverable is a Java text file or Jar with libs which we will run in Eclipse. We’ll be available for 1 or more intermediary tests which will allow us to test whether the program is behaving as desired and to understand your way of Java programming. Clear communication and attention for robustness and quality are highly valued. There is a chance that in the long-term (not immediately) we can offer you a full-time position, especially if you are also familiar with Java Charts (or similar), Hibernate/Struts and Android platforms.
For this task, you need to be familiar (not expert) with the RXTX 2.1 or 2.2 library for serial data communication (COM port) and its limitations: you need to implement a robust workaround for the hardware disconnect issue with plugged-in COM ports. We can provide you with suggestions to get started. In optimising and elaborating the code, you choose for maximum compatibility and portability – the code will initially be used on Windows 7/8 and later on other platforms. Use of additional (non-standard) libraries needs to be agreed beforehand. Use of file separators, error handling/logging and terminating the program once triggered by a certain key combination, are among the (standard and common) needs.
The program should ideally be triggered (ideally avoid polling) once a COM port (with specific name) is plugged in. Once the COM port is opened, it is further triggered by incoming data (low baudrate). This incoming data is already implemented. When programming, it is important to keep in mind that the application will run continuously in background mode and/or as a service on a standard Windows 7 or 8 platform (Windows service via Procrun or just [url removed, login to view], later also as Daemon for non-Windows platforms). Once data comes in via the serial cable, the program saves the bytes to a file on the user’s harddisk (this is already implemented), and then the program should start regularly checking (ideally trigger) whether internet is available (for instance via a simple url. getContent() request) on the user’s computer (we can give suggestions to get started). Finally it should confirm via brief pop-up messages to the user that all data has been received on the computer.
You will maybe also be asked to briefly review a simple script (batch file or similar) which allows the user to easily install the program on the computer. With this installation script, your program should start automatically in background when windows starts.
Please contact me for more details. Thanks for your interest and willingness to explore a collaboration.