Ya está!!!!!!!!!!!
Era el tema del deep copy que comentaba el compañero vladek.
al final he hecho una función para asignar, tal que así:
Public Function copyCam(ByVal hmi2cam As Boolean) As Boolean
For i As Integer = 0 To MAX_CAM
If hmi2cam Then
Cam(i).Name = HmiCam(i).Name
Cam(i).Index = HmiCam(i).Index
Cam(i).CamType = HmiCam(i).CamType
Cam(i).Enabled = HmiCam(i).Enabled
Cam(i).Calibrate = HmiCam(i).Calibrate
Cam(i).CalibOK = HmiCam(i).CalibOK
Cam(i).Running = HmiCam(i).Running
For j As Integer = 0 To MAX_DATA_PARAM
Cam(i).Param(j).Enabled = HmiCam(i).Param(j).Enabled
Cam(i).Param(j).Name = HmiCam(i).Param(j).Name
Cam(i).Param(j).Value = HmiCam(i).Param(j).Value
Next
For j As Integer = 0 To MAX_DATA_SET
Cam(i).Setting(j).Enabled = HmiCam(i).Setting(j).Enabled
Cam(i).Setting(j).Name = HmiCam(i).Setting(j).Name
Cam(i).Setting(j).Value = HmiCam(i).Setting(j).Value
Next
For j As Integer = 0 To MAX_DATA_WORK
Cam(i).Work(j).Enabled = HmiCam(i).Work(j).Enabled
Cam(i).Work(j).Name = HmiCam(i).Work(j).Name
Cam(i).Work(j).Value = HmiCam(i).Work(j).Value
Next
Else
HmiCam(i).Name = Cam(i).Name
HmiCam(i).Index = Cam(i).Index
HmiCam(i).CamType = Cam(i).CamType
HmiCam(i).Enabled = Cam(i).Enabled
HmiCam(i).Calibrate = Cam(i).Calibrate
HmiCam(i).CalibOK = Cam(i).CalibOK
HmiCam(i).Running = Cam(i).Running
For j As Integer = 0 To MAX_DATA_PARAM
HmiCam(i).Param(j).Enabled = Cam(i).Param(j).Enabled
HmiCam(i).Param(j).Name = Cam(i).Param(j).Name
HmiCam(i).Param(j).Value = Cam(i).Param(j).Value
Next
For j As Integer = 0 To MAX_DATA_SET
HmiCam(i).Setting(j).Enabled = Cam(i).Setting(j).Enabled
HmiCam(i).Setting(j).Name = Cam(i).Setting(j).Name
HmiCam(i).Setting(j).Value = Cam(i).Setting(j).Value
Next
For j As Integer = 0 To MAX_DATA_WORK
HmiCam(i).Work(j).Enabled = Cam(i).Work(j).Enabled
HmiCam(i).Work(j).Name = Cam(i).Work(j).Name
HmiCam(i).Work(j).Value = Cam(i).Work(j).Value
Next
End If
Next
Return True
End Function
Es un rollazo impresionante ya que ahora tengo que tener en cuenta esta función cada vez que agregue/quite miembros de la estructura.
Pero bueno, así ya está solucionado...
Era el tema del deep copy que comentaba el compañero vladek.
al final he hecho una función para asignar, tal que así:
Public Function copyCam(ByVal hmi2cam As Boolean) As Boolean
For i As Integer = 0 To MAX_CAM
If hmi2cam Then
Cam(i).Name = HmiCam(i).Name
Cam(i).Index = HmiCam(i).Index
Cam(i).CamType = HmiCam(i).CamType
Cam(i).Enabled = HmiCam(i).Enabled
Cam(i).Calibrate = HmiCam(i).Calibrate
Cam(i).CalibOK = HmiCam(i).CalibOK
Cam(i).Running = HmiCam(i).Running
For j As Integer = 0 To MAX_DATA_PARAM
Cam(i).Param(j).Enabled = HmiCam(i).Param(j).Enabled
Cam(i).Param(j).Name = HmiCam(i).Param(j).Name
Cam(i).Param(j).Value = HmiCam(i).Param(j).Value
Next
For j As Integer = 0 To MAX_DATA_SET
Cam(i).Setting(j).Enabled = HmiCam(i).Setting(j).Enabled
Cam(i).Setting(j).Name = HmiCam(i).Setting(j).Name
Cam(i).Setting(j).Value = HmiCam(i).Setting(j).Value
Next
For j As Integer = 0 To MAX_DATA_WORK
Cam(i).Work(j).Enabled = HmiCam(i).Work(j).Enabled
Cam(i).Work(j).Name = HmiCam(i).Work(j).Name
Cam(i).Work(j).Value = HmiCam(i).Work(j).Value
Next
Else
HmiCam(i).Name = Cam(i).Name
HmiCam(i).Index = Cam(i).Index
HmiCam(i).CamType = Cam(i).CamType
HmiCam(i).Enabled = Cam(i).Enabled
HmiCam(i).Calibrate = Cam(i).Calibrate
HmiCam(i).CalibOK = Cam(i).CalibOK
HmiCam(i).Running = Cam(i).Running
For j As Integer = 0 To MAX_DATA_PARAM
HmiCam(i).Param(j).Enabled = Cam(i).Param(j).Enabled
HmiCam(i).Param(j).Name = Cam(i).Param(j).Name
HmiCam(i).Param(j).Value = Cam(i).Param(j).Value
Next
For j As Integer = 0 To MAX_DATA_SET
HmiCam(i).Setting(j).Enabled = Cam(i).Setting(j).Enabled
HmiCam(i).Setting(j).Name = Cam(i).Setting(j).Name
HmiCam(i).Setting(j).Value = Cam(i).Setting(j).Value
Next
For j As Integer = 0 To MAX_DATA_WORK
HmiCam(i).Work(j).Enabled = Cam(i).Work(j).Enabled
HmiCam(i).Work(j).Name = Cam(i).Work(j).Name
HmiCam(i).Work(j).Value = Cam(i).Work(j).Value
Next
End If
Next
Return True
End Function
Es un rollazo impresionante ya que ahora tengo que tener en cuenta esta función cada vez que agregue/quite miembros de la estructura.
Pero bueno, así ya está solucionado...
