C# Update multiple open Forms from data retrieved from Serial port
Posted on 2008-06-24
I'm currently in design phase, so I don't currently have any code snippets, but here's a description of the program. It is a timing view for a race team.
Receives text based serial stream from attached device. The information I will be retrieving from the stream will be "Car number, Position, Lap Number, Lap Time, Total time". From this I will be updating multiple forms. One form will show current positions, last lap, and whether the Car moved up or down in position. Another will show Car Number, Current Points (determined from loaded data and Position), Another will show current number of laps on tires for our car. There could be up to 5 windows all showing different information that is derived from the stream data.
In addition to the real time updates, it will also need to save the data to write out to a file at the end.
I'm wondering what will be the best way of keeping all of this data and updating multiple forms when a SerialPort.DataReceived event is fired. One thought I've had is the DataReceived even processes the stream and get's the information, then passes a single string with just the info I need to each of the forms.
As for storing it for writing a report afterwards, the only thing I could think of would be a multi dimensional array where each Lap would have 43 car numbers, and each car # for each lap would have Lap Time, Position, Total Time, and then at the end dump this information into CSV or however I choose to store it.
The possible problems I can see :
1) Speed - The Form updates need to be as close to real time as possible.
2) Buffering - Can't lose data from serial port, need to make sure every incoming value is pased
2) Size - Worst case would be 400 Laps with 43 Cars, each lap/car combo with the three values mentioned.
Am I on the right track? Any advice would be greatly appreciated. I've done some MDI applications, but nothing that all pulled from the same values and defintely nothing of this complexity, so I'm trying to plan it out as much as possible so I don't paint myself into a corner.
Thanks in advance.