A bus trip planner application for windows desktops coded in C++11, capable of finding the optimal trip between two locations through the Nottingham City bus network in less than 2 milliseconds.


  1. User inputs an unlimited number of bus timetables.
  2. User inputs walking times between bus stations.
  3. User request timetable and walking times to be read from input files, OR from database constructed from input files entered on previous run of application.
  4. User inputs real time deviations from timetables, indicating current route departures which are running early, late or have been cancelled.
  5. User inputs trip specification:  start time, start location, destination location.
  6. User chooses interactive mode.  In the default batch mode, program reads timetables and calculates one trip.  In interactive mode the timetables are read once and the user can enter multiple trip planning requests.
  7. Application calculates shortest trip from start to destination, including necessary transfers between routes and walks between stations, taking into account any real time deviations using the Dijkstra shortest path algorithm.
  8. Display shows total trip time.
  9. Display shows wait at start station
  10. Display shows each station stop on trip
    1. Time.
    2. Route number
    3. Station location
  1. Display shows, when necessary to transfer to another route
    1. Wait time
  1. Display shows, when necessary to walk between stations
    1. Walk time.
    2. Wait time.

Download complete documentation

Posted in Uncategorized | Leave a comment

VASE – a process simulator

Vase is an extensible process simulator that can handle both individual and continuous tasks. Examples of individual tasks are customers at a bank, cars on an assembly line, or documents in an office. Examples of continuous tasks are oil in a refinery or water in a river.

A source generates a task. The task moves through the process until it reaches a sink. The path of the task through the process depends on the nature of the task, the modifications which may occur to the task and the connections in the process.

The name Vase is based on an image of the process as a network of pipes and flowers. The pipes allow tasks to flow between flowers. The flowers are event handlers which modify the tasks and control their movement. The arrangement of flowers that define a process is called a vase.

Vase  is designed to make it easy as possible to add specialized flowers ( event handlers ) with their own appearance and behaviour.  Here are screenshots of two models using specialized flowers.

Sample Model: Pellet Dryer


This shows a model of a wood pellet drying plant. It has custom designed flowers which are not available in the open source code.

Sample Model: Fermenter


This shows  the simulation of a fermentation process with Ex situ Butanol Recovery (ESBR) for biobutanol production. The simulation is based on this paper .

The screenshot shows the VASE process model: essentially a fermenter and an adsorber connected with a circulating flow.  In the bottom right is a pop up where the user can enter starting conditions and parameters.  In the background is a graph showing the results of a simulation run, with the sugar, ethanol and butanol concentrations in the fermenter plotted against time.

The ESBR model is under development, currently ( March 2016 ) the adsorber is being implemented.  All the code is open source and is available in the VASE repository.

Sample Model: Stopping Machine

Here is a task orientated simulation of a production line with machines that stop from time to time


The background graph shows the throughput ( green ) and queue size ( red ) for machine_1 plotted against time.

Posted in Open Source | Leave a comment

Conveyor Belt Pulley Design

Raven’s Point contributed to the development of a calculation engine to perform Finite Element Analysis ( FEA ) of conveyor belt pulley designs.  The FEA code was optimized and parallelized so that it ran in a few seconds, numerous consistency and design checks added, and a Bill of Materials and Operations implemented.  The engine is currently in use here.


Posted in Uncategorized | Leave a comment

cRunWatch GUI report

Added code timing profiler report in a string, so GUI applications can be profiled.  cRunwatch

Posted in Uncategorized | Leave a comment

Stackoverflow Reputation Milestone

Today I reached 10,000 reputation points on stackoverflow.


Posted in Uncategorized | Leave a comment

RunWatch Daisy Chain Feature

Added Daisy Chain feature to cRunWatch code profiler.

Posted in Open Source, Software Engineering Tool | Leave a comment

GRAPHEX : The Raven’s Point Graph Explorer.


A GUI for the boost graph library.

– Add named vertices.

– Specify pinned, fixed location for vertices

– Add edges connecting vertices

– Arrange vertices in a circle

– Arrange vertices according to their connections.  This uses a modified implementation of the Kamada & Kawai algorithm that can handle pinned vertices and disconnected graphs.

– Arrange vertices manually by dragging with mouse

– Color vertices so no two connected vertices have same color

Complete Feature List

Posted in Open Source, Projects | Leave a comment


An open source MODBUS Master/Slave simulator



1. A windows desktop application

2. Coded in C++ using .NET

3. Option to simulate a master or a slave.

4. Option to use ASCII or RTU mode

5. Able to configure serial port number and speed.

6. All slaves are assumed to be on the same port

7. Able to send a read query to a specified station and register block.  Values returned will be decoded and displayed.

8. Able to configure station numbers and register numbers that the slave will simulate.

9. Able to send a write query to a specified station and register with a specified value.

10. Display log of all communications sent and received

Here is the Github repository

Posted in Open Source, Projects | 1 Comment

Real Time graphing

Real Time graphing

Techniques for displaying real time graphs of data that update at 100Hz.

Posted in Uncategorized | Leave a comment

Speaker to Robots

Raven’s Point builds applications that speak to robots.

Larry Niven’s science fiction stories feature a character named Chmee who is the alien ambassador to Earth.  His title, when translated into English, is Speaker-To-Animals.

The formal term for this is SCADA , meaning supervisory control and data acquisition. A PC is connected to another device, interpreting the data that the device transmits and issuing appropriate commands to the device. The connection is usually USB, but can be ethernet or RS232. The fun part is the weird and wonderful devices that must be communicated with: video camera, GPS, thermostat, a tiny remote controlled submarine. Each device speaks its very own language, usually called a protocol. These languages are incredibly stilted, more like Latin than Italian, so the application code must translate the communication into a graceful GUI that the human operator can use comfortably to control and monitor the device – hence Speaker-To-Robots.

Real time data from movement sensor integrated and displayed

Real time data from movement sensor integrated and displayed

  • Pelex-Max.  Collects, processes and displays 20 channels of 2000 sample/sec data from wirelessly connected medical sensors in an operating theater.  Here are more details about this project.
  • PowerHeater.  This application controls and records wind turbine blade production.  The strength of the composite materials used depends critically on a precise temperature profile imposed during a curing process lasting several days.  Hundreds of heaters, coolers, thermostats and temperature gauges are placed across the surface of the turbine blade, every one individually monitored, controlled and recorded by PowerHeater using the Modbus protocol.
  • eCrew.  A modern sailboat has instruments measuring depth, wind speed and direction, and compass bearing.  Occasionally these readings are of vital importance, but usually the captain must watch wind and waves, sails and other sailboats, not the instruments.   eCrew monitors all the instruments using the NMEA protocol, warning when a critical situation arises.
  • VisControl.  The chair of a state senate chamber recognizes one of the senators. When the senator begins to speak, one of three cameras has already swung into position and is webcasting the perfect image. VisControl stores over 50 preset positions for each camera, automatically selecting and moving the cameras into position whenever the speaker changes, using the VISCA protocol over RS232.\
  • SpaceCom  Enables communications between satellites and the ground using the  NASA TC SPACE DATA LINK PROTOCOL CCSDS 232.1-B-2
  • Proteus.  A tiny submersible on the end of a long cable threads its way through a pipe and into a huge concrete oil storage container under the North Sea.  Once in position, sonar scans the interior looking for damage and silt build up.  Proteus controls and records the sonar, calculating a real time three dimensional picture.   Proprietary protocol over boosted RS232.
  • SLReader.  A wireless detector is used to identify isotopes.  SLReader configures, monitors, and downloads data from the device using the ZigBee protocol.
  • RTLink.  Connect the different instruments ( seven models from three manufacturers ) used to measure the optical properties of a patient’s eyes and eyeglasses, each with its own protocol, to a database server so the ophthalmic doctor can keep everything straight, helping to ensure that all the measurements are connected to the correct patients.  Here are more details on this project.
  • GrindOMeter. Application controlling feed cycle of crankshaft grinding machine. A Solartron Orbit 3 digital gage measures the crankshaft diameter in real time with micron precision during grinding. The grinder is controlled with an ACCESS relay output device.
  • RFID Reader Client.  Application to read and write data to RFID tags via the LLRP ( Low Level Reader protocol ) to the Motorola FX9500 RFID reader Ethernet port.
  • LSD ( LED & Switch Driver ).  Application to control LED status lights and monitor switch settings using DLP232PC.

Open Source Tools

  • Simodbus.  A Modbus master / slave simulatior.  Read more …
  • HIDExplorer. List details of installed Human Interface Devices ( HIDs ). Read More …
Posted in Projects | Tagged | 3 Comments