PC SDK - UIInstructionEventArgs BUGS
Dear ABB PC SDK developers
"Enable operator response to RAPID UI-instructions from a PC"
There appears to be a bug in this PC SDK functionality.
Robotware 5.13; PC SDK 5.13; MS Visual Studio 10, .NET 4.0;
The problem is identical on Virtual controller as on Real controller.
upon recieving the UIInstructionEvent event, the event args do not propogate properly to the eventhandler... ie, when I evaluate the UIInstructionEventArgs "type" a and then cast to the appropriate subtype(..say UIMessageBoxEventArgs)
...the arg properties ".MsgArray" (and others) are throwing errors!!!.
The conditions under which they throw errors relies upon the RAPID construct of the UI function from within the controller....
For example with the rapid function "UIListView"..IF, I use 3 or less "list items" it works...
CONST listitem list2{3} := [["","Item1xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"], ["","Item2xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"],
["","Item3xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"]];
BUT with more than 3 it does NOT work!!!
CONST listitem list2{4} := [["","Item1xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"], ["","Item2xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"],"], ["","Item3xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"],
["","Item4xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"]];
or with the rapid function UIMessageBox..
IF, there are any commas the PC SDK UIMessageBoxEventArgs will throw errors... or if the text strings are too long(30 chars)... it'll thow errors...
there are other cases, and I havent' checked ALL situations, but all of these scenarios DO function properly on the FLEX PENDANT... just the PC SDK's handling of the information is buggy!!
This PC SDK feature is/would be excellent for implementing a PC UI onto existing systems where exhaustive use of the Rapid UI functions are involved, and elimiates the need to restructure long standing robot code and processes....
... UNFORTUNATELY it doesn't work... CAN YOU PROVIDE fixes?... will there be fixes in later versions? WHEN?... I need this capability ASAP and have planned a project on it's functioning.(didn't plan on it not working)
Basically, the PC SDK UIInstructionEventArgs(and the classes that inherit it)
need to handle EVERYTHING that the rapid functions can. ... currently they don't
Please let me know.
UIInstructionEventArgs UIListViewEventArgs UIAlphaEntryEventArgs UIMessageBoxEventArgsJohn Wiberg2011-05-30 16:55:28
Mike Kegley
0
Comments
-
Mike,
Many thanks for information. An investigation is started. I will keep you updated.Lennart H0 -
I have been able to reproduce the UIListView bug but not the UIMessageBox bug.My test app does not throw an exception when:-A coma is included in the message array.-A string in the message array is longer than 30 chars.Can you please submit some code that will help me to reproduce the bug?Thanks!Lennart H0
-
The "comma" prolem is simply that it introduces a linefeed into the text, instead of printing the comma.The "over 30 chars" problem, was mistated... it's actually depends upon the number of array items in the message array... similiar to the uilistview, except that it starts failing after only takes 7 items... rapid manual states "55 characters, for upto 11 lines"...Below is a Rapid module that demonstrates ... the arrays are named accordingly to which ones work and which ones don't.Additionaly I found that for some of them that DO work, occasionly they'd fail....MODULE UIDebugModCONST string DONTWORK10{10} := ["This is a 75 character long line this is a 75 character long line this 1",
"this is a 75 character long line this is a 75 character long line this 2",
"this is a 75 character long line this is a 75 character long line this 3",
"this is a 75 character long line this is a 75 character long line this 4",
"this is a 75 character long line this is a 75 character long line this 5",
"this is a 75 character long line this is a 75 character long line this 6",
"this is a 75 character long line this is a 75 character long line this 7",
"this is a 75 character long line this is a 75 character long line this 8",
"this is a 75 character long line this is a 75 character long line this 9",
"this is a 75 character long line this is a 75 character long line thi 10"];
CONST string DONTWORK55_10{10} := ["This is a 55 character long line this is a 55 char 1",
"This is a 55 character long line this is a 55 char 2",
"This is a 55 character long line this is a 55 char 3",
"This is a 55 character long line this is a 55 char 4",
"This is a 55 character long line this is a 55 char 5",
"This is a 55 character long line this is a 55 char 6",
"This is a 55 character long line this is a 55 char 7",
"This is a 55 character long line this is a 55 char 8",
"This is a 55 character long line this is a 55 char 9",
"This is a 55 character long line this is a 55 char 10"];
CONST string DONTWORK55_8{8} := ["This is a 55 character long line this is a 55 char 1",
"This is a 55 character long line this is a 55 char 2",
"This is a 55 character long line this is a 55 char 3",
"This is a 55 character long line this is a 55 char 4",
"This is a 55 character long line this is a 55 char 5",
"This is a 55 character long line this is a 55 char 6",
"This is a 55 character long line this is a 55 char 7",
"This is a 55 character long line this is a 55 char 8"];
CONST string DoesWORK55_7{7} := ["This is a 55 character long line this is a 55 char 1",
"This is a 55 character long line this is a 55 char 2",
"This is a 55 character long line this is a 55 char 3",
"This is a 55 character long line this is a 55 char 4",
"This is a 55 character long line this is a 55 char 5",
"This is a 55 character long line this is a 55 char 6",
"This is a 55 character long line this is a 55 char 7"];
CONST string DoesWORK_comma55_7{7} := ["This is a 55 character long line, this is a 55 char 1",
"This is a 55 character long line, this is a 55 char 2",
"This is a 55 character long line, this is a 55 char 3",
"This is a 55 character long line, this is a 55 char 4",
"This is a 55 character long line, this is a 55 char 5",
"This is a 55 character long line, this is a 55 char 6",
"This is a 55 character long line, this is a 55 char 7"];
CONST string DONTWORK8{8} := ["This is a 75 character long line this is a 75 character long line this 1",
"this is a 75 character long line this is a 75 character long line this 2",
"this is a 75 character long line this is a 75 character long line this 3",
"this is a 75 character long line this is a 75 character long line this 4",
"this is a 75 character long line this is a 75 character long line this 5",
"this is a 75 character long line this is a 75 character long line this 6",
"this is a 75 character long line this is a 75 character long line this 7",
"this is a 75 character long line this is a 75 character long line this 8"];CONST string DoesWORK7{7} := ["This is a 75 character long line this is a 75 character long line this 1",
"this is a 75 character long line this is a 75 character long line this 2",
"this is a 75 character long line this is a 75 character long line this 3",
"this is a 75 character long line this is a 75 character long line this 4",
"this is a 75 character long line this is a 75 character long line this 5",
"this is a 75 character long line this is a 75 character long line this 6",
"this is a 75 character long line this is a 75 character long line this 7"];CONST string DoesWORK6{6} := ["This is a 75 character long line this is a 75 character long line this 1",
"this is a 75 character long line this is a 75 character long line this 2",
"this is a 75 character long line this is a 75 character long line this 3",
"this is a 75 character long line this is a 75 character long line this 4",
"this is a 75 character long line this is a 75 character long line this 5",
"this is a 75 character long line this is a 75 character long line this 6"];CONST string DoesWORK4{4} := ["This is a 75 character long line this is a 75 character long line this 1",
"this is a 75 character long line this is a 75 character long line this 2",
"this is a 75 character long line this is a 75 character long line this 3",
"this is a 75 character long line this is a 75 character long line this 4"];CONST string DoesWORK3{3} := ["This is a 75 character long line this is a 75 character long line this 1",
"this is a 75 character long line this is a 75 character long line this 2",
"this is a 75 character long line this is a 75 character long line this 3"];
CONST string DoesWORK2{2} := ["This is a 75 character long line this is a 75 character long line this 1",
"this is a 75 character long line this is a 75 character long line this 2"];
CONST string DoesWORK1{1} := ["This is a 75 character long line this is a 75 character long line this 1"];!-----------------------------------------------------
!-----------------------------------------------------
!-----------------------------------------------------
PROC UIMessageBoxDebug()
VAR btnres answer;
testAnswer UIMessageBox(Header:="UIMessageBox Test"MsgArray:=DoesWORK1DefaultBtn:=resOKIcon:=iconInfo);
testAnswer UIMessageBox(Header:="UIMessageBox Test"MsgArray:=DoesWORK2DefaultBtn:=resOKIcon:=iconInfo);
testAnswer UIMessageBox(Header:="UIMessageBox Test"MsgArray:=DoesWORK3DefaultBtn:=resOKIcon:=iconInfo);
testAnswer UIMessageBox(Header:="UIMessageBox Test"MsgArray:=DoesWORK4DefaultBtn:=resOKIcon:=iconInfo);
testAnswer UIMessageBox(Header:="UIMessageBox Test"MsgArray:=DoesWORK6DefaultBtn:=resOKIcon:=iconInfo);
testAnswer UIMessageBox(Header:="UIMessageBox Test"MsgArray:=DoesWORK55_7DefaultBtn:=resOKIcon:=iconInfo);
testAnswer UIMessageBox(Header:="UIMessageBox Test"MsgArray:=DoesWORK_comma55_7DefaultBtn:=resOKIcon:=iconInfo);
testAnswer UIMessageBox(Header:="UIMessageBox Test"MsgArray:=DoesWORK_comma55_7Buttons:= btnAbrtRtryIgnDefaultBtn:=resOKIcon:=iconInfo);
testAnswer UIMessageBox(Header:="UIMessageBox Test"MsgArray:=DoesWORK_comma55_7Buttons:= btnOKCancelDefaultBtn:=resOKIcon:=iconInfo);
testAnswer UIMessageBox(Header:="UIMessageBox Test"MsgArray:=DoesWORK_comma55_7Buttons:= btnRetryCancelDefaultBtn:=resRetryIcon:=iconInfo);
testAnswer UIMessageBox(Header:="UIMessageBox Test"MsgArray:=DoesWORK_comma55_7Buttons:= btnYesNoDefaultBtn:=resYesIcon:=iconInfo);
testAnswer UIMessageBox(Header:="UIMessageBox Test"MsgArray:=DoesWORK_comma55_7Buttons:= btnYesNoCancelDefaultBtn:=resYesIcon:=iconInfo);testAnswer UIMessageBox(Header:="UIMessageBox Test"MsgArray:=DONTWORK55_10DefaultBtn:=resOKIcon:=iconInfo);
testAnswer UIMessageBox(Header:="UIMessageBox Test"MsgArray:=DONTWORK55_8DefaultBtn:=resOKIcon:=iconInfo);
ENDPROCproc testAnswer(btnres theanswer)
tpwrite "The Answer Number was == " Num:=theanswer;
endproc
ENDMODULEMike Kegley0 -
I am running into these same problems as well. Has there been any resolution to this?
I have a project deadline in the next few weeks and this is very important to that deadline.
Thanks for the help.
0 -
I forgot to mention some other problems that I am seeing with the UI Instructions.
On the UINumEntry and UINumTune messages if the user doesn't put in a min or max value, it always comes through as a 0. That makes it impossible for me to check if the result is valid before I send it back to the robot.
Also with UINumEntry and UINumTune, the as integer boolean always comes through as false.
Here is an example of a UIMessage box with a comma in it as well as the event args in VS.
Robot:
MessageAnswer:=UIMessageBox (Header:="Header"Message:="Single, Message [2]"Buttons:=btnOKCancelIcon:=iconInfo);
VS Event Args:
MsgArray
[0] = "Single"
[1] = "Message 2"
[2] = "Message 2"
I hope that helps.
0 -
Hopefully are these bugs fixed in 5.14.01, planned to be released 2011-06-17. Please note that we do not guarantee this, priorities might change...
Lennart H0 -
Two problems are fixed in PC-SDK 5.14.01.
-UIInstruction supports now more than 4 lines of text.-Comma in UIMessageBox text is not interpreted as newline.Lennart H0
Categories
- All Categories
- 5.5K RobotStudio
- 396 UpFeed
- 18 Tutorials
- 13 RobotApps
- 297 PowerPacs
- 405 RobotStudio S4
- 1.8K Developer Tools
- 249 ScreenMaker
- 2.7K Robot Controller
- 310 IRC5
- 59 OmniCore
- 7 RCS (Realistic Controller Simulation)
- 786 RAPID Programming
- AppStudio
- 3 RobotStudio AR Viewer
- 18 Wizard Easy Programming
- 105 Collaborative Robots
- 5 Job listings