Adding an Abstraction and Safety Layer to a Serial Communication System

"We used to have to use the Arduino command line or even Tera Term to control our hardware. We had to be very careful not to do anything manually that would risk the safety of the equipment. With the GUI, this process is automated making it a lot easier and safer to use while still having the flexibility that we need."


Varex was using chains of serial commands to manufacture X-ray tubes. The process was also being used in R&D and the serial commands were getting complicated and confusing and had no safety control. They needed a visual way to abstract the commands out of the process and disallow dangerous command sequences.


Endigit created an application built around sending and receiving serial commands, but abstracted away the serial commands using buttons, graphs, and other controls or indicators. It received commands from the Varex hardware to alert the application of state changes or results and sent commands to safely start high voltage shots used to manufacture X-ray tubes.


Varex Imaging is a medical X-ray tube and image processing solutions provider from medical imaging, to cargo screening and border security imaging. They have a device referred to as the VTS that uses three Arduinos to coordinate serial communication with a high voltage generator and a steering device. This setup is used in both R&D and manufacturing for X-ray tubes. To manufacture a tube, a chain of serial commands would be sent to the VTS to run a schedule of voltage shots at different locations. This worked alright for manufacturing, but the series of commands gets complicated when doing research, and a user interface was desired to simplify the R&D process and improve efficiency in the department. Based on a similar project that we had done at Varex to communicate with the generator alone, Varex decided to hire Endigit to create a solution and integrate their VTS coordination system with a clean, easy-to-use user interface.
This is the VTS device that sends and receives serial communication between the X-ray tube and generator setup and the LabVIEW software.


As we began to architect this application, we emphasized modularity in our design. As an R&D solution, we knew that the application would continue to change and grow. We couldn't afford to provide a rigid solution that wouldn't allow growth and major changes. The application was built around sending and receiving serial commands, but is an abstraction layer that takes everything away from serial commands and uses buttons, graphs, and other controls or indicators for simplification so that the actual serial command doesn't need to be understood by the end user. The VTS sends information to the application that it is ready to run, the results of a scan, when the generator has an error, etc. The application has the brains to handle the serial messages and display the necessary information in a human readable format. The application knows when a scan is allowed to be sent safely, it stores X-ray tube information, it provides a means for scan schedule creation, and other customization. It has a login for engineering mode that allows serial commands to be sent directly without the abstraction.
VTS software user interface
By exceeding their expectations, Varex decided to expand the scope of the application so that rather than use this for R&D purposes only, they implemented features that would allow them to use this in manufacturing as well as take it to their global customer base.


Because of the R&D aspect of the project, it continues to change and require updates. The device that our software talks serially to has continual firmware updates and that often requires updates to the LabVIEW software. We work with Varex to abstract away the firmware updates and keep the user interface the same for the engineers and operators who are running the system.


  • Increased efficiency of research and development
  • Additional capabilities for manufacturing X-ray tubes
  • Quicker training process for new technicians and engineers


  • Arduino

Software Modules

  • LabVIEW
  • NI Serial

Add a safety or abstraction layer to your engineering system

Contact Endigit