Example #1
0
        private void btnReadDiscretes_Click(object sender, EventArgs e)
        {
            try
            {
                ushort index  = 0;
                bool[] result = objFatekCommunication.ReadDiscretes(1, 16, MemoryType.Y, index, DataType.BOOL);

                foreach (bool item in result)
                {
                    txtResult.AppendText(string.Format("[ Y{0}={1} ], ", index++, item));
                }
                txtResult.AppendText("\r\n" + Environment.NewLine);
                txtResult.ScrollToCaret();
            }
            catch (Exception ex)
            {
                MessageBox.Show(this, ex.Message, "ERROR", MessageBoxButtons.OK, MessageBoxIcon.Error);
            }
        }
        private void SendPackage(FatekCommunication modbus, Device dv, DataBlock db)
        {
            try
            {
                SendDone.WaitOne(-1);
                DataType   dataType   = (DataType)Enum.Parse(typeof(DataType), db.DataType);
                MemoryType memoryType = (MemoryType)Enum.Parse(typeof(MemoryType), db.MemoryType);

                switch (db.DataType)
                {
                case "BOOL":
                    bool[] BitRs = null;
                    switch (db.TypeOfRead)
                    {
                    case "ReadCoilStatus":
                        BitRs = modbus.ReadDiscretes((byte)dv.SlaveId, db.Length, memoryType, db.StartAddress, dataType);

                        break;

                    case "ReadInputStatus":
                        //     bitArys = modbus.ReadInputStatus((byte)dv.SlaveId, $"{db.StartAddress}",
                        //db.Length);
                        break;

                    default:
                        break;
                    }

                    if (BitRs.Length > db.Tags.Count)
                    {
                        return;
                    }
                    for (var j = 0; j < db.Tags.Count; j++)
                    {
                        db.Tags[j].Value        = BitRs[j];
                        db.Tags[j].Checked      = BitRs[j];
                        db.Tags[j].Enabled      = BitRs[j];
                        db.Tags[j].Visible      = BitRs[j];
                        db.Tags[j].ValueSelect1 = BitRs[j];
                        db.Tags[j].ValueSelect2 = BitRs[j];
                        db.Tags[j].Timestamp    = DateTime.Now;
                    }
                    break;

                case "INT":
                case "DINT":
                case "WORD":
                case "DWORD":
                case "REAL":
                    object[] wdArys = null;
                    switch (db.TypeOfRead)
                    {
                    case "ReadHoldingRegisters":
                        wdArys = modbus.ReadRegisters((byte)dv.SlaveId, db.Length, memoryType, db.StartAddress, dataType);

                        break;

                    case "ReadInputRegisters":
                        //wdArys = modbus.ReadInputRegisters((byte)dv.SlaveId, $"{db.StartAddress}", db.Length);

                        break;

                    default:
                        break;
                    }

                    if (wdArys.Length > db.Tags.Count)
                    {
                        return;
                    }

                    for (var j = 0; j < wdArys.Length; j++)
                    {
                        db.Tags[j].Value     = wdArys[j];
                        db.Tags[j].Timestamp = DateTime.Now;
                    }
                    break;
                }
            }
            catch (Exception ex)
            {
                IsConnected = false;
                var err = new HMIException.ScadaException(this.GetType().Name + "   XFATEK.SendPackage", ex.Message);
            }
        }