コード例 #1
0
ファイル: SerialPortController.cs プロジェクト: lulzzz/CNCLib
        public async Task <ActionResult <SerialPortDefinition> > ConnectJoystick(int id, int?baudRate = null)
        {
            int baudRateN0 = baudRate ?? 250000;

            var port = await SerialPortList.GetPortAndRescan(id);

            if (port == null)
            {
                return(NotFound());
            }

            if (port.IsConnected)
            {
                if (port.Serial.BaudRate == baudRateN0)
                {
                    return(Ok(GetDefinition(port)));
                }

                await port.Serial.DisconnectAsync();
            }

            port.IsJoystick            = true;
            port.Serial.BaudRate       = baudRateN0;
            port.Serial.DtrIsReset     = true;
            port.Serial.ResetOnConnect = false;
            port.GCodeCommandPrefix    = "";

            await port.Serial.ConnectAsync(port.PortName, null, null, null);

            await _hubContext.Clients.All.Connected(id);

            return(Ok(GetDefinition(port)));
        }
コード例 #2
0
ファイル: SerialPortController.cs プロジェクト: lulzzz/CNCLib
        public async Task <ActionResult <SerialPortDefinition> > Connect(int id, string commandPrefix = null, int?baudRate = null, bool?dtrIsReset = true, bool?resetOnConnect = false)
        {
            bool dtrIsResetN0     = dtrIsReset ?? true;
            bool resetOnConnectN0 = resetOnConnect ?? false;
            int  baudRateN0       = baudRate ?? 250000;

            var port = await SerialPortList.GetPortAndRescan(id);

            if (port == null)
            {
                return(NotFound());
            }

            if (port.IsConnected)
            {
                if (port.Serial.BaudRate == baudRateN0 && resetOnConnectN0 == false && !port.IsJoystick)
                {
                    return(Ok(GetDefinition(port)));
                }

                await port.Serial.DisconnectAsync();
            }

            port.IsJoystick            = false;
            port.Serial.BaudRate       = baudRateN0;
            port.Serial.DtrIsReset     = dtrIsResetN0;
            port.Serial.ResetOnConnect = resetOnConnectN0;
            port.GCodeCommandPrefix    = commandPrefix ?? "";

            await port.Serial.ConnectAsync(port.PortName, null, null, null);

            await _hubContext.Clients.All.Connected(id);

            return(Ok(GetDefinition(port)));
        }
コード例 #3
0
ファイル: SerialPortController.cs プロジェクト: lulzzz/CNCLib
        public async Task <ActionResult <SerialPortDefinition> > Get(int id)
        {
            var port = await SerialPortList.GetPortAndRescan(id);

            if (port == null)
            {
                return(NotFound());
            }

            return(GetDefinition(port));
        }
コード例 #4
0
ファイル: SerialPortController.cs プロジェクト: lulzzz/CNCLib
        public async Task <IActionResult> ClearCommandHistory(int id)
        {
            var port = await SerialPortList.GetPortAndRescan(id);

            if (port == null)
            {
                return(NotFound());
            }

            port.Serial.ClearCommandHistory();
            return(Ok());
        }
コード例 #5
0
ファイル: SerialPortController.cs プロジェクト: lulzzz/CNCLib
        public async Task <ActionResult> SingleStepCommand(int id)
        {
            var port = await SerialPortList.GetPortAndRescan(id);

            if (port == null)
            {
                return(NotFound());
            }

            port.Serial.SendNext = true;
            return(Ok());
        }
コード例 #6
0
ファイル: SerialPortController.cs プロジェクト: lulzzz/CNCLib
        public async Task <ActionResult> DisableSingleStepCommand(int id)
        {
            var port = await SerialPortList.GetPortAndRescan(id);

            if (port == null)
            {
                return(NotFound());
            }

            port.Serial.Pause = false;
            return(Ok());
        }
コード例 #7
0
ファイル: SerialPortController.cs プロジェクト: lulzzz/CNCLib
        public async Task <ActionResult> ResumeCommand(int id)
        {
            var port = await SerialPortList.GetPortAndRescan(id);

            if (port == null)
            {
                return(NotFound());
            }

            port.Serial.ResumeAfterAbort();
            return(Ok());
        }
コード例 #8
0
        public async Task <ActionResult <IEnumerable <UInt32> > > GetEeprom(int id)
        {
            var port = await SerialPortList.GetPortAndRescan(id);

            if (port == null)
            {
                return(NotFound());
            }

            var eeprom = await port.Serial.GetEpromValues(GCodeSerial.DefaultEpromTimeout);

            return(Ok(eeprom));
        }
コード例 #9
0
        public async Task <ActionResult <decimal> > GetParameter(int id, int paramNo)
        {
            var port = await SerialPortList.GetPortAndRescan(id);

            if (port == null)
            {
                return(NotFound());
            }

            var paramValue = await port.Serial.GetParameterValueAsync(paramNo, port.GCodeCommandPrefix);

            return(Ok(paramValue));
        }
コード例 #10
0
        public async Task <ActionResult <IEnumerable <IEnumerable <decimal> > > > GetPosition(int id)
        {
            var port = await SerialPortList.GetPortAndRescan(id);

            if (port == null)
            {
                return(NotFound());
            }

            var position = await port.Serial.GetPosition(port.GCodeCommandPrefix);

            return(Ok(position));
        }
コード例 #11
0
ファイル: SerialPortController.cs プロジェクト: lulzzz/CNCLib
        public async Task <ActionResult <IEnumerable <SerialCommand> > > SendCommand(int id, [FromBody] SerialCommands commands)
        {
            var port = await SerialPortList.GetPortAndRescan(id);

            if (port == null || commands == null || commands.Commands == null)
            {
                return(NotFound());
            }

            var ret = await port.Serial.SendCommandsAsync(commands.Commands, commands.TimeOut);

            return(Ok(ret));
        }
コード例 #12
0
        public async Task <ActionResult <IEnumerable <UInt32> > > EraseEeprom(int id)
        {
            var port = await SerialPortList.GetPortAndRescan(id);

            if (port == null)
            {
                return(NotFound());
            }

            var eeprom = await port.Serial.EraseEeprom();

            return(Ok(eeprom));
        }
コード例 #13
0
ファイル: SerialPortController.cs プロジェクト: lulzzz/CNCLib
        public async Task <ActionResult <SerialPortDefinition> > DisConnect(int id)
        {
            var port = await SerialPortList.GetPortAndRescan(id);

            if (port == null)
            {
                return(NotFound());
            }

            await port.Serial.DisconnectAsync();

            port.Serial = null;

            await _hubContext.Clients.All.Disconnected(id);

            return(Ok());
        }
コード例 #14
0
        public async Task <ActionResult> Probe(int id, string axisName, decimal probeSize, decimal probeDist, decimal probeDistUp, decimal probeFeed)
        {
            var port = await SerialPortList.GetPortAndRescan(id);

            if (port == null)
            {
                return(NotFound());
            }

            if (string.IsNullOrEmpty(axisName) || probeSize == 0 || probeDist == 0 || probeFeed == 0)
            {
                return(new BadRequestResult());
            }

            await port.Serial.SendProbeCommandAsync(axisName, probeSize, probeDist, probeDistUp, probeFeed);

            return(Ok());
        }
コード例 #15
0
ファイル: SerialPortController.cs プロジェクト: lulzzz/CNCLib
        public async Task <ActionResult <IEnumerable <SerialCommand> > > GetCommandHistory(int id, bool?sortDesc = null)
        {
            var port = await SerialPortList.GetPortAndRescan(id);

            if (port == null)
            {
                return(NotFound());
            }

            var cmdList = port.Serial.CommandHistoryCopy;

            if (sortDesc ?? true)
            {
                cmdList = cmdList.OrderByDescending(h => h.SeqId).ToList();
            }

            return(Ok(cmdList));
        }
コード例 #16
0
        public async Task <ActionResult> SaveEeprom(int id, [FromBody] UInt32[] eepromValue)
        {
            var port = await SerialPortList.GetPortAndRescan(id);

            if (port == null)
            {
                return(NotFound());
            }

            var ee = new EepromV1 {
                Values = eepromValue
            };

            if (ee.IsValid)
            {
                await port.Serial.WriteEepromValues(ee);
            }

            return(Ok());
        }
コード例 #17
0
ファイル: SerialPortController.cs プロジェクト: lulzzz/CNCLib
        public async Task <ActionResult <IEnumerable <SerialCommand> > > SendWhileOkCommand(int id, [FromBody] SerialCommands commands)
        {
            var port = await SerialPortList.GetPortAndRescan(id);

            if (port == null || commands == null || commands.Commands == null)
            {
                return(NotFound());
            }

            var ret = new List <SerialCommand>();

            foreach (var c in commands.Commands)
            {
                var result = await port.Serial.SendCommandsAsync(new[] { c }, commands.TimeOut);

                ret.AddRange(result);
                if (result.Any() && result.LastOrDefault().ReplyType != EReplyType.ReplyOk)
                {
                    break;
                }
            }

            return(Ok(ret));
        }
コード例 #18
0
ファイル: SerialPortController.cs プロジェクト: lulzzz/CNCLib
        public async Task <IActionResult> Render(int id, [FromBody] PreviewGCode opt)
        {
            var port = await SerialPortList.GetPortAndRescan(id);

            if (port == null)
            {
                return(NotFound());
            }

            var gCodeDraw = new GCodeBitmapDraw()
            {
                SizeX      = opt.SizeX,
                SizeY      = opt.SizeY,
                SizeZ      = opt.SizeZ,
                RenderSize = new Size(opt.RenderSizeX, opt.RenderSizeY),
                OffsetX    = opt.OffsetX,
                OffsetY    = opt.OffsetY,
                OffsetZ    = opt.OffsetZ,

                Zoom       = opt.Zoom,
                CutterSize = opt.CutterSize,
                LaserSize  = opt.LaserSize,
                KeepRatio  = opt.KeepRatio
            };

            if (opt.Rotate3DVect != null && opt.Rotate3DVect.Count() == 3)
            {
                gCodeDraw.Rotate = new Rotate3D(opt.Rotate3DAngle, opt.Rotate3DVect.ToArray());
            }

            if (!string.IsNullOrEmpty(opt.MachineColor))
            {
                gCodeDraw.MachineColor = System.Drawing.ColorTranslator.FromHtml(opt.MachineColor);
            }
            if (!string.IsNullOrEmpty(opt.LaserOnColor))
            {
                gCodeDraw.LaserOnColor = System.Drawing.ColorTranslator.FromHtml(opt.LaserOnColor);
            }
            if (!string.IsNullOrEmpty(opt.LaserOffColor))
            {
                gCodeDraw.LaserOffColor = System.Drawing.ColorTranslator.FromHtml(opt.LaserOffColor);
            }
            if (!string.IsNullOrEmpty(opt.CutColor))
            {
                gCodeDraw.CutColor = System.Drawing.ColorTranslator.FromHtml(opt.CutColor);
            }
            if (!string.IsNullOrEmpty(opt.CutDotColor))
            {
                gCodeDraw.CutDotColor = System.Drawing.ColorTranslator.FromHtml(opt.CutDotColor);
            }
            if (!string.IsNullOrEmpty(opt.CutEllipseColor))
            {
                gCodeDraw.CutEllipseColor = System.Drawing.ColorTranslator.FromHtml(opt.CutEllipseColor);
            }
            if (!string.IsNullOrEmpty(opt.CutArcColor))
            {
                gCodeDraw.CutArcColor = System.Drawing.ColorTranslator.FromHtml(opt.CutArcColor);
            }
            if (!string.IsNullOrEmpty(opt.FastMoveColor))
            {
                gCodeDraw.FastMoveColor = System.Drawing.ColorTranslator.FromHtml(opt.FastMoveColor);
            }
            if (!string.IsNullOrEmpty(opt.HelpLineColor))
            {
                gCodeDraw.HelpLineColor = System.Drawing.ColorTranslator.FromHtml(opt.HelpLineColor);
            }

            var hisCommands = port.Serial.CommandHistoryCopy.OrderBy(x => x.SeqId).Select(c => c.CommandText);

            var load = new LoadGCode();

            load.Load(hisCommands.ToArray());
            var commands = load.Commands;
            var bitmap   = gCodeDraw.DrawToBitmap(commands);

            var memoryStream = new MemoryStream();

            bitmap.Save(memoryStream, ImageFormat.Png);
            memoryStream.Position = 0;
            var fileName = "preview.png";

            return(File(memoryStream, this.GetContentType(fileName), fileName));
        }