Esempio n. 1
0
        /// <summary>
        ///按位获取输入信号
        /// </summary>
        /// <param name="nIndex"></param>
        /// <returns></returns>
        public override bool ReadIoInBit(int nIndex)
        {
            if (!m_bOpen)
            {
                return(false);
            }
            int    nAxisIndex   = (nIndex & 0xff00) >> 8;
            int    nBitIndex    = nIndex & 0x00ff;
            byte   slaveAddress = (byte)nAxisIndex;
            ushort coilAddress  = (ushort)(nBitIndex + 16);
            bool   brtn         = false;

            try
            {
                lock (_syncRoot)
                {
                    brtn = _master.ReadCoils(slaveAddress, coilAddress, 1)[0];
                }
                return(brtn);
            }
            catch (Exception ex)
            {
                //if (_serialPort.IsOpen)
                //    _serialPort.Close();
                //if (!_serialPort.IsOpen)
                //    _serialPort.Open();
                //_master.Dispose();
                //_master = ModbusSerialMaster.CreateRtu(_serialPort);
                _logger.Warn(ex.Message);
                return(false);
            }
        }
 public void NModbusUsbRtuMaster_ReadTimeout()
 {
     using (FtdUsbPort port = ModbusMasterFixture.CreateAndOpenUsbPort(ModbusMasterFixture.DefaultMasterUsbPortId))
     {
         IModbusSerialMaster master = ModbusSerialMaster.CreateRtu(port);
         master.ReadCoils(100, 1, 1);
     }
 }
Esempio n. 3
0
 public void NModbusAsciiMaster_ReadTimeout()
 {
     using (SerialPort port = ModbusMasterFixture.CreateAndOpenSerialPort(ModbusMasterFixture.DefaultMasterSerialPortName))
     {
         IModbusSerialMaster master = ModbusSerialMaster.CreateAscii(port);
         master.ReadCoils(100, 1, 1);
     }
 }
    public void NModbusAsciiMaster_ReadTimeout()
    {
        SerialPort port = ModbusMasterFixture.CreateAndOpenSerialPort(ModbusMasterFixture.DefaultMasterSerialPortName);

        using IModbusSerialMaster master = ModbusSerialMaster.CreateAscii(port);
        master.Transport.ReadTimeout     = master.Transport.WriteTimeout = 1000;
        Assert.Throws <TimeoutException>(() => master.ReadCoils(100, 1, 1));
    }
Esempio n. 5
0
        public void NModbusAsciiMaster_ReadTimeout()
        {
            SerialPort port = ModbusMasterFixture.CreateAndOpenSerialPort(ModbusMasterFixture.DefaultMasterSerialPortName);

            using (IModbusSerialMaster master = ModbusSerialMaster.CreateAscii(port))
            {
                master.Transport.ReadTimeout = master.Transport.WriteTimeout = 1000;
                master.ReadCoils(100, 1, 1);
            }
        }
Esempio n. 6
0
 public bool[] ReadCoils(byte slaveAddress, ushort startAddress, ushort numberOfPoints)
 {
     Log.Debug("GET ReadCoils: SlaveAddress {0}, StartAddress {1}, NumberOfPoints {2}", slaveAddress, startAddress, numberOfPoints);
     try
     {
         var response = _master.ReadCoils(slaveAddress, startAddress, numberOfPoints);
         Log.Debug("RESPONSE ReadCoils: {0}", String.Join(",", response));
         return(response);
     }
     catch (Exception ex)
     {
         Log.Error(ex, "ERROR: ReadCoils: SlaveAddress {0}, StartAddress {1}, NumberOfPoints {2} - MSG: {3}", slaveAddress, startAddress, numberOfPoints, ex.Message);
         throw ex;
     }
 }
        public void NModbusSerialRtuSlave_BonusCharacter_VerifyTimeout()
        {
            using (SerialPort masterPort = ModbusMasterFixture.CreateAndOpenSerialPort(ModbusMasterFixture.DefaultMasterSerialPortName))
                using (SerialPort slavePort = ModbusMasterFixture.CreateAndOpenSerialPort(ModbusMasterFixture.DefaultSlaveSerialPortName))
                {
                    IModbusSerialMaster master = ModbusSerialMaster.CreateRtu(masterPort);

                    ModbusSerialSlave slave = ModbusSerialSlave.CreateRtu(1, slavePort);
                    slave.DataStore = DataStoreFactory.CreateTestDataStore();

                    Thread slaveThread = new Thread(slave.Listen);
                    slaveThread.IsBackground = true;
                    slaveThread.Start();

                    // assert successful communication
                    Assert.AreEqual(new bool[] { false, true }, master.ReadCoils(1, 1, 2));

                    // write "bonus" character
                    masterPort.Write("*");

                    // assert successful communication
                    Assert.AreEqual(new bool[] { false, true }, master.ReadCoils(1, 1, 2));
                }
        }
Esempio n. 8
0
 /// <summary>
 /// 根据从站ID和地址读线圈状态
 /// </summary>
 /// <param name="master"></param>
 /// <param name="slaveid"></param>
 /// <param name="addr"></param>
 /// <returns></returns>
 public static bool ReadValue(IModbusSerialMaster master, byte slaveid, ushort addr)
 {
     return(master.ReadCoils(slaveid, addr, 1)[0]);
 }