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); } }
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); } }
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); } }
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); } }
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); } }