From: Kelvin P. <k.p...@st...> - 2001-10-27 15:27:43
|
Dieter, I have completely rewritten the ModbusASCIITransport (old framework). It now uses pushback input streams to scan for the start and end of frame delimiters. I have committed it into the project CVS repository. It is a relatively large piece of code (about 600 lines) as I have attempted to make it as robust as possible. It make no assumptions unless absolutely required. It requires that the ':' character be within the first 527 characters and the end characters be within 527 characters of that. It will simply return false from the receiveFrame command if the above conditions fail. I have not had time to really acid test it but I have had it running with a simple Master/Slave echo style program between a Win NT box and a TINI. (Linux and serial ports did not want to work today, due to cabling problems I think.) It sent about 10 messages that were send, received, then sent and received again correctly before something dies so it is pretty close to working. I have also made sure that no byte-banning happens. As you will see from the code all stream operations are block transfers. This is good as a frame can be up to 527 characters in length. The LRC code is also working. Anyway it is now 2:30 in the morning (exaggerated due to daylight saving coming in 1/2 an hours ago in Sydney) and I'm going to get some sleep but I will have more of a play with it tomorrow and see if I can harden it some more. Cheers, Kelvin |