将打印机命令存储为变量
Storing printer commands as a variable
我正在向 Boca 打印机发送 FGL print commands。
我对命令进行了硬编码,但如果需要,我希望有一些方法可以修改打印命令,除非整个打印命令使用票证列表,因此它是可变数据和打印命令的混合体。
是否可以将这种打印命令存储为变量的方式编写代码?谢谢
UPDATE:我减少了代码片段,因为打印命令实际上要长得多,然后意识到我真的只是想更改票证上的一行:“访问我们的地图、音频和更多内容在 foo.org/guide。”该文本很容易存储在配置文件中。另外,添加了 D Stanley.
的建议
int i = 0;
string printerCommands = "";
foreach (var ticket in tickets)
{
if (tickets.Count > 0)
{
if (i == tickets.Count - 1)
{
printerCommands = "<RU><RC600,200><QRV2><QR6,0,1,0>{" + ticket.uuid + "}<F3><HW1,1><RC380,760>" + ticket.eventName + "<RC340,760>" + ticket.ticketTypeName + "<RC300,760>$" + ticket.unitPrice + "<p>";
}
else
{
printerCommands = "<RU><RC600,200><QRV2><QR6,0,1,0>{" + ticket.uuid + "}<F3><HW1,1><RC380,760>" + ticket.eventName + "<RC340,760>" + ticket.ticketTypeName + "<RC300,760>$" + ticket.unitPrice + "<q>";
}
}
response = Transmit(printerCommands);
ps.status = response;
ps.dataPrinted = "uuid: " + ticket.uuid + ", eventDateTime: " + ticket.eventDateTime + ", eventName: " + ticket.eventName + ", ticketTypeName: " + ticket.ticketTypeName;
i++;
}
我不是很清楚你在找什么,但在我看来两者之间只有最后一个标签不同,所以你可以这样做:
printerCommands = "<RU><RC600,200><QRV2><QR6,0,1,0>{"
+ ticket.uuid + "}<F3><HW1,1><RC380,760>"
+ ticket.eventName + "<RC340,760>"
+ ticket.ticketTypeName + "<RC300,760>$"
+ ticket.unitPrice;
if (i == tickets.Count - 1)
{
printerCommands += "<p>";
}
else
{
printerCommands += "<q>";
}
可能还有一些方法可以简化初始字符串的创建 = 也许可以将标签和变量列表放入列表中?或者使用常量格式字符串并“注入”变量?
您也可以使用 Linq 生成命令,但这只是循环顶部的语法糖。如果它易于理解并且没有性能问题,那么在循环中构建字符串没有错。
我正在向 Boca 打印机发送 FGL print commands。
我对命令进行了硬编码,但如果需要,我希望有一些方法可以修改打印命令,除非整个打印命令使用票证列表,因此它是可变数据和打印命令的混合体。
是否可以将这种打印命令存储为变量的方式编写代码?谢谢
UPDATE:我减少了代码片段,因为打印命令实际上要长得多,然后意识到我真的只是想更改票证上的一行:“访问我们的地图、音频和更多内容在 foo.org/guide。”该文本很容易存储在配置文件中。另外,添加了 D Stanley.
的建议int i = 0;
string printerCommands = "";
foreach (var ticket in tickets)
{
if (tickets.Count > 0)
{
if (i == tickets.Count - 1)
{
printerCommands = "<RU><RC600,200><QRV2><QR6,0,1,0>{" + ticket.uuid + "}<F3><HW1,1><RC380,760>" + ticket.eventName + "<RC340,760>" + ticket.ticketTypeName + "<RC300,760>$" + ticket.unitPrice + "<p>";
}
else
{
printerCommands = "<RU><RC600,200><QRV2><QR6,0,1,0>{" + ticket.uuid + "}<F3><HW1,1><RC380,760>" + ticket.eventName + "<RC340,760>" + ticket.ticketTypeName + "<RC300,760>$" + ticket.unitPrice + "<q>";
}
}
response = Transmit(printerCommands);
ps.status = response;
ps.dataPrinted = "uuid: " + ticket.uuid + ", eventDateTime: " + ticket.eventDateTime + ", eventName: " + ticket.eventName + ", ticketTypeName: " + ticket.ticketTypeName;
i++;
}
我不是很清楚你在找什么,但在我看来两者之间只有最后一个标签不同,所以你可以这样做:
printerCommands = "<RU><RC600,200><QRV2><QR6,0,1,0>{"
+ ticket.uuid + "}<F3><HW1,1><RC380,760>"
+ ticket.eventName + "<RC340,760>"
+ ticket.ticketTypeName + "<RC300,760>$"
+ ticket.unitPrice;
if (i == tickets.Count - 1)
{
printerCommands += "<p>";
}
else
{
printerCommands += "<q>";
}
可能还有一些方法可以简化初始字符串的创建 = 也许可以将标签和变量列表放入列表中?或者使用常量格式字符串并“注入”变量?
您也可以使用 Linq 生成命令,但这只是循环顶部的语法糖。如果它易于理解并且没有性能问题,那么在循环中构建字符串没有错。