On Wed, 09 Feb 2011 22:26:51 +0000, Paulo Costa <[email protected]> wrote:
>On 09/02/2011 22:10, Bo Berglund wrote: >> I have used SdpoSerial as the RS232 handler in a class which is used >> in a test application. >> In this I create the SdpoSerial component in code in the constructor >> of my class like this: >> ... >> I keep track of various communication states in the FCommState >> variable (it is indicating the state in a state machine). >> >> The problem I have is that even though I open a non-existing port the >> SdpoSerial does not indicate this. Following the Open method Active is >> true even though a completely bogus port number has been given! >> >> Why is this and how can I fix it? >> I need to know if the port is actually working or not.... >> > >Hi, > > >Two things: > >a) if possible post a compilable (even better runnable) example. There >are some detail missing that could hold the reason for your trouble. The application is quite extensive now because it holds the complete syntax of the data acquisition equipment I woark towards. So it is not really realistic to post it all.... But it does work, it is just that the user gets no indication whatever if he selects a port that either does not exist or is already used by another application. In all of my RS232 experience in Delphi (been at it since 1996) it was always the case that the serial component barfed if one tried to open a non-existing or already open port. I have used several different ones and they all had a property similar to Active or Open, which showed the actual state even if they did not throw an exception on opening an erroneous port. Not so with SdpoSerial (or I have yet to find it). >What leads me to... > >b) have you redefined "Active" in your class and it is hiding the >TSdpoSerial active property? > No, as I showed I only create the FComm object as a TSdpoSerial instance, then set its properties including Active. I have tested the program now in the original development PC (a VMWare virtual XP-Pro machine) and my Win7X64 laptop and as long as I use a physical com port all seems to work OK. In the virtual machine it means mapping the laptop docking station COM1 into the VM. THen it works just fine. But when I involve a USB connected serial port (which I have to do if I undock my laptop) I get all kinds of strange errors, basically no communications at all! I have two different ones but both are problematic (ATEN RS232USB and SUNIX 4-port ComHub). Do you know of any problems related to SynaSer via USB connected RS232 adapters on Windows7 or WindowsXP? Right now I am moving the Lazarus application around to different computers (real and virtual) and different COM ports (real or USB connected) to try to figure out why it is so hard making it always work. And this is when I found that I tried ports that were already reserved for the virtual machine or actually unplugged without SdpoSerial saying anything about it.... -- Bo Berglund Developer in Sweden -- _______________________________________________ Lazarus mailing list [email protected] http://lists.lazarus.freepascal.org/mailman/listinfo/lazarus
