コード例 #1
0
ファイル: fmMain.cs プロジェクト: WebManufacture/Legacy.NET
 void SendCommand(UartCommand command, ushort address, Task data)
 {
     var dta = new byte[7];
     dta[0] = (byte)command;
     dta[1] = (byte)(address << 8);
     dta[2] = (byte)(address);
     if (data != null)
     {
         data.GetBytes().CopyTo(dta, 3);
     }
     port.Send(dta, 1, false);
 }
コード例 #2
0
 public UartCommand ConvertData(byte[] data)
 {
     if (data == null)
     {
         return(null);
     }
     if (data.Length >= 6)
     {
         UartCommand obj = new UartCommand();
         obj.date    = DateTime.Now.ToString("dd.MM.yyyy HH:mm:ss.") + DateTime.Now.Millisecond;
         obj.Address = data[0];
         obj.Command = data[1];
         obj.Data    = new byte[data.Length - 2];
         Array.Copy(data, 2, obj.Data, 0, data.Length - 2);
         return(obj);
     }
     return(null);
 }
コード例 #3
0
    public bool Send(UartCommand data)
    {
        if (data == null)
        {
            return(false);
        }
        var addLength = 0;

        if (data.Data != null)
        {
            addLength = data.Data.Length;
        }
        byte[] bytes = new byte[addLength + 2];
        bytes[0] = (byte)data.Address;
        bytes[1] = (byte)(data.Command);
        if (addLength > 0)
        {
            data.Data.CopyTo(bytes, 2);
        }
        Send(bytes);
        return(true);
    }
コード例 #4
0
 public Task <object> Invoke(IDictionary <string, object> input)
 {
     if (input.ContainsKey("action"))
     {
         var action = input["action"].ToString();
         if (action == "init")
         {
             return(Task.Run <object>(() => { return Init(input); }));
         }
         if (action == "list")
         {
             return(Task.Run <object>(() => { return Device.GetPorts(); }));
         }
         if (device != null)
         {
             if (action == "write")
             {
                 return(Task.Run <object>(() => { return device.Send((byte[])input["data"]); }));
             }
             if (action == "write-sized")
             {
                 var    data = (byte[])input["data"];
                 string log  = "Sending: " + data.Length + " L - ";
                 for (var i = 0; i < data.Length; i++)
                 {
                     log += data[i] + " ";
                 }
                 Console.WriteLine(log);
                 return(Task.Run <object>(() => { return device.Send(data, 1, false); }));
             }
             if (action == "command")
             {
                 var obj = new UartCommand();
                 if (input.ContainsKey("command"))
                 {
                     obj.Command = Convert.ToByte(input["command"]);
                 }
                 if (input.ContainsKey("address"))
                 {
                     obj.Address = Convert.ToByte(input["address"]);
                 }
                 if (input.ContainsKey("data"))
                 {
                     obj.Data = (byte[])input["data"];
                 }
                 return(Task.Run <object>(() => { return device.Send(obj); }));
             }
             if (action == "close")
             {
                 return(Task.Run <object>(() => { return device.Close(); }));
             }
             if (action == "read")
             {
                 return(Task.Run <object>(() =>
                 {
                     try
                     {
                         var result = device.Read();
                         return result;
                     }
                     catch (Exception err)
                     {
                         //return err.StackTrace;
                         throw err;
                     }
                 }));
             }
             if (action == "state")
             {
                 return(Task.Run <object>(() => { return device.GetState(); }));
             }
         }
     }
     else
     {
         throw new InvalidOperationException("Unsupported type of command.");
     }
     return(null);
 }
コード例 #5
0
ファイル: Packets.cs プロジェクト: WebManufacture/Legacy.NET
 public UartPacket(byte command)
 {
     this.Command = (UartCommand) command;
     //Source = (UartSource)(source & 0xF0);
 }
コード例 #6
0
ファイル: fmMain.cs プロジェクト: WebManufacture/Legacy.NET
 void SendCommand(UartCommand command, ushort address)
 {
     var dta = new byte[3];
     dta[0] = (byte)command;
     dta[1] = (byte)(address << 8);
     dta[2] = (byte)(address);
     port.Send(dta, 1, false);
 }