Example #1
0
        public bool BatchRead(DeviceType type, CommandIO_Link command, out string data)
        {
            lock (_lockerSocket)
            {
                string aa;
                data = "";
                bool   ret        = false;
                byte[] bsSend     = {};
                int    recvRigLen = 30;
                int    recvErrLen = 0;
                byte[] recvBytes  = {};
                string sss;
                bsSend    = IO_LinkMasterModbusCommand.GetSendCommandBytes(type, command, ref recvRigLen).ToArray();
                recvBytes = new byte[recvRigLen];
                sss       = byteToHexStr(bsSend);

                int reSendCount = 0;
                while (true)
                {
                    reSendCount++;
                    if (reSendCount > 3)
                    {
                        break;
                    }
                    try
                    {
                        aa = byteToHexStr(bsSend);
                        _clientSocket.Send(bsSend);
                        string bb;
                        if (ReceiveData(ref recvRigLen, ref recvErrLen, out recvBytes))
                        {
                            bb  = byteToHexStr(recvBytes);
                            ret = IO_LinkMasterModbusCommand.GetReadAnalysisReceiveByte(type, command, recvBytes, out data);
                            break;
                        }
                    }
                    catch (Exception ex)
                    {
                    }
                }
                if (!ret)
                {
                    NetStatus = NetStatus.Cutoff;
                    string error = "";
                    Connect(out error);
                }
                else
                {
                    if (reSendCount == 1)
                    {
                        NetStatus = NetStatus.Good;
                    }
                    else
                    {
                        NetStatus = NetStatus.Block;
                    }
                }
                return(ret);
            }
        }
 public static List<byte> GetSendCommandBytes(DeviceType type, CommandIO_Link command, ref int recvRigLen)
 {
     List<byte> res = new List<byte> { 0x00, 0x01, 0x00, 0x00, 0x00, 0x06, 0x01, 0x03 };
     switch (command)
     {
         case CommandIO_Link.DiagnosisDataPort1 :
         case CommandIO_Link.DiagnosisDataPort2:
         case CommandIO_Link.DiagnosisDataPort3:
         case CommandIO_Link.DiagnosisDataPort4:
         case CommandIO_Link.DiagnosisDataPort5:
         case CommandIO_Link.DiagnosisDataPort6:
         case CommandIO_Link.DiagnosisDataPort7:
         case CommandIO_Link.DiagnosisDataPort8:
             res.AddRange(new byte[] { (byte)((int)command / 256), (byte)((int)command % 256), (byte)((int)234/ 256), (byte)((int)234 % 256) });
             break;
         case CommandIO_Link.PDIPort1:
         case CommandIO_Link.PDIPort2:
         case CommandIO_Link.PDIPort3:
         case CommandIO_Link.PDIPort4:
         case CommandIO_Link.PDIPort5:
         case CommandIO_Link.PDIPort6:
         case CommandIO_Link.PDIPort7:
         case CommandIO_Link.PDIPort8:
             res.AddRange(new byte[] { (byte)((int)command / 256), (byte)((int)command % 256), (byte)((int)36 / 256), (byte)((int)36 % 256) });
             break;
         case CommandIO_Link.PDOPort1:
         case CommandIO_Link.PDOPort2:
         case CommandIO_Link.PDOPort3:
         case CommandIO_Link.PDOPort4:
         case CommandIO_Link.PDOPort5:
         case CommandIO_Link.PDOPort6:
         case CommandIO_Link.PDOPort7:
         case CommandIO_Link.PDOPort8:
             res.AddRange(new byte[] { (byte)((int)command / 256), (byte)((int)command % 256), (byte)((int)36 / 256), (byte)((int)36 % 256) });
             break;
     };
     return res;
 }
 public static string GetPort(CommandIO_Link command)
 {
     switch (command)
     {
         case CommandIO_Link.DiagnosisDataPort1:
             return "port1";
         case CommandIO_Link.DiagnosisDataPort2:
             return "port2";
         case CommandIO_Link.DiagnosisDataPort3:
             return "port3";
         case CommandIO_Link.DiagnosisDataPort4:
             return "port4";
         case CommandIO_Link.DiagnosisDataPort5:
             return "port5";
         case CommandIO_Link.DiagnosisDataPort6:
             return "port6";
         case CommandIO_Link.DiagnosisDataPort7:
             return "port7";
         case CommandIO_Link.DiagnosisDataPort8:
             return "port8";
     }
     return "?";
 }
 public static bool GetReadAnalysisReceiveByte(DeviceType type, CommandIO_Link command, byte[] receive, out string data)
 {
     data = "";
     switch (command)
     {
         case CommandIO_Link.DiagnosisDataPort1:
         case CommandIO_Link.DiagnosisDataPort2:
         case CommandIO_Link.DiagnosisDataPort3:
         case CommandIO_Link.DiagnosisDataPort4:
         case CommandIO_Link.DiagnosisDataPort5:
         case CommandIO_Link.DiagnosisDataPort6:
         case CommandIO_Link.DiagnosisDataPort7:
         case CommandIO_Link.DiagnosisDataPort8:
         string VendorName = Encoding.ASCII.GetString(receive.GetBytes(9, 64)).Replace("\0", "");
         string VendorText = Encoding.ASCII.GetString(receive.GetBytes(73, 64)).Replace("\0", "");
         string ProductName = Encoding.ASCII.GetString(receive.GetBytes(137, 64)).Replace("\0", "");
         string ProductID =Encoding.ASCII.GetString(receive.GetBytes(201, 64)).Replace("\0", "");
         string ProductText = Encoding.ASCII.GetString(receive.GetBytes(265, 64)).Replace("\0", "");
         string SerialNumber = Encoding.ASCII.GetString(receive.GetBytes(329, 16)).Replace("\0", "");
         string HardwareRevision = Encoding.ASCII.GetString(receive.GetBytes(345, 64)).Replace("\0", "");
         string FirmwareRevision = Encoding.ASCII.GetString(receive.GetBytes(409, 64)).Replace("\0", "");
         string PDILength = Encoding.ASCII.GetString(receive.GetBytes(473, 2)).Replace("\0", "");
         string PDOLength = Encoding.ASCII.GetString(receive.GetBytes(474, 2)).Replace("\0", "");
             IO_Link_DiagnosisInfo info = new IO_Link_DiagnosisInfo()
             {
                 Port = GetPort(command),
                 VendorName = VendorName,
                 VendorText = VendorText,
                 ProductName = ProductName,
                 ProductID = ProductID,
                 ProductText = ProductText,
                 SerialNumber = SerialNumber,
                 HardwareRevision = HardwareRevision,
                 FirmwareRevision = FirmwareRevision,
                 PDILength = PDILength,
                 PDOLength = PDOLength
             };
             data = info.ToJSON();
             break;
         case CommandIO_Link.PDIPort1:
         case CommandIO_Link.PDIPort2:
         case CommandIO_Link.PDIPort3:
         case CommandIO_Link.PDIPort4:
         case CommandIO_Link.PDIPort5:
         case CommandIO_Link.PDIPort6:
         case CommandIO_Link.PDIPort7:
         case CommandIO_Link.PDIPort8:
             data = "";
             new DivceCategory(type).ReadDataAnalysis(receive, out data);
             return true;
         case CommandIO_Link.PDOPort1:
         case CommandIO_Link.PDOPort2:
         case CommandIO_Link.PDOPort3:
         case CommandIO_Link.PDOPort4:
         case CommandIO_Link.PDOPort5:
         case CommandIO_Link.PDOPort6:
         case CommandIO_Link.PDOPort7:
         case CommandIO_Link.PDOPort8:
             break;
     };
     return true;
 }