Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/317.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/187.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 使用蓝牙热敏打印机写入命令ESC/POS_C#_Android_Bluetooth_Escpos - Fatal编程技术网

C# 使用蓝牙热敏打印机写入命令ESC/POS

C# 使用蓝牙热敏打印机写入命令ESC/POS,c#,android,bluetooth,escpos,C#,Android,Bluetooth,Escpos,我尝试将默认代码页更改为PC858(多语言+欧元)以打印符号€ 但是任何ESC/POS命令都可以工作 所以我尝试发送命令的十六进制值: public void EnvoiCommande(byte donnee) { byte[] array = {donnee}; _outStream.Write(array, 0, 1); _outStream.Flush(); } public void Impressi

我尝试将默认代码页更改为PC858(多语言+欧元)以打印符号€

但是任何ESC/POS命令都可以工作

所以我尝试发送命令的十六进制值:

    public void EnvoiCommande(byte donnee)
    {
        byte[] array = {donnee};
        _outStream.Write(array, 0, 1);
        _outStream.Flush();
    }



    public void ImpressionTicket(List<string> donnee, string appareil, Texture2D logo)
    {
      // Code Page
      EnvoiCommande(0x1b);
      EnvoiCommande(0x74);
      EnvoiCommande(0x13);

      foreach (var txt in donnee)
      {
         var ligne = txt;
         Encoding encoding = Console.OutputEncoding;
         byte[] originalBytes = encoding.GetBytes(ligne);
         byte[] outputBytes = Encoding.Convert(encoding,
         Encoding.GetEncoding("CP00858"), originalBytes);
         _outStream.Write(outputBytes, 0, outputBytes.Length);
         Thread.Sleep(10);
      }
    }
public void envoice命令(字节donnee)
{
字节[]数组={donnee};
_扩展流写入(数组,0,1);
_冲水;
}
public void ImpressionTicket(列表donnee、弦乐器、纹理2D徽标)
{
//代码页
环境命令(0x1b);
环境命令(0x74);
环境命令(0x13);
foreach(donnee中的var txt)
{
var ligne=txt;
编码编码=Console.outputenecoding;
byte[]originalBytes=encoding.GetBytes(ligne);
字节[]输出字节=编码。转换(编码,
Encoding.GetEncoding(“CP00858”),原始字节);
_outStream.Write(outputBytes,0,outputBytes.Length);
睡眠(10);
}
}
我所有的文字都打印正确,但我的符号无效


提前感谢您的帮助,我尝试了许多PDF,并测试了许多类似的问题,但都不起作用。

Encoding.GetEncoding返回一个您必须使用的值。

您是否尝试只发送字节码欧元,以查看是否有正确的代码页

如果您尝试打印0xD5,并且获得了欧元符号,则是,您拥有正确的代码页

然后我们知道问题是当您将字符串转换为byteArray时,请检查以下内容:

unicode中的欧元为:0x20AC,即0xE2 0x82 0xAC。因此,欧元符号转换为3个字节,对打印机具有其他含义。打印机可能会打印这个“ÔÔ¼”

如果只有欧元符号有问题,只需在将字符串转换为字节[]之前检查字符串即可

if (ligne.contains("€"){
    ligne.replace("€",(char)0xD5);
}
一次性发送“字符表命令”:

public void EnvoiCommande(params byte[] donnees)
{
   _outStream.Write(donnees, 0, 1);
   _outStream.Flush();
}

// Code Page
EnvoiCommande(0x1b, 0x74; 0x13);

我真的不明白,我用CP00858(OEM858)转换我的文本,但我得到了带有欧元符号和重音的中文字符。当我发送命令ESC/POS任何工作时,我的打印机会打印这样的内容:啊,谢谢,是的,我尝试过,所以为了解决这个问题,我买了另一台打印机,这就是工作。旧打印机在我更改页面代码时不保存页面代码。(BT-PRINT)