Classes and methods related to Monitor.
更多...
Classes and methods related to Monitor.
For the Objective-C example:
Printer Monitor example
Rfid Monitor exmaple
Odv Monitor exmaple
For the Swift example:
Printer Monitor example
Rfid Monitor exmaple
Odv Monitor exmaple
Example
Objective-C:
Printer Monitor:
#import <Foundation/Foundation.h>
@import UniPRT;
int main(int argc, const char * argv[]) {
@autoreleasepool {
NSString *ipAddress = @"10.0.10.170";
TcpComm *tcpComm = [[
TcpComm alloc] initWithIPAddress:ipAddress port:3007];
int choice = 0;
do {
NSLog(@"\nMenu:");
NSLog(@"1 - Get Printer Info");
NSLog(@"2 - Listen to Engine Status");
NSLog(@"3 - Listen to Display Status");
NSLog(@"4 - Listen to Alert Status");
NSLog(@"5 - Print example file");
NSLog(@"6 - Exit");
NSLog(@"Enter your choice (1-6):");
char buffer[10];
fgets(buffer, 10, stdin);
choice = atoi(buffer);
switch (choice) {
case 1: {
NSLog(@"Printer Model: %@", [prtInfo model]);
NSLog(@"Printer SN: %@", [prtInfo serialNumber]);
NSLog(@"Printer FW PN: %@", [prtInfo firmwarePartNumber]);
NSLog(@"Printer FW Ver: %@", [prtInfo firmwareVersion]);
NSLog(@"Printhead Resolution (Dots/Inch): %@", [prtInfo printheadResolution]);
NSLog(@"Has RFID: %@", [prtInfo hasRfidOption] ? @"Yes" : @"No");
NSLog(@"Has ODV: %@", [prtInfo hasOdvOption] ? @"Yes" : @"No");
break;
}
case 2: {
[NSThread detachNewThreadWithBlock:^{
printerMonitor.engineStatusCallback = ^(NSString *status) {
NSLog(@"Engine status update: %@", status);
};
}];
break;
}
case 3: {
[NSThread detachNewThreadWithBlock:^{
printerMonitor.displayStatusCallback = ^(NSArray<NSString *> *status) {
NSLog(@"Display status update: %@", [status componentsJoinedByString:@", "]);
};
}];
break;
}
case 4: {
[NSThread detachNewThreadWithBlock:^{
printerMonitor.alertStatusCallback = ^(NSArray<NSString *> *status) {
NSLog(@"Alert status update: %@", [status componentsJoinedByString:@", "]);
};
}];
break;
}
case 5: {
TcpComm *tcpComm2 = [[
TcpComm alloc] initWithIPAddress:@"10.0.10.186" port:9100];
[tcpComm2
sendPrintFile:@"10.0.10.186"
fileName:@"/Users/realbuber/Documents/doc/TestPrinterMonitor/Hello_1.pgl"];
NSLog(@"Print file sent.");
break;
}
case 6:
NSLog(@"Exiting...");
break;
default:
NSLog(@"Invalid choice. Please enter a number between 1 and 6.");
}
} while (choice != 6);
}
return 0;
}
打印機信息類,用於顯示打印機屬性和其他有用信息。
Definition PrinterInfo.h:33
模塊用於方便監聽/檢索打印機的非請求消息或檢索打印機狀態/信息。
Definition PrinterMonitor.h:45
void SetEngineStatusListening:(BOOL value)
設置是否啟用引擎狀態監聽。
PrinterInfo * getPrinterInfo()
獲取打印機信息。
void SetAlertStatusListening:(BOOL value)
設置是否啟用警報狀態監聽。
void SetDisplayStatusListening:(BOOL value)
設置是否啟用顯示狀態監聽。
一個用於 TCP 通信的類,繼承自 AComm 並符合 NSStreamDelegate 協議。
Definition TcpComm.h:101
void open()
打開與 TCP 服務器的連接。
void sendPrintFile:fileName:(NSString *ipAddress,[fileName] NSString *fileName)
將打印文件發送到指定的 IP 地址。
Rfid Monitor:
#import <Foundation/Foundation.h>
@import UniPRT;
int main(int argc, const char * argv[]) {
@autoreleasepool {
NSString *ipAddress = @"10.0.10.170";
TcpComm *tcpComm = [[
TcpComm alloc] initWithIPAddress:ipAddress port:DEFAULT_MGMT_PORT];
int choice = 0;
do {
NSLog(@"\nMenu:");
NSLog(@"1 - Get Printer Info");
NSLog(@"2 - Listen to RfidReport");
NSLog(@"3 - Print example file");
NSLog(@"4 - Exit");
NSLog(@"Enter your choice (1-4):");
char buffer[10];
fgets(buffer, 10, stdin);
choice = atoi(buffer);
switch (choice) {
case 1: {
NSLog(@"\n======= RFID Printer Info: ");
NSLog(
@"Printer Model: %@", printerInfo.
model);
NSLog(
@"Has RFID: %@", printerInfo.
hasRfidOption ?
@"Yes" :
@"No");
break;
}
case 2: {
[NSThread detachNewThreadWithBlock:^{
rfidMonitor.rfidReportCallback = ^(RfidReport *report) {
if (report.failed) {
NSLog(@"\nRFID Failed.");
} else {
NSLog(@"\nRFID Passed.");
NSLog(@"Write Action: %@", report.isWriteOperation ? @"Yes" : @"No");
NSLog(@"Data: \n%@", report.data);
}
};
}];
break;
}
case 3: {
TcpComm *tcpComm2 = [[
TcpComm alloc] initWithIPAddress:@"10.0.10.206" port:9100];
NSLog(@"Sending RFID print job...");
break;
}
case 4:
NSLog(@"Exiting...");
break;
default:
NSLog(@"Invalid choice. Please enter a number between 1 and 4.");
}
} while (choice != 4);
}
return 0;
}
NSString * firmwareVersion()
獲取打印機的固件版本。
BOOL hasRfidOption()
檢查打印機是否具有 RFID 選項。
NSString * printheadResolution()
獲取打印機打印頭的分辨率。
NSString * model()
獲取打印機的型號。
NSString * firmwarePartNumber()
獲取打印機的固件部件號。
NSString * serialNumber()
獲取打印機的序列號。
提供與 RFID 相關的服務支持。模塊用於監聽/檢索與 RFID 相關的打印機非請求消息。
Definition RfidMonitor.h:53
void SetRfidReportListening:(BOOL value)
設置是否啟用 RFID 報告監聽。
Odv Monitor:
#import <Foundation/Foundation.h>
@import UniPRT;
int main(int argc, const char * argv[]) {
@autoreleasepool {
NSString *ipAddress = @"10.0.10.170";
TcpComm *tcpComm = [[
TcpComm alloc] initWithIPAddress:ipAddress port:DEFAULT_MGMT_PORT];
int choice = 0;
do
{
NSLog(@"\nMenu:");
NSLog(@"1 - Get Printer Info");
NSLog(@"2 - Listen to OdvReport");
NSLog(@"3 - Print example file");
NSLog(@"4 - Exit");
NSLog(@"Enter your choice (1-4):");
char buffer[10];
fgets(buffer, 10, stdin);
choice = atoi(buffer);
switch (choice) {
case 1: {
NSLog(@"\n======= ODV Printer Info: ");
NSLog(
@"Printer Model: %@", printerInfo.
model);
NSLog(
@"Has ODV: %@", printerInfo.
hasOdvOption ?
@"Yes" :
@"No");
break;
}
case 2: {
[NSThread detachNewThreadWithBlock:^{
odvMonitor.odvReportCallback = ^(OdvReport *report) {
if ([report failed]) {
NSLog(@"\nBarcode Failed.");
} else {
NSLog(@"\nBarcode Passed.");
NSLog(@"Grade: %f", [report overallGradeAsFloat]);
if ([report overallGradeAsFloat] > 3.5) {
NSLog(@"Print Quality passed. \n Overall Grade= %.2f", [report overallGradeAsFloat]);
} else {
NSLog(@"Print Quality Failed. \n Overall Grade= %.2f", [report overallGradeAsFloat]);
}
NSLog(@"Barcode Symbology: %@", [report symbology]);
NSLog(@"Barcode Data: %@", [report data]);
}
};
}];
break;
}
case 3: {
TcpComm *tcpComm2 = [[
TcpComm alloc] initWithIPAddress:@"10.0.10.171" port:9100];
[tcpComm2
sendPrintFile:@"10.0.10.171"
fileName:@"/Users/realbuber/Downloads/TestOdvMonitor/DM_PRINTRONIX_1.pgl"];
NSLog(@"Sending datamatrix barcode print job...");
break;
}
case 4:
NSLog(@"Exiting...");
break;
default:
NSLog(@"Invalid choice. Please enter a number between 1 and 4.");
}
} while (choice != 4);
}
return 0;
}
提供與 ODV 相關的服務支持。模塊用於監聽/檢索與 ODV 相關的打印機非請求消息。
Definition OdvMonitor.h:54
void SetOdvReportListening:(BOOL value)
設置是否啟用 ODV 報告監聽。
BOOL hasOdvOption()
檢查打印機是否具有 ODV(光盤驗證)選項。
Swift:
Printer Monitor:
import Foundation
import UniPRT
func main() {
let ipAddress = "10.0.10.170"
let tcpComm = TcpComm(ipAddress: ipAddress, port: 3007)
tcpComm?.open()
let printerMonitor = PrinterMonitor(tcpComm: tcpComm)
var choice = 0
repeat {
print("\nMenu:")
print("1 - Get Printer Info")
print("2 - Listen to Engine Status")
print("3 - Listen to Display Status")
print("4 - Listen to Alert Status")
print("5 - Print example file")
print("6 - Exit")
print("Enter your choice (1-6):")
if let input = readLine(), let number = Int(input.trimmingCharacters(in: .whitespaces)) {
choice = number
}
switch choice {
case 1:
if let prtInfo = printerMonitor?.getPrinterInfo() {
print("Printer Model: \(prtInfo.model() ?? "")")
print("Printer SN: \(prtInfo.serialNumber() ?? "")")
print("Printer FW PN: \(prtInfo.firmwarePartNumber() ?? "")")
print("Printer FW Ver: \(prtInfo.firmwareVersion() ?? "")")
print("Printhead Resolution (Dots/Inch): \(prtInfo.printheadResolution() ?? "")")
print("Has RFID: \(prtInfo.hasRfidOption() == true ? "Yes" : "No")")
print("Has ODV: \(prtInfo.hasOdvOption() == true ? "Yes" : "No")")
}
case 2:
DispatchQueue.global().async {
printerMonitor?.engineStatusCallback = { status in
print("Engine status update: \(status ?? "")")
}
printerMonitor?.setEngineStatusListening(true)
}
case 3:
DispatchQueue.global().async {
printerMonitor?.displayStatusCallback = { status in
print("Display status update: \(status?.joined(separator: ", ") ?? "")")
}
printerMonitor?.setDisplayStatusListening(true)
}
case 4:
DispatchQueue.global().async {
printerMonitor?.alertStatusCallback = { status in
print("Alert status update: \(status?.joined(separator: ", ") ?? "")")
}
printerMonitor?.setAlertStatusListening(true)
}
case 5:
let tcpComm2 = TcpComm(ipAddress: "10.0.10.171", port: 9100)
tcpComm2?.open()
tcpComm2?.sendPrintFile("10.0.10.171", fileName: "/Users/realbuber/Downloads/Hello_1.pgl")
print("Print file sent.")
case 6:
print("Exiting...")
default:
print("Invalid choice. Please enter a number between 1 and 6.")
}
} while choice != 6
}
main()
Rfid Monitor:
import Foundation
import UniPRT
func main() {
let ipAddress = "10.0.10.170"
let tcpComm = TcpComm(ipAddress: ipAddress, port: UInt(DEFAULT_MGMT_PORT))
tcpComm?.open()
let rfidMonitor = RfidMonitor(tcpComm: tcpComm)
let printerMonitor = PrinterMonitor(tcpComm: tcpComm)
var choice = 0
repeat {
print("\nMenu:")
print("1 - Get Printer Info")
print("2 - Listen to RfidReport")
print("3 - Print example file")
print("4 - Exit")
print("Enter your choice (1-4):")
if let input = readLine(), let inputNumber = Int(input.trimmingCharacters(in: .whitespacesAndNewlines)) {
choice = inputNumber
}
switch choice {
case 1:
let printerInfo = printerMonitor?.getPrinterInfo()
print("\n======= RFID Printer Info: ")
print("Printer Model: \(printerInfo?.model() ?? "")")
print("Printer SN: \(printerInfo?.serialNumber() ?? "")")
print("Printer FW PN: \(printerInfo?.firmwarePartNumber() ?? "")")
print("Printer FW Ver: \(printerInfo?.firmwareVersion() ?? "")")
print("Printhead Resolution (Dots/Inch): \(printerInfo?.printheadResolution() ?? "")")
print("Has RFID: \((printerInfo?.hasRfidOption() == true) ? "Yes" : "No")")
case 2:
DispatchQueue.global().async {
rfidMonitor?.rfidReportCallback = { report in
if ((report?.failed()) == nil) {
print("\nRFID Failed.")
} else {
print("\nRFID Passed.")
print("Write Action: \((report?.isWriteOperation() == true) ? "Yes" : "No")")
print("Data: \n\(report?.data() ?? "")")
}
}
rfidMonitor?.setRfidReportListening(true)
}
case 3:
let tcpComm2 = TcpComm(ipAddress: "10.0.10.206", port: 9100)
tcpComm2?.sendPrintFile("10.0.10.206", fileName: "/Users/realbuber/Documents/Project/UniPRT_python/example/rfid.pgl")
print("Sending RFID print job...")
case 4:
print("Exiting...")
default:
print("Invalid choice. Please enter a number between 1 and 4.")
}
} while choice != 4
}
main()
Odv Monitor:
import Foundation
import UniPRT
func main() {
let ipAddress = "10.0.10.170"
let tcpComm = TcpComm(ipAddress: ipAddress, port: UInt(DEFAULT_MGMT_PORT))
tcpComm?.open()
let odvMonitor = OdvMonitor(tcpComm: tcpComm)
let printerMonitor = PrinterMonitor(tcpComm: tcpComm)
var choice = 0
repeat {
print("\nMenu:")
print("1 - Get Printer Info")
print("2 - Listen to ODVReport")
print("3 - Print example file")
print("4 - Exit")
print("Enter your choice (1-4):")
if let input = readLine(), let inputNumber = Int(input.trimmingCharacters(in: .whitespacesAndNewlines)) {
choice = inputNumber
}
switch choice {
case 1:
let printerInfo = printerMonitor?.getPrinterInfo()
print("\n======= ODV Printer Info: ")
print("Printer Model: \(printerInfo?.model() ?? "")")
print("Printer SN: \(printerInfo?.serialNumber() ?? "")")
print("Printer FW PN: \(printerInfo?.firmwarePartNumber() ?? "")")
print("Printer FW Ver: \(printerInfo?.firmwareVersion() ?? "")")
print("Printhead Resolution (Dots/Inch): \(printerInfo?.printheadResolution() ?? "")")
print("Has ODV: \((printerInfo?.hasOdvOption() == true) ? "Yes" : "No")")
case 2:
DispatchQueue.global().async {
odvMonitor?.odvReportCallback = { report in
if report?.failed() == nil {
print("\nBarcode Failed.")
} else {
print("\nBarcode Passed.")
let overallGrade = report?.overallGradeAsFloat()
if overallGrade ?? 5 > 3.5 {
print("Print Quality passed. \n Overall Grade= \(String(format: "%.2f", overallGrade ?? 0))")
} else {
print("Print Quality Failed. \n Overall Grade= \(String(format: "%.2f", overallGrade ?? 0))")
}
print("Barcode Symbology: \(String(describing: report?.symbology()))")
print("Barcode Data: \(String(describing: report?.data()))")
}
}
odvMonitor?.setOdvReportListening(true)
}
case 3:
let tcpComm2 = TcpComm(ipAddress: "10.0.10.178", port: 9100)
tcpComm2?.sendPrintFile("10.0.10.178", fileName: "/Users/realbuber/Documents/doc/TestOdvMonitor/DM_PRINTRONIX_1.pgl")
print("Sending ODV print job...")
case 4:
print("Exiting...")
default:
print("Invalid choice. Please enter a number between 1 and 4.")
}
} while choice != 4
}
main()