示例#1
0
        public void ParseText(string text, bool clear)
        {
            GCode gc = new GCode();

            if (clear)
            {
                Clear();
            }
            foreach (string s in text.Split('\n'))
            {
                gc.Parse(s);
                AddGCode(gc);
            }
        }
示例#2
0
 public void PushData(string code)
 {
     code = code.Replace('\r', '\n');
     string[] lines = code.Split('\n');
     foreach (string line in lines)
     {
         if (line.Length == 0)
         {
             continue;
         }
         GCode gcode = new GCode();
         gcode.Parse(line);
         jobList.AddLast(gcode);
         totalLines++;
     }
 }
        /// <summary>
        /// Send a print command, that does not belong to a print job.
        /// </summary>
        /// <param name="command">GCode command</param>
        public void injectManualCommand(string command)
        {
            GCode gc = new GCode();

            gc.Parse(command);
            lock (history)
                injectCommands.AddLast(gc);
            if (job.dataComplete == false)
            {
                if (injectCommands.Count == 0)
                {
                    firePrinterAction("Idle");
                }
                else
                {
                    firePrinterAction(injectCommands.Count.ToString() + " commands waiting");
                }
            }
        }
示例#4
0
 public void PushGCodeShortArray(List <GCodeShort> codes)
 {
     foreach (GCodeShort line in codes)
     {
         if (line.Length == 0)
         {
             continue;
         }
         ana.analyzeShort(line);
         GCode gcode = new GCode();
         gcode.Parse(line.text);
         if (!gcode.comment)
         {
             jobList.AddLast(gcode);
             totalLines++;
         }
         if (line.hasLayer)
         {
             maxLayer = line.layer;
         }
     }
     computedPrintingTime = ana.printingTime;
 }
示例#5
0
 private void writeArray(BinaryWriter file, List<GCodeShort> list, bool binary)
 {
     foreach (GCodeShort code in list)
     {
         GCode gc = new GCode();
         gc.Parse(code.text);
         if (gc.hostCommand) continue;
         if (binary)
         {
             if (gc.hasCode)
             {
                 byte[] data = gc.getBinary(1);
                 file.Write(data);
             }
         }
         else
         {
             System.Text.ASCIIEncoding enc = new System.Text.ASCIIEncoding();
             string cmd = gc.getAscii(false, false);
             if (cmd.Length > 0)
                 file.Write(enc.GetBytes(cmd + "\n"));
         }
     }
 }
 public void open()
 {
     if (writeThread == null)
     {
         writeThread = new Thread(new ThreadStart(this.WriteLoop));
         writeThread.Start();
     }
     isMarlin = isRepetier = false;
     try
     {
         if (port.ToLower().Equals("virtual printer"))
         {
             isVirtualActive = true;
             virtualPrinter.open();
             GCode gc = new GCode();
             gc.Parse("M105");
             virtualPrinter.receiveLine(gc);
             connected = true;
             if (transferProtocol < 2)
                 binaryVersion = 0;
             else binaryVersion = transferProtocol - 1;
             readyForNextSend = true;
             nackLines.Clear();
             ignoreNextOk = false;
             linesSend = errorsReceived = bytesSend = 0;
             gc.Parse("N0 M110");
             virtualPrinter.receiveLine(gc);
             gc.Parse("M115");
             virtualPrinter.receiveLine(gc);
             gc.Parse("M105");
             virtualPrinter.receiveLine(gc);
             if (eventConnectionChange != null)
                 eventConnectionChange(Trans.T("L_CONNECTED"));
             Main.main.Invoke(Main.main.UpdateJobButtons);
             return;
         }
         isVirtualActive = false;
         if (Main.IsMono)
             serial = new SerialPort();
         else
             serial = new ProtectedSerialPort();
         garbageCleared = false;
         serial.PortName = port;
         serial.BaudRate = baud;
         serial.Parity = parity;
         serial.DataBits = databits;
         serial.StopBits = stopbits;
         if (!Main.IsMono)
             serial.DataReceived += received;
         serial.ErrorReceived += error;
         serial.RtsEnable = false;
         serial.DtrEnable = false;
         serial.Open();
       //  serial.DtrEnable = true;
      //   Thread.Sleep(400);
      //   serial.DtrEnable = false;
         // If we didn't restart the connection we need to eat
         // all unread data on this port.
         serial.DiscardInBuffer();
         /*while(serial.BytesToRead > 0)
         {
             string indata = serial.ReadExisting();
         }*/
         serial.WriteLine("M105");
         connected = true;
         if (transferProtocol < 2)
             binaryVersion = 0;
         else binaryVersion = transferProtocol - 1;
         readyForNextSend = true;
         nackLines.Clear();
         ignoreNextOk = false;
         linesSend = errorsReceived = bytesSend = 0;
         if (readThread == null && Main.IsMono)
         {
             readThread = new Thread(new ThreadStart(this.ReadThread));
             readThread.Start();
         }
         GetInjectLock();
         injectManualCommand("N0 M110"); // Make sure we tal about the same linenumbers
         injectManualCommand("M115"); // Check firmware
         injectManualCommand("M105"); // Read temperature
         ReturnInjectLock();
         if (eventConnectionChange != null)
             eventConnectionChange(Trans.T("L_CONNECTED"));
         Main.main.Invoke(Main.main.UpdateJobButtons);
     }
     catch (IOException ex)
     {
         serial = null;
         log(ex.Message, true, 2);
         if (eventConnectionChange != null)
             eventConnectionChange(Trans.T("L_CONNECTION_ERROR")); // "Conn. error");
         RepetierHost.view.SoundConfig.PlayError(false);
     }
 }
 public void injectManualCommandFirst(string command)
 {
     GCode gc = new GCode();
     gc.Parse(command);
     if (gc.comment) return;
     lock (history)
         injectCommands.AddFirst(gc);
     if (job.dataComplete == false)
     {
         if (injectCommands.Count == 0)
         {
             firePrinterAction(Trans.T("L_IDLE"));
         }
         else
         {
             firePrinterAction(Trans.T1("L_X_COMMANDS_WAITING", injectCommands.Count.ToString()));
         }
     }
 }
示例#8
0
 private void writeString(BinaryWriter file, string code, bool binary)
 {
     GCode gc = new GCode();
     gc.Parse(code);
     if (gc.hostCommand) return;
     if (binary)
     {
         if (gc.hasCode)
         {
             byte[] data = gc.getBinary(1);
             file.Write(data);
         }
     }
     else
     {
         System.Text.ASCIIEncoding enc = new System.Text.ASCIIEncoding();
         string cmd = gc.getAscii(false, false);
         if (cmd.Length > 0)
             file.Write(enc.GetBytes(cmd + "\n"));
     }
 }
 /// <summary>
 /// Send a print command, that does not belong to a print job.
 /// </summary>
 /// <param name="command">GCode command</param>
 public void injectManualCommand(string command)
 {
     GCode gc = new GCode();
     gc.Parse(command);
     lock(history)
         injectCommands.AddLast(gc);
     if (job.dataComplete == false)
     {
         if (injectCommands.Count == 0)
         {
             firePrinterAction("Idle");
         }
         else
         {
             firePrinterAction(injectCommands.Count.ToString() + " commands waiting");
         }
     }
 }
示例#10
0
 public void PushGCodeShortArray(List<GCodeShort> codes)
 {
     foreach (GCodeShort line in codes)
     {
         if (line.Length == 0) continue;
         ana.analyzeShort(line);
         GCode gcode = new GCode();
         gcode.Parse(line.text);
         if (!gcode.comment)
         {
             jobList.AddLast(new GCodeCompressed(gcode));
             totalLines++;
         }
         if (line.hasLayer)
             maxLayer = line.layer;
     }
     computedPrintingTime = ana.printingTime;
 }
示例#11
0
 public void PushData(string code)
 {
     code = code.Replace('\r', '\n');
     string[] lines = code.Split('\n');
     foreach (string line in lines)
     {
         if (line.Length == 0) continue;
         GCode gcode = new GCode();
         gcode.Parse(line);
         if (!gcode.comment)
         {
             jobList.AddLast(new GCodeCompressed(gcode));
             totalLines++;
         }
     }
 }
示例#12
0
 public void ParseText(string text, bool clear)
 {
     GCode gc = new GCode();
     if (clear)
         Clear();
     foreach (string s in text.Split('\n'))
     {
         gc.Parse(s);
         AddGCode(gc);
     }
 }
 public override bool Connect()
 {
     con.isMarlin = con.isRepetier = con.isSprinter = false;
     connected = true;
     virtualPrinter.open(int.Parse(baudRate));
     GCode gc = new GCode();
     gc.Parse("M105");
     virtualPrinter.receiveLine(gc);
     connected = true;
     if (transferProtocol < 2)
         binaryVersion = 0;
     else binaryVersion = transferProtocol - 1;
     con.binaryVersion = binaryVersion;
     readyForNextSend = true;
     lock (nackLines)
     {
         nackLines.Clear();
     }
     linesSend = errorsReceived = bytesSend = 0;
     gc.Parse("N0 M110");
     virtualPrinter.receiveLine(gc);
     gc.Parse("M115");
     virtualPrinter.receiveLine(gc);
     gc.Parse("M105");
     virtualPrinter.receiveLine(gc);
     con.FireConnectionChange(Trans.T("L_CONNECTED") + ":" + con.printerName);
     Main.main.Invoke(Main.main.UpdateJobButtons);
     return true;
 }
示例#14
0
 public void PushGCodeShortArray(List<GCodeShort> codes)
 {
     foreach (GCodeShort line in codes)
     {
         if (line.Length == 0) continue;
         GCode gcode = new GCode();
         gcode.Parse(line.text);
         if (!gcode.comment)
         {
             jobList.AddLast(gcode);
             totalLines++;
         }
         if (line.hasLayer)
             maxLayer = line.layer;
     }
 }