// 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; } }
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); }
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 } } }
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 } }
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; }