我有一个问题,如果我将硬编码字符串\x1B|200uF
作为参数传递,命令会正确接受它。
但是,当我将 XML 元素中的相同值检索到新的字符串变量中时,我得到以下值:\\x1B|200uF
如您所见,有一个额外的转义序列。
所以总结一下问题:
using (XmlReader xmlReader = XmlReader.Create(@"PosPrinter.xml"))
{
while (xmlReader.Read())
{
if (xmlReader.NodeType == XmlNodeType.Element)
{
switch (xmlReader.Name)
{
case "PosPrinter":
_printer.LogicalName = xmlReader.GetAttribute("LogicalName");
break;
case "FeedReceiptCommand":
_printer.FeedReceiptCommand = xmlReader.GetAttribute("value");
break;
我将值检索到我的“FeedReceiptCommand”字符串中,上面提到的值存储在 xml 中,但与开头的额外转义序列一样\x1B|200uF
被检索到字符串中。\\x1B|200uF
然后我使用字符串变量 FeedReceiptCommand 调用我的命令:
_posPrinter.PrintNormal(PrinterStation.Receipt, PrinterSettings.FeedReceiptCommand );
但是由于额外的转义序列,该命令不会执行。
但是,如果我用硬编码的值调用相同的命令:
_posPrinter.PrintNormal(PrinterStation.Receipt, "\x1B|200uF");
...然后命令成功执行..
该值\x1B|200uF
是使用 Microsoft.PointOfService 发送到 Epson TM-T88V 打印机的 ESC 命令,我认为 '\x' 代表十六进制,而 1B 是十六进制值。
我试图通过使用“Trim”、“Substring”来摆脱额外的转义序列,甚至使用 foreach 循环来循环字符串中的每个字符以构建一个新字符。我也试过字符串生成器。
但我在这里的某个地方错过了重点。
因此,我将不胜感激如何通过变量代替\x1B|200uF