RobotStudio event

Implementing struct to represent RECORD [SOLVED]

Hi,
 

I'm writing a PC Application in Visual Studio 2005 and coding in VB.

 

I'm trying to implment a struct to represent a RECORD i have created in the IRC5 controller.

I have done this on the Flexpendant with no problems but I'm coding this project for a touch panel and i'm getting an unusual error for the line "Implements IRapidData".

 

My code pretty much follows the example given in the RAB PC SDK - RapidDomain (user defined data) section.

 

I've implemented the FillFromString and ToString IRapidData methods but i get these 3 errors...

 

Error 1 Structure 'LineData' must implement 'Function ToStructure() As DataNode' for interface 'ABB.Robotics.Controllers.RapidDomain.IRapidData'.

 

Error 2 Structure 'LineData' must implement 'Sub Fill(root As DataNode)' for interface 'ABB.Robotics.Controllers.RapidDomain.IRapidData'. 

 

Error 3 Structure 'LineData' must implement 'Sub Fill(value As String)' for interface 'ABB.Robotics.Controllers.RapidDomain.IRapidData'. 

I've tried writing the funtions and routines it says it requires but this just generates more errors ?????

 

Here's the code i have written...

 


Public Structure LineData
Implements IRapidData
Private data As UserDefined
Friend Sub New(ByVal rdt As RapidDataType)
data =
New UserDefined(rdt)

End Sub


Private Property ProcessData() As UserDefined
Get
Return data
End Get
Set(ByVal Value As UserDefined)
data = Value
End Set
End Property
Public Property ProdData() As String
Get
Return ProcessData.Components(0).ToString()
End Get
Set(ByVal value As String)
ProcessData.Components(0) =
New ABB.Robotics.Controllers.RapidDomain.String(value)
End Set
End Property
Public Property RollCount() As Single
Get
Dim res As Single = Convert.ToSingle(ProcessData.Components(1).ToString())
Return res
End Get
Set(ByVal value As Single)
ProcessData.Components(1).FillFromString(value.ToString())
End Set
End Property
Public Property LayerCount() As Single
Get
Dim res As Single = Convert.ToSingle(ProcessData.Components(2).ToString())
Return res
End Get
Set(ByVal value As Single)
ProcessData.Components(2).FillFromString(value.ToString())
End Set
End Property
Public Property LayerOffset() As Single
Get
Dim res As Single = Convert.ToSingle(ProcessData.Components(3).ToString())
Return res
End Get
Set(ByVal value As Single)
ProcessData.Components(3).FillFromString(value.ToString())
End Set
End Property

Public Sub FillFromString(ByVal newValue As String) Implements ABB.Robotics.Controllers.RapidDomain.IRapidData.FillFromString
ProcessData.FillFromString(newValue)
End Sub
Public Overrides Function ToString() As String Implements ABB.Robotics.Controllers.RapidDomain.IRapidData.ToString
Return ProcessData.ToString()
End Function
End StructureBigM2010-06-08 16:28:38

Comments

  • Few hours away from it and i came back refreshed and....the solution...
     

    looks like i needed to add this as well...

     


    Public
    Function ToStructure() As DataNode Implements ABB.Robotics.Controllers.RapidDomain.IRapidData.ToStructure
    Return ProcessData.ToStructure()
    End Function
    Public Sub Fill(ByVal newValue As DataNode) Implements ABB.Robotics.Controllers.RapidDomain.IRapidData.Fill
    ProcessData.Fill(newValue)
    End Sub
    Public Sub fill(ByVal newValue As String) Implements ABB.Robotics.Controllers.RapidDomain.IRapidData.Fill
    ProcessData.Fill(newValue)
    End Sub