|
#1
|
|||
|
|||
Hi Farshizzo,
Thank you for all the detailed information! I still have some questions though: Quote:
Code:
std::list< osg::ref_ptr< MySensor > > m_sensors; Quote:
Code:
Traceback (most recent call last): File "<string>", line 11, in <module> File "C:\dat\C\projects\Vizard dll\testCustomNode.py", line 58, in <module> stim.setStimSpec('GDcl') File "DNstimuli.py", line 45, in setStimSpec self.command(1,stimSpec) File "C:\Program Files\WorldViz\Vizard4\python\viz.py", line 6837, in command return _ipcSend(_VIZ_CMDEXTNODE,self.id,command,mesg,x,y,z,w) TypeError: command must be an int If setup a debug breakpoint on this first call after the raised exception (self.command(1,stimSpec)), and try to step into it, i get this output: Code:
C:\Program Files\WorldViz\Vizard4\python\vizbdb.py:410: RuntimeWarning: tp_compare didn't return -1 or -2 for exception if id in ids: Traceback (most recent call last): File "<string>", line 11, in <module> File "C:\dat\C\projects\Vizard dll\testCustomNode.py", line 58, in <module> stim.setStimSpec('GDcl') File "DNstimuli.py", line 45, in setStimSpec self.command(1,stimSpec) File "DNstimuli.py", line 45, in setStimSpec self.command(1,stimSpec) File "C:\Program Files\WorldViz\Vizard4\python\vizbdb.py", line 254, in trace_debug self.wait_for_input(frame,None) File "C:\Program Files\WorldViz\Vizard4\python\vizbdb.py", line 436, in wait_for_input id,data = self.wait_for_message(_INPUT_MESSAGES) File "C:\Program Files\WorldViz\Vizard4\python\vizbdb.py", line 410, in wait_for_message if id in ids: RuntimeError: testing Other things I tried: - doing data.set( PYTHON_RETURN_OBJECT, PYTHON_INT(-1)); or data.set(PYTHON_RETURN_OBJECT, NULL); after the call to PyErr_SetString did not help (inspired by some reading of how error states should be communicated from Python). - try/except around the call where the exception is raised. This didn't do anything, as expected when the exception goes unnoticed. What am I missing? Thanks for your help! |
#2
|
|||
|
|||
Quote:
Quote:
|
#3
|
|||
|
|||
Quote:
When try to send an exception from my python plugin as follows Code:
PyErr_SetString(PyExc_RuntimeError, "errorstring"); data.set( PYTHON_RETURN_OBJECT, NULL); I always get a TypeError instead of the exception i'm trying to communicate. The stacktrace always ends like this: Code:
File "C:\Program Files (x86)\WorldViz\Vizard4\python\viz.py", line 7381, in command return _ipcSend(_VIZ_CMDEXTNODE,self.id,command,mesg,x,y,z,w) TypeError: command must be an int I'm not sure what this typeerror is referring to, as my command is correct, it works without error when not trying to return an exception. Am I doing something wrong? Best and thanks, Dee |
#4
|
|||
|
|||
Can you post the full traceback? It looks like you are using passing an invalid parameter to the command method. As the traceback says, the first argument must be an int, and you are most likely passing some other type.
|
|
|