将打印机命令存储为变量

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 生成命令,但这只是循环顶部的语法糖。如果它易于理解并且没有性能问题,那么在循环中构建字符串没有错。