public void GetStatusTest_ErrorStatus()
        {
            // Tests may run in parallel and since we are using a serial port
            // we should just run all queries in one test to avoid access issues.
            var printer = new ReliancePrinter(TEST_PORT);

            var status = printer.GetStatus(StatusTypes.ErrorStatus);

            Assert.IsNotNull(status);

            // Only these should be set
            Assert.IsNotNull(status.IsCutterOkay);
            Assert.IsNotNull(status.HasFatalError);
            Assert.IsNotNull(status.HasRecoverableError);

            // All the rest must be null
            Assert.IsNull(status.IsOnline);
            Assert.IsNull(status.IsPaperPresent);
            Assert.IsNull(status.IsPaperLevelOkay);
            Assert.IsNull(status.IsTicketPresentAtOutput);
            Assert.IsNull(status.IsCoverClosed);
            Assert.IsNull(status.IsPaperMotorOff);
            Assert.IsNull(status.IsDiagButtonReleased);
            Assert.IsNull(status.IsHeadTemperatureOkay);
            Assert.IsNull(status.IsCommsOkay);
            Assert.IsNull(status.IsPowerSupplyVoltageOkay);
            Assert.IsNull(status.IsPaperPathClear);
            Assert.IsNull(status.IsNormalFeed);
            Assert.IsNull(status.HasError);
        }
示例#2
0
        static void Main(string[] args)
        {
            const string phoenixPort  = "COM1";
            const string reliancePort = "COM12";

            const int captureRate = 10; // number of seconds between capture

            Console.WriteLine("Starting Security Camera Sample");


            // Setup the header with double width, double height, center justified
            var header = new StandardSection()
            {
                Justification = FontJustification.JustifyCenter,
                HeightScalar  = FontHeighScalar.h2,
                WidthScalar   = FontWidthScalar.w2,
                Font          = ThermalFonts.A,
                AutoNewline   = true,
            };



            // Setup timestamp at normal scalar with bold, underline, and centered
            var timestamp = new StandardSection()
            {
                Justification = FontJustification.JustifyCenter,
                HeightScalar  = FontHeighScalar.h1,
                WidthScalar   = FontWidthScalar.w1,
                Effects       = FontEffects.Italic | FontEffects.Underline,
                Font          = ThermalFonts.B,
                AutoNewline   = true,
            };

            // Print Status is shown as a JSON object
            var printStatus = new StandardSection()
            {
                Justification = FontJustification.JustifyLeft,
                HeightScalar  = FontHeighScalar.h1,
                WidthScalar   = FontWidthScalar.w1,
                Font          = ThermalFonts.C,
                AutoNewline   = true,
            };

            // Document template
            // Capture #{}
            // Image....
            // Image....
            // Image...
            // Timestamp
            var document = new StandardDocument()
            {
                // Don't forget to set your codepage!
                CodePage = CodePages.CPSPACE,
            };

            document.Sections.Add(header);
            document.Sections.Add(new Placeholder());  // Placeholder since we know we'll want an image here
            document.Sections.Add(timestamp);
            document.Sections.Add(printStatus);

            int count = 1;

            while (true)
            {
                // Select one printer or the other. Phoenix does not currently
                // support dynamic images over ESC/POS. Images will only
                // be transmitted through the print queue but no examples have
                // been prepared for this.
                //using (var printer = new PhoenixPrinter(phoenixPort))
                using (var printer = new ReliancePrinter(reliancePort))
                    using (var image = Webcam.GrabPicture())
                    {
                        var now = DateTime.Now;
                        Console.WriteLine("Image #{0} taken at {1}", count, now);


                        // Resize image if we want. This will follow ESC/POS justification
                        //logo.Resize(640, 480);
                        image.ApplyDithering(Algorithms.JarvisJudiceNinke, 128);

                        // Print the header document, update with new capture number
                        header.Content = string.Format("Capture #{0} (ЫВФАЫВМОЫВАП)", count);

                        // Printer the timestamp document
                        timestamp.Content = string.Format("{0}: {1}", count++, now);

                        // Get the latest printer status. Note that reliance and phoenix have
                        // slightly different args to this get status command
                        printStatus.Content = printer.GetStatus(StatusTypes.FullStatus).ToJSON(true);

                        // Re-assign this image to the middle part of the document
                        printer.SetImage(image, document, 1);

                        // Send the whole document + image
                        printer.PrintDocument(document);
                        printer.FormFeed();

                        // Wait for next capture period
                        Thread.Sleep(captureRate * 1000);
                    }
            }
        }