[EMAIL PROTECTED] wrote:

That close is kept just to ensure that the open call does not fail saying "port already open". It was just for testing purpose.

Yes ReadTo is not an asynch API. The program execution is blocked at ReadTo till the timeout occurs. But the problem occurs when I try to abort the read operation in between before the timeout.


The ObjectDisposedException (which you still haven't posted a full traceback for) indicates that under the hood it is an async API.

Yes I had put a print in the exception handler. The problem is I get that print and get "Keyboard Interrupt" as the error message but still I am getting the ObjectDisposedException.

This is the message which i get when i try to print the error using
except Exception, e:
    print "error   :  " + e.message:

Output:
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
File "C:\Program Files\IronPython 2.0 Beta4\test.py", line 21, in C:\Program Files\IronPython 2.0 Beta4\test.py
KeyboardInterrupt
>>>

This shows that your exception handling block is being used. I guess the problem is that you are closing the port after interrupting it whilst there is still an active callback with data waiting to come in. When this happens it tries to use a disposed object.

I don't think interrupting the 'ReadTo' with a KeyboardInterrupt is a very good pattern - but I'm not sure what the correct pattern is for this case. Maybe experiment with some of the async APIs (there are examples on the MSDN docs) so that you can explicitly provide for an interruption if you need it.

Michael Foord




Thanks & regards,
Sheetal Pawar
*
*


*Michael Foord <[EMAIL PROTECTED]>*
Sent by: [EMAIL PROTECTED]

11/19/2008 08:49 PM
Please respond to
Discussion of IronPython <[email protected]>


        
To
        Discussion of IronPython <[email protected]>
cc
        
Subject
Re: [IronPython] Serial Port Commn: unhandled ObjectDisposedException though exception handler provided



        





Well... I know nothing about these APIs and am guessing, but the
traceback is in an AsyncCallback happening on another thread - so an
exception handler in this thread isn't going to catch it.

Why do you close the port before opening it?

ReadTo doesn't look like an Async API [1]. You snipped the top line of
the traceback which includes any mention of the line number where it was
raised. Have you put a print in to confirm that your exception handling
block is never entered?

Michael

http://msdn.microsoft.com/en-us/library/system.io.ports.serialport.readto.aspx

[EMAIL PROTECTED] wrote:
>
>
> Hi,
>
> I am writing a serial port communication application using Iron
> Python. Following is a sample code:
>
>          try:
>
>             BaudRate = 9600
> DataBits = 8 > > #create a serial port instance for the desired port as specified
>             serialPort = System.IO.Ports.SerialPort( "COM1")
> > serialPort.BaudRate = BaudRate
>
>             serialPort.DataBits = DataBits
>
> #open the port
>             serialPort.Close()
>             serialPort.Open()
>
>             serialPort.ReadTimeout = 30000
>
>             returnValue = serialPort.ReadTo( "xx" )
>         except:
>             print "error"
>             returnValue = ""
>
>         serialPort.Close()
>         serialPort.Dispose()
>
> >
> Here if i abort my application using Cntrl + C on the iron python
> console, then i get ObjectDisposedException unhandled though i have
> provided an exception handler.
>
> I tried to abort the application while it was waiting for some data to
> be read and the timeout had not occured. The application exits and I
> get the exception after it exits.
>
> Stack Trace:
>
>    at Microsoft.Win32.Win32Native.SetEvent(SafeWaitHandle handle)
>    at System.Threading.EventWaitHandle.Set()
>    at System.IO.Ports.SerialStream.AsyncFSCallback(UInt32 errorCode,
> UInt32 numBytes, NativeOverlapped* pOverlapped)
>    at
> System.Threading._IOCompletionCallback.PerformIOCompletionCallback(UInt32
> errorCode, UInt32 numBytes, NativeOverlapped* pOVERLAP)
>
> Please let me know what can be the issue.
>
> Thanks & regards,
> Sheetal
>
>
>
>
>
>
> ______________________________________________________________________
> ------------------------------------------------------------------------
>
> _______________________________________________
> Users mailing list
> [email protected]
> http://lists.ironpython.com/listinfo.cgi/users-ironpython.com
>

--
http://www.ironpythoninaction.com/

_______________________________________________
Users mailing list
[email protected]
http://lists.ironpython.com/listinfo.cgi/users-ironpython.com

______________________________________________________________________


______________________________________________________________________
------------------------------------------------------------------------

_______________________________________________
Users mailing list
[email protected]
http://lists.ironpython.com/listinfo.cgi/users-ironpython.com


--
http://www.ironpythoninaction.com/

_______________________________________________
Users mailing list
[email protected]
http://lists.ironpython.com/listinfo.cgi/users-ironpython.com

Reply via email to