// Disconnect from printer
 private void Disconnect(ReqPkt pkt)
 {
     if (null != this.ijp)
     {
         ijp.Disconnect();
         ijp.Dispose();
         ijp   = null;
         ComOn = IJPOnlineStatus.Offline;
     }
 }
        // Convert XML Text to a IJPMessage
        public XmlToMsg(string XmlText, IJP ijp = null)
        {
            XmlDocument xmlDoc = new XmlDocument()
            {
                PreserveWhitespace = true
            };

            xmlDoc.LoadXml(XmlText);
            this.xmlDoc = xmlDoc;
            this.ijp    = ijp;
        }
 // Connect to printer
 private void Connect(ReqPkt pkt)
 {
     Disconnect(pkt);
     ijp = new IJP()
     {
         IPAddress = pkt.IpAddress,
         Timeout   = pkt.TimeOut,
         Retry     = pkt.Retries
     };
     ijp.Connect();
     ComOn = ijp.GetComPort();
     // Be sure com is on
     if (ComOn == IJPOnlineStatus.Offline)
     {
         ijp.SetComPort(IJPOnlineStatus.Online);
         ComOn = IJPOnlineStatus.Online;
     }
 }
Beispiel #4
0
        public string RetrieveXML(IJPMessage m, IJP ijp = null, IJPMessageInfo mInfo = null)
        {
            string   xml = string.Empty;
            ItemType itemType;
            int      calBlockNumber = 0;
            int      cntBlockNumber = 0;

            using (MemoryStream MemStream = new MemoryStream()) {
                using (XmlTextWriter writer = new XmlTextWriter(MemStream, Encoding.GetEncoding("UTF-8"))) {
                    writer.Formatting = Formatting.Indented;
                    writer.WriteStartDocument();
                    try {
                        writer.WriteStartElement("Label"); // Start Label
                        {
                            writer.WriteAttributeString("Version", "1");
                            RetrievePrinterSettings(writer, m, ijp);
                            writer.WriteStartElement("Message"); // Start Message
                            {
                                writer.WriteAttributeString("Layout", m.FormatSetup.ToString());
                                if (mInfo == null)
                                {
                                    writer.WriteAttributeString("Name", m.Nickname);
                                }
                                else
                                {
                                    writer.WriteAttributeString("Registration", mInfo.RegistrationNumber.ToString());
                                    writer.WriteAttributeString("GroupNumber", mInfo.GroupNumber.ToString());
                                    writer.WriteAttributeString("Name", mInfo.Nickname);
                                }
                                int item = 0;
                                while (item < m.Items.Count)
                                {
                                    writer.WriteStartElement("Column"); // Start Column
                                    {
                                        int colCount = m.Items[item].PrintLine;
                                        writer.WriteAttributeString("InterLineSpacing", m.Items[item].LineSpacing.ToString());
                                        for (int i = item; i < item + colCount; i++)
                                        {
                                            string text          = m.Items[i].Text;
                                            int    calBlockCount = m.Items[i].CalendarBlockCount;
                                            int    cntBlockCount = m.Items[i].CountBlockCount;
                                            int[]  mask          = new int[1 + Math.Max(calBlockCount, cntBlockCount)];
                                            itemType = GetItemType(text, ref mask);
                                            writer.WriteStartElement("Item"); // Start Item
                                            {
                                                RetrieveFont(writer, (IJPMessageItem)m.Items[item]);
                                                switch (itemType)
                                                {
                                                case ItemType.Text:
                                                    break;

                                                case ItemType.Date:
                                                    RetrieveCalendarSettings(writer, calBlockNumber, calBlockCount, m.CalendarConditions, mask);
                                                    RetrieveShiftSettings(writer, m.ShiftCodes, mask);
                                                    RetrieveTimeCountSettings(writer, m.TimeCount, mask);
                                                    calBlockNumber += calBlockCount;
                                                    break;

                                                case ItemType.Counter:
                                                    RetrieveCounterSettings(writer, cntBlockNumber, cntBlockCount, m.CountConditions);
                                                    break;

                                                default:
                                                    break;
                                                }

                                                writer.WriteElementString("Text", FormatText(m.Items[i].Text));
                                            }
                                            writer.WriteEndElement(); // End Item
                                        }
                                        item += colCount;
                                    }

                                    writer.WriteEndElement(); // End Column
                                }
                            }
                            writer.WriteEndElement(); // End Message
                        }
                        writer.WriteEndElement();     // End Label
                    } catch (Exception e1) {
                        MessageBox.Show($"IJP_XML: {e1.Message}\n{e1.StackTrace}", "EIP I/O Error", MessageBoxButtons.OK);
                    }
                    writer.WriteEndDocument();
                    writer.Flush();
                    MemStream.Position = 0;
                    xml = new StreamReader(MemStream).ReadToEnd();
                }
            }
            return(xml);
        }
Beispiel #5
0
        private void RetrieveSubstitutions(XmlTextWriter writer, IJPMessage m, IJP ijp)
        {
            int maxSZ = -1;

            int[] sr = new int[100]; // They are assumed to be 0
            for (int i = 0; i < m.CalendarConditions.Count; i++)
            {
                IJPCalendarCondition cc = m.CalendarConditions[i];
                int n = cc.SubstitutionRuleNumber;
                maxSZ = Math.Max(maxSZ, n);
                if (cc.YearSubstitutionRule)
                {
                    sr[n] |= (int)Ba.Year;
                }
                if (cc.MonthSubstitutionRule)
                {
                    sr[n] |= (int)Ba.Month;
                }
                if (cc.DaySubstitutionRule)
                {
                    sr[n] |= (int)Ba.Day;
                }
                if (cc.HourSubstitutionRule)
                {
                    sr[n] |= (int)Ba.Hour;
                }
                if (cc.MinuteSubstitutionRule)
                {
                    sr[n] |= (int)Ba.Minute;
                }
                if (cc.WeekNumberSubstitutionRule)
                {
                    sr[n] |= (int)Ba.WeekNumber;
                }
                if (cc.WeekSubstitutionRule)
                {
                    sr[n] |= (int)Ba.DayOfWeek;
                }
            }
            for (int i = 1; i <= maxSZ; i++)
            {
                if (sr[i] > 0)
                {
                    IJPSubstitutionRule srs = (IJPSubstitutionRule)ijp.GetSubstitutionRule(i);
                    writer.WriteStartElement("Substitution");
                    {
                        writer.WriteAttributeString("Delimiter", "/");
                        writer.WriteAttributeString("StartYear", srs.StartYear.ToString());
                        writer.WriteAttributeString("RuleNumber", i.ToString());
                        writer.WriteAttributeString("RuleName", srs.Name);
                        if ((sr[i] & (int)Ba.Year) > 0)
                        {
                            RetrieveSubstitution(writer, srs, Ba.Year, 0, 23);
                        }
                        if ((sr[i] & (int)Ba.Month) > 0)
                        {
                            RetrieveSubstitution(writer, srs, Ba.Month, 1, 12);
                        }
                        if ((sr[i] & (int)Ba.Day) > 0)
                        {
                            RetrieveSubstitution(writer, srs, Ba.Day, 1, 31);
                        }
                        if ((sr[i] & (int)Ba.Hour) > 0)
                        {
                            RetrieveSubstitution(writer, srs, Ba.Hour, 0, 23);
                        }
                        if ((sr[i] & (int)Ba.Minute) > 0)
                        {
                            RetrieveSubstitution(writer, srs, Ba.Minute, 0, 59);
                        }
                        if ((sr[i] & (int)Ba.WeekNumber) > 0)
                        {
                            RetrieveSubstitution(writer, srs, Ba.WeekNumber, 1, 53);
                        }
                        if ((sr[i] & (int)Ba.DayOfWeek) > 0)
                        {
                            RetrieveSubstitution(writer, srs, Ba.DayOfWeek, 1, 7);
                        }
                    }
                    writer.WriteEndElement(); // Substitution
                }
            }
        }
Beispiel #6
0
        private void RetrieveUserPatternSettings(XmlTextWriter writer, IJPMessage m, IJP ijp)
        {
            List <LogoSave> neededLogos = new List <LogoSave>();

            for (int i = 0; i < m.Items.Count; i++)
            {
                string s = m.Items[i].Text;
                for (int n = 0; n < s.Length; n++)
                {
                    char c = s[n];
                    if (c >= IJPLib_XML.FirstFixedUP && c <= IJPLib_XML.LastFixedUP)
                    {
                        neededLogos.Add(new LogoSave()
                        {
                            fixedStyle = true, dm = m.Items[i].DotMatrix, location = c - IJPLib_XML.FirstFixedUP
                        });
                    }
                    else if (c >= IJPLib_XML.FirstFreeUP && c <= IJPLib_XML.LastFreeUP)
                    {
                        neededLogos.Add(new LogoSave()
                        {
                            fixedStyle = false, dm = m.Items[i].DotMatrix, location = c - IJPLib_XML.FirstFreeUP
                        });
                    }
                }
            }
            // Any referenced?
            if (neededLogos.Count > 0)
            {
                // Eliminate duplicates
                neededLogos = neededLogos.OrderBy(o => o.location).OrderBy(o => o.dm).OrderBy(o => o.fixedStyle).ToList();
                for (int i = 0; i < neededLogos.Count - 1; i++)
                {
                    if (neededLogos[i].Equals(neededLogos[i = 1]))
                    {
                        neededLogos.RemoveAt(i + 1);
                    }
                }
                // Output the remainder
                writer.WriteStartElement("Logos"); // Start Logos
                {
                    //writer.WriteAttributeString("Folder", Properties.Settings.Default.MessageFolder);
                    // Now write the logos
                    IIJPUserPattern up;
                    for (int i = 0; i < neededLogos.Count; i++)
                    {
                        writer.WriteStartElement("Logo"); // Start Logo
                        {
                            if (neededLogos[i].fixedStyle)
                            {
                                writer.WriteAttributeString("Layout", "Fixed");
                                up = ijp.GetFixedUserPattern(neededLogos[i].location + 1, neededLogos[i].dm);
                            }
                            else
                            {
                                writer.WriteAttributeString("Layout", "Free");
                                up = ijp.GetFreeUserPattern(neededLogos[i].location + 1);
                            }
                            writer.WriteAttributeString("DotMatrix", neededLogos[i].dm.ToString());
                            writer.WriteAttributeString("Location", neededLogos[i].location.ToString());
                            writer.WriteAttributeString("FileName", "");
                            writer.WriteAttributeString("Width", up.Pattern.Width.ToString());
                            writer.WriteAttributeString("Height", up.Pattern.Height.ToString());

                            writer.WriteAttributeString("RawData", BitMapToRawData(up.Pattern));
                        }
                        writer.WriteEndElement(); //  End Logo
                    }
                }
                writer.WriteEndElement(); //  End Logos
            }
        }
Beispiel #7
0
        private void RetrievePrinterSettings(XmlTextWriter writer, IJPMessage m, IJP ijp)
        {
            writer.WriteStartElement("Printer");
            {
                {
                    writer.WriteAttributeString("Make", "Hitachi");
                    //IJPUnitInformation ui = (IJPUnitInformation)ijp.GetUnitInformation();
                    //writer.WriteAttributeString("Model", ui.TypeName);
                }

                writer.WriteStartElement("PrintHead");
                {
                    writer.WriteAttributeString("Orientation", m.CharacterOrientation.ToString());
                }
                writer.WriteEndElement(); // PrintHead

                writer.WriteStartElement("ContinuousPrinting");
                {
                    writer.WriteAttributeString("RepeatInterval", m.RepeatIntervals.ToString());
                    writer.WriteAttributeString("PrintsPerTrigger",
                                                m.RepeatCount == 0 ? "1" : m.RepeatCount.ToString());
                }
                writer.WriteEndElement(); // ContinuousPrinting

                writer.WriteStartElement("TargetSensor");
                {
                    writer.WriteAttributeString("Filter", m.TargetSensorFilter.ToString());
                    writer.WriteAttributeString("SetupValue", m.TimeSetup.ToString());
                    writer.WriteAttributeString("Timer", m.TargetSensorTimer.ToString());
                }
                writer.WriteEndElement(); // TargetSensor

                writer.WriteStartElement("CharacterSize");
                {
                    writer.WriteAttributeString("Width", m.CharacterWidth.ToString());
                    writer.WriteAttributeString("Height", m.CharacterHeight.ToString());
                }
                writer.WriteEndElement(); // CharacterSize

                writer.WriteStartElement("PrintStartDelay");
                {
                    writer.WriteAttributeString("Forward", m.PrintStartDelayForward.ToString());
                    writer.WriteAttributeString("Reverse", m.PrintStartDelayReverse.ToString());
                }
                writer.WriteEndElement(); // PrintStartDelay

                writer.WriteStartElement("EncoderSettings");
                {
                    writer.WriteAttributeString("HighSpeedPrinting", m.HiSpeedPrint.ToString());
                    writer.WriteAttributeString("Divisor", m.PulseRateDivisionFactor.ToString());
                    writer.WriteAttributeString("ExternalEncoder", m.ProductSpeedMatching.ToString());
                }
                writer.WriteEndElement(); // EncoderSettings

                writer.WriteStartElement("InkStream");
                {
                    writer.WriteAttributeString("InkDropUse", m.InkDropUse.ToString());
                    writer.WriteAttributeString("ChargeRule", m.InkDropChargeRule.ToString());
                }
                writer.WriteEndElement(); // InkStream

                if (ijp != null)
                {
                    writer.WriteStartElement("ClockSystem");
                    {
                        writer.WriteAttributeString("HourMode24", ijp.GetHourMode24().ToString());
                    }
                    writer.WriteEndElement(); // ClockSystem
                    RetrieveSubstitutions(writer, m, ijp);
                    RetrieveUserPatternSettings(writer, m, ijp);
                }
            }
            writer.WriteEndElement(); // Printer
        }
 // Convert XML Document to a IJPMessage
 public XmlToMsg(XmlDocument xmlDoc, IJP ijp = null)
 {
     this.xmlDoc = xmlDoc;
     this.ijp    = ijp;
 }