RapidData "hidden GeneralException" on FP SDK 5.14

Hi,
I have found a “hidden ABB.Robotics.GeneralException” by console connection to controller when I try to get a RapidData that is not present in a specific system module. I need to know if this RapidData is present to do some things or if not present to do other…

If RapidData is present there aren’t “hidden exception” and “[Fp]: …” message from console.

now a piece of my code:


Task tasks = controller.Rapid.GetTasks();
try
{
Trace.WriteLine(string.Format(“DataController() → getting RapidData _EFdo”));

RapidData _EFdo = tasks[0].GetRapidData(“SM_CONF”, “EFDoButtons”);
//“SM_CONF” is my system module and always is present, “EFDoButtons” if present is a CONS string

if(_EFdo != null)
{
// do some things…
}
else
{
// do other things…
}
}
catch(ArgumentNullException ex) //as wrote on FP SDK about working with RapidData in “Using the FlexPendant SDK - Using the Controller API - Rapid domain
{
Trace.Fail(string.Format("DataController() Error: → RapidData EFDoButtons is not present in SM_CONF " + ex.Message));
}

I tryed also with “ABB.Robotics.GeneralException” instead of “ArgumentNullException” in catch statement but on HyperTeminal always I can read this message from FP:

[fpsdk]: DataController() → getting RapidData _EFdo
[fp]: -------------------------------------------
We have a hidden exception:
ExceptionType: ABB.Robotics.GeneralException
Caught at GetRapidData2 in ABB.Robotics.Controllers/Rapid.cs
Message: SYS_CTRL_E_NO_SUCH_SYMBOL: RAPID symbol was not found.

Error Code: (0xc0049000)

SYS_CTRL_E_NO_SUCH_SYMBOL: RAPID symbol was not found.
ERROR: rapid.c[1954]: org_code: -1162 new_code: 0xc0049000; RobSymbolSearchImpl.
cpp[160]; AdaptRapidCommon.h[1929]; AdaptRapid.cpp[996]; ABB.Robotics.GeneralEx
ception at GetRobSymbolDynamic in Dcl.rapid/AdaptRapid.cs
at ABB.Robotics.Dcl.ExceptionHelp.GenerateExceptionBasedOnHResult(String objS
tr, String method, ReturnCodeRobAPI hRes, String info)
at ABB.Robotics.Dcl.ExceptionHelp.GenerateException(String objStr, String met
hod, ReturnCodeRobAPI hRes, ReturnCodeRobAPI expectedErrors, String lastErrorD
esc, String additionalinfo)
at ABB.Robotics.Dcl.ExceptionHelp.GenerateException(String objStr, String met
hod, ReturnCodeRobAPI hRes, ReturnCodeRobAPI expectedErrors, String lastErrorD
esc)
at ABB.Robotics.Dcl.Rapid.AdaptRapid.GetRobSymbolDynamic(Int32 rapidClient, S
tring symbolUrl, RobSymbolDynamic& symData)
at ABB.Robotics.Dcl.Rapid.Rapid.GetRobSymbolDynamic(String Url)
at ABB.Robotics.Controllers.RapidDomain.Rapid.GetRapidData2(Rapid dclRapid, S
tring blockUrl, String rapidData)
at ABB.Robotics.Controllers.RapidDomain.Task.GetRapidData(String rapidData)

at EasyFlex.DataController..ctor(EasyFlex _gui)
at EasyFlex.EasyFlex.ABB.Robotics.Tps.Taf.ITpsViewSetup.Install(Object sender
, Object data)
at ABB.Robotics.Tps.SDK.Base.SDKViewWrapper.Install(Object tafSite, Object in
itData)
at ABB.Robotics.SDK.Views.EasyFlex.Install(Object tafSite, Object initData)
at ABB.Robotics.WinCore.TPAppFwk.Runtime.TacController.SetupItem(Object& item
, Object initData)
at ABB.Robotics.WinCore.TPAppFwk.Runtime.TafMaster.CreateItem(TacLaunchInfo&
launchInfo, TacContext& context, Boolean setAsActiveCtrl, Boolean sysItem)
at ABB.Robotics.WinCore.TPAppFwk.Runtime.TafMaster.ABB.Robotics.WinCore.TPApp
Fwk.Runtime.ITafMaster.CreateItem(TacLaunchInfo& launchInfo, TacContainerContext
& containerContext)
at ABB.Robotics.WinCore.TPAppFwk.SiteServices.ABB.Robotics.WinCore.TPAppFwk.B
ase.ITafSite.LaunchTPAppControl(TacLaunchInfo& launchInfo, TacContainerContext&
containerContext)
at ABB.Robotics.Tps.Controls.TpsABBMenu.ListView_ItemActivated(Object sender,
EventArgs e)
at ABB.Robotics.Tps.Windows.Forms.ListView.OnItemActivate(EventArgs e)
at ABB.Robotics.Tps.Windows.Forms.ListView.OnMouseUp(MouseEventArgs e)
at System.Windows.Forms.Control.WnProc(WM wm, Int32 wParam, Int32 lParam)
at System.Windows.Forms.ContainerControl.WnProc(WM wm, Int32 wParam, Int32 lP
aram)
at System.Windows.Forms.Control._InternalWnProc(WM wm, Int32 wParam, Int32 lP
aram)
at Microsoft.AGL.Forms.EVL.EnterMainLoop(IntPtr hwnMain)
at System.Windows.Forms.Application.Run(Form fm)
at ABB.Robotics.WinCore.TPAppFwk.MainFrame.Start()
at ABB.Robotics.WinCore.TPAppFwk.TafApp.Start()
at ABB.Robotics.WinCore.TPAppFwk.TafApp.Main(String args)

END (at 615684)

[fpsdk]: DataController() → …
[fpsdk]: DataController() → …
[fpsdk]: DataController() → …

  • Is normal this message also if my get statement is in try/catch block?? where is wrong?
  • This hidden exception ban create some problems for the proper execution of the application? (yes, I’m always verify if my variabile if “null” before using it).

Regards
Emanuele

Sorry that I don’t have the time to make a proper test+answer. So I can’t answer why you get the error you do.

Now as a workaround you can check if the data is there using SearchRapidSymbol before using it. Since you know where its location, name and type it shouldn’t even be a drain on any resources.

But why do you use the tasks instead of direct access? Is it a multimove system?

For the lurkers; direct access is like this:
RapidData rd = aController.Rapid.GetRapidData(“T_ROB1”, “USER”, “reg1”);

Hi John,
tank you for you answer and suggestion. Don’t worry if you haven’t time to try it, mee too and with too many things to do.. :stuck_out_tongue_winking_eye:
About your questions:
The system is not a multi move, I probably made ?_ misuse of “tasks[..].GetRapidData(..)” method.
So I’ll try to use first “SearchRapidSymbol” and after “…Rapid.GetRapidData(..)” to see the other any “new” messange by console connection with controller, and I’ll get to you a right feedback about it.

Tank you very much
regards Emanuele

Hello,
I have tried with direct access “acontroller.Rapid.GetRapidData(“T_ROB1”, “MyModule”, “MyVar”);” but the problem it’s same..