From: Kelvin P. <k.p...@st...> - 2001-10-28 00:47:52
|
Dieter, Another update. I found that a few of my problems in testing is that the serial ports on my Linux box were not working. Thus I have but a proper null modem cable using a serial breakout box I had lying about. I have not committed my code again, I'll do that later tonight after cleaning it up again. I found a problem in that if you disable the receive timeout (block until you get data) that the pushback input stream will have problems when you try and read a block that consists of pushed back data and (possibly) new data. It will simply block forever. The lesson I have learnt out of all of this is that the reading system must use the receive timeout and be prepared for read events to return 0 bytes and continue then continue normal operation. This is different to the behavior you would usually set for a Socket where you will simply block until you get more data. I have to go out for the day but I'll be back this evening and I'll have a major cleanup of the code and I'll post it again. Cheers, Kelvin -----Original Message----- From: jmo...@li... [mailto:jmo...@li...]On Behalf Of Kelvin Proctor Sent: Sunday, 28 October 2001 1:31 AM To: jmo...@li... Subject: [jModbus-devel] ASCII transport update 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 _______________________________________________ jModbus-devel mailing list jMo...@li... https://lists.sourceforge.net/lists/listinfo/jmodbus-devel |