home work
This commit is contained in:
		
							
								
								
									
										216
									
								
								DataClient/Struct/Pasport.cs
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										216
									
								
								DataClient/Struct/Pasport.cs
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,216 @@
 | 
			
		||||
using System;
 | 
			
		||||
using System.Collections.Generic;
 | 
			
		||||
using System.Linq;
 | 
			
		||||
using System.Text;
 | 
			
		||||
using System.Threading.Tasks;
 | 
			
		||||
 | 
			
		||||
namespace DataClient.Struct
 | 
			
		||||
{
 | 
			
		||||
  public class Pasport
 | 
			
		||||
  {
 | 
			
		||||
    //functions
 | 
			
		||||
    private DateTime? ByteToDate(byte[] arr) { return ByteToDate(arr, 0); }
 | 
			
		||||
    private DateTime? ByteToDate(byte[] arr, int index)
 | 
			
		||||
    {
 | 
			
		||||
      if (arr == null || (index + 7) > arr.Length) return null;
 | 
			
		||||
      return new DateTime(arr[index] | arr[index + 1] << 8, arr[index + 2], arr[index + 3], arr[index + 4], arr[index + 5], arr[index + 6]);
 | 
			
		||||
    }
 | 
			
		||||
    private byte[] DateToByte(DateTime? date)
 | 
			
		||||
    {
 | 
			
		||||
      if (!date.HasValue) return null;
 | 
			
		||||
      return new byte[]
 | 
			
		||||
      {
 | 
			
		||||
        BitConverter.GetBytes(date.Value.Year)[0],
 | 
			
		||||
        BitConverter.GetBytes(date.Value.Year)[1],
 | 
			
		||||
        (byte)date.Value.Month,
 | 
			
		||||
        (byte)date.Value.Day,
 | 
			
		||||
        (byte)date.Value.Hour,
 | 
			
		||||
        (byte)date.Value.Minute,
 | 
			
		||||
        (byte)date.Value.Second
 | 
			
		||||
      };
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    private string ByteToString(byte[] arr) { return ByteToString(arr, 0, arr.Length); }
 | 
			
		||||
    private string ByteToString(byte[] arr, int index, int length)
 | 
			
		||||
    {
 | 
			
		||||
      if (arr == null || arr.Length == 0 || index < 0 || length < 0)
 | 
			
		||||
        return "";
 | 
			
		||||
      Encoding.RegisterProvider(CodePagesEncodingProvider.Instance);
 | 
			
		||||
      var enc = Encoding.GetEncoding(866);
 | 
			
		||||
      var res = new List<byte>();
 | 
			
		||||
      for (var i = index; i < (index + length); i++)
 | 
			
		||||
      {
 | 
			
		||||
        if (i >= arr.Length) break;
 | 
			
		||||
        if (arr[i] == 0x00) continue;
 | 
			
		||||
        res.Add(arr[i]);
 | 
			
		||||
      }
 | 
			
		||||
      return enc.GetString(res.ToArray());
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    private byte[] StringToByte(uint? size = null, string str = null)
 | 
			
		||||
    {
 | 
			
		||||
      Encoding.RegisterProvider(CodePagesEncodingProvider.Instance);
 | 
			
		||||
      var enc = Encoding.GetEncoding(866);
 | 
			
		||||
      var szArr = size ?? ((!string.IsNullOrEmpty(str)) ? (uint)(str.Length + 1) : 0);
 | 
			
		||||
      var strArr = (string.IsNullOrEmpty(str)) ? Array.Empty<byte>() : enc.GetBytes(str);
 | 
			
		||||
      var res = new byte[szArr];
 | 
			
		||||
      for (var i = 0; i < res.Length; i++)
 | 
			
		||||
        res[i] = (byte)((i == res.Length - 1) ? 0x00 : (i < strArr.Length) ? strArr[i] : 0x00);
 | 
			
		||||
      return res;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
    //params
 | 
			
		||||
    public bool HasData { get { return numVDP.HasValue && dStart.HasValue && dEnd.HasValue; } }
 | 
			
		||||
    public byte? numVDP = null;
 | 
			
		||||
    public DateTime? dStart = null;
 | 
			
		||||
    public DateTime? dEnd = null;
 | 
			
		||||
 | 
			
		||||
    public bool hasPasport = false;
 | 
			
		||||
    public int kod_npl = 0;
 | 
			
		||||
    public string nplav = null; //12
 | 
			
		||||
    public string rm = null; //11
 | 
			
		||||
    public string splav = null; //101
 | 
			
		||||
    public string iS = null; //51
 | 
			
		||||
    public ushort notd = 0;
 | 
			
		||||
    public ushort vessl = 0;
 | 
			
		||||
    public ushort diam = 0;
 | 
			
		||||
    public ushort prpl = 0;
 | 
			
		||||
    public string tin = null; //9
 | 
			
		||||
    public string dzap = null; //9
 | 
			
		||||
    public short dlog = 0;
 | 
			
		||||
    public short last = 0;
 | 
			
		||||
    public short dlper = 0;
 | 
			
		||||
    public string nazn = null; //51
 | 
			
		||||
    public ushort kompl = 0;
 | 
			
		||||
    public ushort izl = 0;
 | 
			
		||||
    public float robm = 0;
 | 
			
		||||
    public float rizol = 0;
 | 
			
		||||
    public ushort dkr = 0;
 | 
			
		||||
    public string nkon = null; //51
 | 
			
		||||
    public string pos = null; //6
 | 
			
		||||
    public string ukaz = null; //51
 | 
			
		||||
    public string zakaz = null; //51
 | 
			
		||||
    public string kat = null; //51
 | 
			
		||||
    public string pril = null; //3
 | 
			
		||||
    public string rezerved = null; //1023
 | 
			
		||||
 | 
			
		||||
    public byte[] PaspByte
 | 
			
		||||
    {
 | 
			
		||||
      get
 | 
			
		||||
      {
 | 
			
		||||
        var res = new List<byte>();
 | 
			
		||||
 | 
			
		||||
        res.Add((byte)(HasData ? 0x01 : 0x00));
 | 
			
		||||
        if (!HasData) return res.ToArray();
 | 
			
		||||
 | 
			
		||||
        res.Add(numVDP.Value);
 | 
			
		||||
        res.AddRange(DateToByte(dStart));
 | 
			
		||||
        res.AddRange(DateToByte(dEnd));
 | 
			
		||||
        res.Add((byte)(hasPasport ? 0x01 : 0x00));
 | 
			
		||||
        if (!hasPasport) return res.ToArray();
 | 
			
		||||
 | 
			
		||||
        res.AddRange(BitConverter.GetBytes(kod_npl));
 | 
			
		||||
        res.AddRange(StringToByte(12, nplav));
 | 
			
		||||
        res.AddRange(StringToByte(11, rm));
 | 
			
		||||
        res.AddRange(StringToByte(101, splav));
 | 
			
		||||
        res.AddRange(StringToByte(51, iS));
 | 
			
		||||
        res.AddRange(BitConverter.GetBytes(notd));
 | 
			
		||||
        res.AddRange(BitConverter.GetBytes(vessl));
 | 
			
		||||
        res.AddRange(BitConverter.GetBytes(diam));
 | 
			
		||||
        res.AddRange(BitConverter.GetBytes(prpl));
 | 
			
		||||
        res.AddRange(StringToByte(9, tin));
 | 
			
		||||
        res.AddRange(StringToByte(9, dzap));
 | 
			
		||||
        res.AddRange(BitConverter.GetBytes(dlog));
 | 
			
		||||
        res.AddRange(BitConverter.GetBytes(last));
 | 
			
		||||
        res.AddRange(BitConverter.GetBytes(dlper));
 | 
			
		||||
        res.AddRange(StringToByte(51, nazn));
 | 
			
		||||
        res.AddRange(BitConverter.GetBytes(kompl));
 | 
			
		||||
        res.AddRange(BitConverter.GetBytes(izl));
 | 
			
		||||
        res.AddRange(BitConverter.GetBytes(robm));
 | 
			
		||||
        res.AddRange(BitConverter.GetBytes(rizol));
 | 
			
		||||
        res.AddRange(BitConverter.GetBytes(dkr));
 | 
			
		||||
        res.AddRange(StringToByte(51, nkon));
 | 
			
		||||
        res.AddRange(StringToByte(6, pos));
 | 
			
		||||
        res.AddRange(StringToByte(51, ukaz));
 | 
			
		||||
        res.AddRange(StringToByte(51, zakaz));
 | 
			
		||||
        res.AddRange(StringToByte(51, kat));
 | 
			
		||||
        res.AddRange(StringToByte(3, pril));
 | 
			
		||||
        res.AddRange(StringToByte(1023, rezerved));
 | 
			
		||||
 | 
			
		||||
        return res.ToArray();
 | 
			
		||||
      }
 | 
			
		||||
      set
 | 
			
		||||
      {
 | 
			
		||||
        var count = 0;
 | 
			
		||||
        if (value == null) return;
 | 
			
		||||
        if (value.Length < (count + 1) || value[count] != 0x01) return;
 | 
			
		||||
        count++;
 | 
			
		||||
        if (value.Length < (count + 1)) return;
 | 
			
		||||
        numVDP = value[count]; count++;
 | 
			
		||||
        if (value.Length < (count + 7)) return;
 | 
			
		||||
        dStart = ByteToDate(value, count); count += 7;
 | 
			
		||||
        if (value.Length < (count + 7)) return;
 | 
			
		||||
        dEnd = ByteToDate(value, count); count += 7;
 | 
			
		||||
        if (value.Length < (count + 1) || value[count] != 0x01) { hasPasport = false; return; }
 | 
			
		||||
        hasPasport = true; count++;
 | 
			
		||||
        if (value.Length < (count + 4)) return;
 | 
			
		||||
        kod_npl = BitConverter.ToInt32(value, count); count += 4;
 | 
			
		||||
        if (value.Length < (count + 12)) return;
 | 
			
		||||
        nplav = ByteToString(value, count, 12); count += 12;
 | 
			
		||||
        if (value.Length < (count + 11)) return;
 | 
			
		||||
        rm = ByteToString(value, count, 11); count += 11;
 | 
			
		||||
        if (value.Length < (count + 101)) return;
 | 
			
		||||
        splav = ByteToString(value, count, 101); count += 101;
 | 
			
		||||
        if (value.Length < (count + 51)) return;
 | 
			
		||||
        iS = ByteToString(value, count, 51); count += 51;
 | 
			
		||||
        if (value.Length < (count + 2)) return;
 | 
			
		||||
        notd = BitConverter.ToUInt16(value, count); count += 2;
 | 
			
		||||
        if (value.Length < (count + 2)) return;
 | 
			
		||||
        vessl = BitConverter.ToUInt16(value, count); count += 2;
 | 
			
		||||
        if (value.Length < (count + 2)) return;
 | 
			
		||||
        diam = BitConverter.ToUInt16(value, count); count += 2;
 | 
			
		||||
        if (value.Length < (count + 2)) return;
 | 
			
		||||
        prpl = BitConverter.ToUInt16(value, count); count += 2;
 | 
			
		||||
        if (value.Length < (count + 9)) return;
 | 
			
		||||
        tin = ByteToString(value, count, 9); count += 9;
 | 
			
		||||
        if (value.Length < (count + 9)) return;
 | 
			
		||||
        dzap = ByteToString(value, count, 9); count += 9;
 | 
			
		||||
        if (value.Length < (count + 2)) return;
 | 
			
		||||
        dlog = BitConverter.ToInt16(value, count); count += 2;
 | 
			
		||||
        if (value.Length < (count + 2)) return;
 | 
			
		||||
        last = BitConverter.ToInt16(value, count); count += 2;
 | 
			
		||||
        if (value.Length < (count + 2)) return;
 | 
			
		||||
        dlper = BitConverter.ToInt16(value, count); count += 2;
 | 
			
		||||
        if (value.Length < (count + 51)) return;
 | 
			
		||||
        nazn = ByteToString(value, count, 51); count += 51;
 | 
			
		||||
        if (value.Length < (count + 2)) return;
 | 
			
		||||
        kompl = BitConverter.ToUInt16(value, count); count += 2;
 | 
			
		||||
        if (value.Length < (count + 2)) return;
 | 
			
		||||
        izl = BitConverter.ToUInt16(value, count); count += 2;
 | 
			
		||||
        if (value.Length < (count + 4)) return;
 | 
			
		||||
        robm = BitConverter.ToSingle(value, count); count += 4;
 | 
			
		||||
        if (value.Length < (count + 4)) return;
 | 
			
		||||
        rizol = BitConverter.ToSingle(value, count); count += 4;
 | 
			
		||||
        if (value.Length < (count + 2)) return;
 | 
			
		||||
        dkr = BitConverter.ToUInt16(value, count); count += 2;
 | 
			
		||||
        if (value.Length < (count + 51)) return;
 | 
			
		||||
        nkon = ByteToString(value, count, 51); count += 51;
 | 
			
		||||
        if (value.Length < (count + 6)) return;
 | 
			
		||||
        pos = ByteToString(value, count, 6); count += 6;
 | 
			
		||||
        if (value.Length < (count + 51)) return;
 | 
			
		||||
        ukaz = ByteToString(value, count, 51); count += 51;
 | 
			
		||||
        if (value.Length < (count + 51)) return;
 | 
			
		||||
        zakaz = ByteToString(value, count, 51); count += 51;
 | 
			
		||||
        if (value.Length < (count + 51)) return;
 | 
			
		||||
        kat = ByteToString(value, count, 51); count += 51;
 | 
			
		||||
        if (value.Length < (count + 3)) return;
 | 
			
		||||
        pril = ByteToString(value, count, 3); count += 3;
 | 
			
		||||
        if (value.Length < (count + 1023)) return;
 | 
			
		||||
        rezerved = ByteToString(value, count, 1023); count += 1023;
 | 
			
		||||
      }
 | 
			
		||||
    }
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										70
									
								
								DataClient/Struct/Struct.cs
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										70
									
								
								DataClient/Struct/Struct.cs
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,70 @@
 | 
			
		||||
using System;
 | 
			
		||||
using System.Collections.Generic;
 | 
			
		||||
using System.Linq;
 | 
			
		||||
using System.Text;
 | 
			
		||||
using System.Threading.Tasks;
 | 
			
		||||
 | 
			
		||||
namespace DataClient.Struct
 | 
			
		||||
{
 | 
			
		||||
  public struct server
 | 
			
		||||
  {
 | 
			
		||||
    public string name;
 | 
			
		||||
    public string ip;
 | 
			
		||||
    public int port;
 | 
			
		||||
    public string dir;
 | 
			
		||||
    public server(string Ip, int Port, string Dir)
 | 
			
		||||
    {
 | 
			
		||||
      name = "default";
 | 
			
		||||
      ip = Ip;
 | 
			
		||||
      port = Port;
 | 
			
		||||
      dir = Dir;
 | 
			
		||||
    }
 | 
			
		||||
    public server(string Name, string Ip, int Port, string Dir)
 | 
			
		||||
    {
 | 
			
		||||
      name = Name;
 | 
			
		||||
      ip = Ip;
 | 
			
		||||
      port = Port;
 | 
			
		||||
      dir = Dir;
 | 
			
		||||
    }
 | 
			
		||||
  }
 | 
			
		||||
  public class NetStatus
 | 
			
		||||
  {
 | 
			
		||||
    public enum Status
 | 
			
		||||
    {
 | 
			
		||||
      wait = 0,
 | 
			
		||||
      in_progress = 1,
 | 
			
		||||
      complete = 2
 | 
			
		||||
    }
 | 
			
		||||
    public uint fullSize = 0;
 | 
			
		||||
    public uint size = 0;
 | 
			
		||||
    public Status stat = Status.wait;
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  public class TechCycle
 | 
			
		||||
  {
 | 
			
		||||
    public enum Operation : short
 | 
			
		||||
    {
 | 
			
		||||
      end_cycle_manual_ = -1,
 | 
			
		||||
      end_cycle = 0,
 | 
			
		||||
      unload_load = 1,
 | 
			
		||||
      vac_priv = 2,
 | 
			
		||||
      priv = 5,
 | 
			
		||||
      cool_priv = 6,
 | 
			
		||||
      look_priv = 7,
 | 
			
		||||
      vac_plav = 8,
 | 
			
		||||
      melt_bath = 9,
 | 
			
		||||
      plav = 10,
 | 
			
		||||
      VUR = 11,
 | 
			
		||||
      cool_plav = 12,
 | 
			
		||||
      unload_kit = 13,
 | 
			
		||||
      vac_oplav = 14,
 | 
			
		||||
      oplav = 15,
 | 
			
		||||
      cool_oplav = 16,
 | 
			
		||||
      flow_metal = 17,
 | 
			
		||||
      check_protect = 25
 | 
			
		||||
    }
 | 
			
		||||
    public DateTime start;
 | 
			
		||||
    public Operation index;
 | 
			
		||||
  }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
		Reference in New Issue
	
	Block a user