Exemple #1
0
        protected void Request(RtuCommand cmd, byte varAddr)
        {
            byte[]   obuffer = new byte[255];
            byte[]   d       = new byte[1];
            int      len     = 0;
            BitArray bits    = null;

            Connect();
            SendCommand(cmd, varAddr);
            len = _socket.Receive(obuffer);
            _socket.Close();
            if (cmd == RtuCommand.READ_VALUE)
            {
                d[0] = obuffer[10];
                bits = new BitArray(d);
                for (int i = 0; i < bits.Length; i++)
                {
                    _DOValue[i] = bits.Get(i);
                }
            }
            else
            {
                d[0] = obuffer[0];
                bits = new BitArray(d);
            }
        }
Exemple #2
0
        protected void SendCommand(RtuCommand cmd, byte varAddr)
        {
            byte[] cmdBuf = new byte[12];
            //cmdBuf.SetValue(0x00, 0);
            for (int i = 0; i < 5; i++)
            {
                cmdBuf[i] = 0;
            }

            switch ((RtuCommand)cmd)
            {
            case RtuCommand.READ_VALUE:
                cmdBuf[5]  = 6;
                cmdBuf[6]  = _dest;
                cmdBuf[7]  = 1;
                cmdBuf[8]  = _DOAddrLow;
                cmdBuf[9]  = 0x70;
                cmdBuf[10] = 0;
                cmdBuf[11] = 16;
                break;

            case RtuCommand.OPEN_SWITCH:
                cmdBuf[5]  = 6;
                cmdBuf[6]  = _dest;
                cmdBuf[7]  = 5;
                cmdBuf[8]  = _DOAddrLow;
                cmdBuf[9]  = Convert.ToByte(varAddr - 1);
                cmdBuf[10] = 0;
                cmdBuf[11] = 0;
                break;

            case RtuCommand.CLOSE_SWITCH:
                cmdBuf[5]  = 6;
                cmdBuf[6]  = _dest;
                cmdBuf[7]  = 5;
                cmdBuf[8]  = _DOAddrLow;
                cmdBuf[9]  = Convert.ToByte(varAddr - 1);
                cmdBuf[10] = 0xFF;
                cmdBuf[11] = 0;
                break;
            }
            int len = 5 + cmdBuf[5] + 1;

            try
            {
                _socket.Send(cmdBuf, len, SocketFlags.None);
            }
            catch (Exception ex)
            {
                WriteLog("RTU  SendCommand:" + ex.Message);
                throw new Exception(ex.Message);
            }
        }
Exemple #3
0
        protected void SendCommand(RtuCommand cmd, byte varAddr)
        {
            byte[] cmdBuf = new byte[12];
            //cmdBuf.SetValue(0x00, 0);
            for (int i = 0; i < 5; i++) cmdBuf[i] = 0;

            switch ((RtuCommand)cmd)
            {
                case RtuCommand.READ_VALUE:
                     cmdBuf[5] = 6;
                     cmdBuf[6] = _dest;
                     cmdBuf[7] = 1;
                     cmdBuf[8] = _DOAddrLow;
                     cmdBuf[9] = 0x70;
                     cmdBuf[10] = 0;
                     cmdBuf[11] = 16;
                     break;
                case RtuCommand.OPEN_SWITCH:
                     cmdBuf[5] = 6;
                     cmdBuf[6] = _dest;
                     cmdBuf[7] = 5;
                     cmdBuf[8] = _DOAddrLow;
                     cmdBuf[9] = Convert.ToByte(varAddr - 1);
                     cmdBuf[10] = 0;
                     cmdBuf[11] = 0;
                     break;
                case RtuCommand.CLOSE_SWITCH:
                     cmdBuf[5] = 6;
                     cmdBuf[6] = _dest;
                     cmdBuf[7] = 5;
                     cmdBuf[8] = _DOAddrLow;
                     cmdBuf[9] = Convert.ToByte(varAddr - 1);
                     cmdBuf[10] = 0xFF;
                     cmdBuf[11] = 0;
                     break;
            }
            int len = 5 + cmdBuf[5] + 1;

            try
            {
                _socket.Send(cmdBuf, len, SocketFlags.None);
            }
            catch (Exception ex)
            {
                WriteLog("RTU  SendCommand:" + ex.Message);
                throw new Exception(ex.Message);
            }
        }
Exemple #4
0
        protected void Request(RtuCommand cmd, byte varAddr)
        {
            byte[] obuffer = new byte[255];
            byte[] d = new byte[1];
            string strError = "";
            int len = 0;
            BitArray bits = null;
            //============================================
            //���ý��ܳ�ʱʱ��Ϊ2��͵�ַ����
            Socket socket = new Socket(AddressFamily.InterNetwork, SocketType.Dgram, ProtocolType.Udp);
            socket.SetSocketOption(SocketOptionLevel.Socket, SocketOptionName.ReceiveTimeout, 100);
            socket.SetSocketOption(SocketOptionLevel.Socket, SocketOptionName.ReuseAddress, 1);
            IPEndPoint epRemote = new IPEndPoint(IPAddress.Parse(IP), Port);

            if (!DoPingIPStatus(IP)) return;

            try
            {
                // ��������
                socket.Connect(epRemote);
            }
            catch (Exception ex)
            {
                strError = ex.Message;//throw new Exception();
                return;
            }
            //============================================
            byte[] cmdBuf = new byte[12];
            //cmdBuf.SetValue(0x00, 0);
            for (int i = 0; i < 5; i++) cmdBuf[i] = 0;

            switch ((RtuCommand)cmd)
            {
                case RtuCommand.READ_VALUE:
                    cmdBuf[5] = 6;
                    cmdBuf[6] = _dest;
                    cmdBuf[7] = 1;
                    cmdBuf[8] = _DOAddrLow;
                    cmdBuf[9] = 0x70;
                    cmdBuf[10] = 0;
                    cmdBuf[11] = 16;
                    break;
                case RtuCommand.OPEN_SWITCH:
                    cmdBuf[5] = 6;
                    cmdBuf[6] = _dest;
                    cmdBuf[7] = 5;
                    cmdBuf[8] = _DOAddrLow;
                    cmdBuf[9] = Convert.ToByte(varAddr - 1);
                    cmdBuf[10] = 0;
                    cmdBuf[11] = 0;
                    break;
                case RtuCommand.CLOSE_SWITCH:
                    cmdBuf[5] = 6;
                    cmdBuf[6] = _dest;
                    cmdBuf[7] = 5;
                    cmdBuf[8] = _DOAddrLow;
                    cmdBuf[9] = Convert.ToByte(varAddr - 1);
                    cmdBuf[10] = 0xFF;
                    cmdBuf[11] = 0;
                    break;
            }
            len = 5 + cmdBuf[5] + 1;
            //================================================
            try
            {
               socket.Send(cmdBuf, len, SocketFlags.None);
               len = socket.Receive(obuffer);
               socket.Close();
            }
            catch (Exception ex)
            {
                return;
                //
            }
            if (cmd == RtuCommand.READ_VALUE)
            {
                d[0] = obuffer[10];
                bits = new BitArray(d);
                for (int i = 0; i < bits.Length; i++)
                {
                    _DOValue[i] = bits.Get(i);
                }
            }
            else
            {
                d[0] = obuffer[0];
                bits = new BitArray(d);
            }
        }
Exemple #5
0
 protected void Request(RtuCommand cmd, byte varAddr)
 {
     byte[] obuffer = new byte[255];
     byte[] d = new byte[1];
     int len = 0;
     BitArray bits = null;
     Connect();
     SendCommand(cmd, varAddr);
     len = _socket.Receive(obuffer);
     _socket.Close();
     if (cmd == RtuCommand.READ_VALUE)
     {
         d[0] = obuffer[10];
         bits = new BitArray(d);
         for (int i = 0; i < bits.Length; i++)
         {
             _DOValue[i] = bits.Get(i);
         }
     }
     else
     {
         d[0] = obuffer[0];
         bits = new BitArray(d);
     }
 }
Exemple #6
0
        protected void Request(RtuCommand cmd, byte varAddr)
        {
            byte[]   obuffer  = new byte[255];
            byte[]   d        = new byte[1];
            string   strError = "";
            int      len      = 0;
            BitArray bits     = null;
            //============================================
            //设置接受超时时间为2秒和地址重用
            Socket socket = new Socket(AddressFamily.InterNetwork, SocketType.Dgram, ProtocolType.Udp);

            socket.SetSocketOption(SocketOptionLevel.Socket, SocketOptionName.ReceiveTimeout, 100);
            socket.SetSocketOption(SocketOptionLevel.Socket, SocketOptionName.ReuseAddress, 1);
            IPEndPoint epRemote = new IPEndPoint(IPAddress.Parse(IP), Port);

            if (!DoPingIPStatus(IP))
            {
                return;
            }

            try
            {
                // 建立连接
                socket.Connect(epRemote);
            }
            catch (Exception ex)
            {
                strError = ex.Message;//throw new Exception();
                return;
            }
            //============================================
            byte[] cmdBuf = new byte[12];
            //cmdBuf.SetValue(0x00, 0);
            for (int i = 0; i < 5; i++)
            {
                cmdBuf[i] = 0;
            }

            switch ((RtuCommand)cmd)
            {
            case RtuCommand.READ_VALUE:
                cmdBuf[5]  = 6;
                cmdBuf[6]  = _dest;
                cmdBuf[7]  = 1;
                cmdBuf[8]  = _DOAddrLow;
                cmdBuf[9]  = 0x70;
                cmdBuf[10] = 0;
                cmdBuf[11] = 16;
                break;

            case RtuCommand.OPEN_SWITCH:
                cmdBuf[5]  = 6;
                cmdBuf[6]  = _dest;
                cmdBuf[7]  = 5;
                cmdBuf[8]  = _DOAddrLow;
                cmdBuf[9]  = Convert.ToByte(varAddr - 1);
                cmdBuf[10] = 0;
                cmdBuf[11] = 0;
                break;

            case RtuCommand.CLOSE_SWITCH:
                cmdBuf[5]  = 6;
                cmdBuf[6]  = _dest;
                cmdBuf[7]  = 5;
                cmdBuf[8]  = _DOAddrLow;
                cmdBuf[9]  = Convert.ToByte(varAddr - 1);
                cmdBuf[10] = 0xFF;
                cmdBuf[11] = 0;
                break;
            }
            len = 5 + cmdBuf[5] + 1;
            //================================================
            try
            {
                socket.Send(cmdBuf, len, SocketFlags.None);
                len = socket.Receive(obuffer);
                socket.Close();
            }
            catch (Exception ex)
            {
                return;
                //
            }
            if (cmd == RtuCommand.READ_VALUE)
            {
                d[0] = obuffer[10];
                bits = new BitArray(d);
                for (int i = 0; i < bits.Length; i++)
                {
                    _DOValue[i] = bits.Get(i);
                }
            }
            else
            {
                d[0] = obuffer[0];
                bits = new BitArray(d);
            }
        }