private void myOPCItems_Fill(List <VarItem> OPCVariables, OPCItems items) { for (int i = 0; i < OPCVariables.Count; i++) { VarItem myVarItem = OPCVariables[i]; OPCItem myItem = items.AddItem(myVarItem.name, myVarItem.array_index); // Check if the OPC variable consist in OPC server's configuration !!! if (myItem == null) { this.myLog.LogAlert(AlertType.Error, this.id.ToString(), this.GetType().ToString(), "myOPCItems_Fill()", "Exception: unknown variable '" + myVarItem.name + "' !!" , "system"); OPCVariables.Remove(OPCVariables[i]); } else { OPCVariables[i].servHandle = myItem.ServerHandle; this.myLog.LogAlert(AlertType.System, this.id.ToString(), this.GetType().ToString(), "myOPCItems_Fill()", this.OPCServerName + ", myVarItem (name; arr_idx) = " + myVarItem.name.ToString() + ", " + myVarItem.array_index.ToString() + ", myItem.ServerHandle=" + myItem.ServerHandle.ToString() + ", myItem.Quality=" + myItem.Quality.ToString() + ", myItem.ItemID=" + myItem.ItemID.ToString() // + ", myItem.Value=" + myItem.Value.ToString() , "system" ); } } }
private void OPCGroup_DataChange(int TransactionID, int NumItems, ref Array ClientHandles, ref Array ItemValues, ref Array Qualities, ref Array TimeStamps) { for (int i = 1; i <= NumItems; i++) { int varIndex = Convert.ToInt32(ClientHandles.GetValue(i)); VarItem currentItem = this.OPCVariables.FirstOrDefault(p => p.array_index.Equals(varIndex)); if (currentItem != null && currentItem.type == OPCControlType.Button) { VarItem myVarItem = currentItem; bool myBoolValue = Convert.ToBoolean(ItemValues.GetValue(i)); if (myVarItem.bool_value != myBoolValue) { myVarItem.old_bool_value = myVarItem.bool_value; myVarItem.bool_value = myBoolValue; if (myVarItem.bool_value == true) { VarEventArgs myArgs = new VarEventArgs(); myArgs.varIndex = myVarItem.array_index; ////int buttonIndex = this.OPCVariables.IndexOf(currentItem); ////VarItem myVarSignalItem = this.OPCVariables[buttonIndex + 1]; // this maqnaged by the line itself !!! //bool bntSignal = myOPCGroup.OPCItems.GetOPCItem((int)myVarSignalItem.servHandle).Value; //myOPCGroup.OPCItems.GetOPCItem((int)myVarSignalItem.servHandle).Write(!bntSignal); this.ImpDataChanged(this, myArgs); } } } } }
public void WriteVariableValue(VarItem varItem, bool value) { try { if (this.OPCServerName.Contains("Simulation")) { int servHandle = varItem.servHandle; OPCItem opc_item_s = this.myOPCGroup.OPCItems.GetOPCItem(servHandle); opc_item_s.Write(value); } else { this.eXX_DO_Write(varItem.MXIO_ipAddr, 502, 300, Convert.ToByte(varItem.MXIO_channel), Convert.ToUInt32(value), varItem.MXIO_moduleType); } } catch (Exception ex) { this.myLog.LogAlert(AlertType.Error, this.id.ToString(), this.GetType().ToString(), "WriteVariableValue()", ex.Message, "system"); } }