+44 (0) 1954 231 494
Cambridge Ultrasonics
Cambridge, UK
Consultancy service in physics, electronics, maths & ultrasonics

Cambridge Ultrasonics

Menu of services

Software Design - at a glance

  • C/C++/C#
  • HTML/CSS/JavaScript
  • VHDL
  • Matlab/Simulink for feasibility testing
  • Visual Basic
  • Access database
  • Target processors: PC, DSPs, FPGAs, microprocessors
  • UML top-down design

Software Design

Cambridge Ultrasonics' software design service has developed in response to our clients needs for the development of instruments. It includes full design, debug, test and documentation.

Our software engineers have experience in C/C++/C# for a variety of target processors including: PCs and DSPs. We also program FPGAs and CPLDs in VHDL.

Our approach to a project varies depending on the application. Many of our clients' applications require some signal processing and we strongly recommend prototyping it first using Matlab to prove feasibility. We then write the application based upon results of the Matlab feasibility. This approach results in shortened development times and more robust signal processing.

If the application is to run on a DSP then the compiler will generally use C/C++. For a PC we write applications in C++ or C# generally using Net Studio. For internet applications we use a combination of HTML with CSS and JavaScript. For embedded applications we use UML methods to perform a top-down design.

We also have experience in writing Access database applications with a wrapper application written in Visual Basic or C++.


An example of a Windows development project was for a client who had a product that measured audible sound levels. The product included accessory software to take data into a PC in a Windows application. The client wanted a second Windows application that would communicate with the existing Windows program to collect data then display different sets of data in multiple child windows inside a main parent window. Communications were based upon implementing a COM/ATL client/server interface between the two programs. The new program had many more ways to process and display the data.


Another example of a software development project was for a client with a factory making moulded polymer parts. A QA section on the production line measured a critical dimension on each part and a PC made a pass/fail quality decision on the part. The result was communicated back to the plant mainframe computer. The system was several years old and was running increasingly slowly. Cambridge Ultrasonics first analyzed the existing system to try to find reasons for slow operation - a number of problems were found but the most serious was that when the PC communicated to the mainframe it was done in ASCII characters and large quantities of data were involved. We recommended implementing an Access database on the data acquisition PC to contain all the information relating to the QA test for each part, with ASCII synchronization to the mainframe during periods of inactivity.


Cambridge Ultrasonics occasionally develops systems for internal projects. As part of a collaborative European project we developed a distributed array of intelligent sensors to communicate with a PC using CAN-bus. We wrote C++ code to run on the DSP inside each sensor, VHDL to run on the 2 CPLDs inside each sensor and a C++ Windows (multi-template) application running on the PC.