将阿拉伯语字母发送到串口 [英] send arabic letter to serial port

查看:85
本文介绍了将阿拉伯语字母发送到串口的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我使用datamax打印机,我通过c#软件发送到串口打印阿拉伯语标签



serialPort1.PortName =COM1;

serialPort1.BaudRate = 9600;

serialPort1.Open();

//serialPort1.Encoding = Encoding.GetEncoding(windows-1256);

serialPort1.Encoding = Encoding.ASCII;

serialPort1.Write(\ x02+L+\ x0D);

serialPort1.Write(D12+\ x0D);



serialPort1.Write(H20+\ x0D);

string test_arab =الحملله;

serialPort1.Write(190000202600010+ test_arab +\ x0D); // text

// serialPort1.Write(B+ test_arab +\ x0D);

serialPort1.Write(Q+''+ test_arab +\ x0D);

serialPort1.Write(E+\ x0D);

serialPort1.Close();





这样的标签结果???????



如何打印阿拉伯文,如الحمدلله

I use datamax printer , I send to serial port by c# software to print arabic in labels

serialPort1.PortName = "COM1";
serialPort1.BaudRate = 9600;
serialPort1.Open();
//serialPort1.Encoding = Encoding.GetEncoding("windows-1256");
serialPort1.Encoding = Encoding.ASCII;
serialPort1.Write("\x02" + "L" + "\x0D");
serialPort1.Write("D12" + "\x0D");

serialPort1.Write("H20" + "\x0D");
string test_arab = "الحملله";
serialPort1.Write("190000202600010 " + test_arab + "\x0D");//text
//serialPort1.Write("B" + test_arab + "\x0D");
serialPort1.Write("Q" + ' ' + test_arab + "\x0D");
serialPort1.Write("E" + "\x0D");
serialPort1.Close();


the result in labels like this "???????"

how can i print arabic like "الحمد لله"

推荐答案

感谢所有

解决方案...

///////////////////////////////////// //////////////////////////////

serialPort1.Open();

serialPort1.Encoding = Encoding.GetEncoding(ASMO-708);

serialPort1.Write(\ x02+L+\ x0D);

serialPort1.Write(D12+\ x0D);

serialPort1.Write(H20+\ x0D);

serialPort1.Write(ySPR+\ x0D);

string test_arab =مصرجميلة;

string test_arab2 =ثورتنا25;

serialPort1.Write(1911SA001900050P020P020+ a.Arabize(test_arab)+\ x0D);

serialPort1。写(1911SA001100050P020P020+ a.Arabize(test_arab2)+\ x0D);

serialPort1.Write(Q+\ x0D);

serialPort1.Write(E+\ x0D);

serialPort1.Close();
Thanks to all
the solution...
///////////////////////////////////////////////////////////////////
serialPort1.Open();
serialPort1.Encoding = Encoding.GetEncoding("ASMO-708");
serialPort1.Write("\x02" + "L" + "\x0D");
serialPort1.Write("D12" + "\x0D");
serialPort1.Write("H20" + "\x0D");
serialPort1.Write("ySPR" + "\x0D");
string test_arab = "مصر جميلة";
string test_arab2 = "ثورتنا 25";
serialPort1.Write("1911SA001900050P020P020" + a.Arabize(test_arab) + "\x0D");
serialPort1. Write("1911SA001100050P020P020" + a.Arabize(test_arab2) + "\x0D");
serialPort1.Write("Q" + "\x0D");
serialPort1.Write("E" + "\x0D");
serialPort1.Close();


这很简单:Perso-Arabic脚本是根本不用ASCII表示。对于所有现代系统,您需要使用Unicode,并使用一些Unicode UTF进行编码。



此外,我不确定您的打印机是否直接支持此脚本即使它确实如此,我也不知道需要什么编码。解决打印机文档。如果不支持该脚本,您可能需要在图形中打印所有此类数据。



-SA
This is simple: Perso-Arabic script is not represented in ASCII at all. With all modern systems, you need to use Unicode, and for encoding, some Unicode UTF.

Also, I'm not sure that your printer supports this script directly and, even if it does, I have no idea what encoding is required. Address the printer documentation. If the script is not supported, you may need to print all such data in graphics.

—SA

您需要与制造商交谈:串口数据没有任何内在的字体信息 - 它甚至没有Windows和C#与Unicode一起使用的字符集。



只有制造商可以告诉你,因为它可能因型号而异,所以从不关注制造商到制造商 - 这就是为什么几乎总是通过制造商提供的设备驱动软件来完成打印的原因作为硬件的软件安装。
You need to talk to the manufacturers: Serial port data doesn't have any intrinsic "font" information - it doesn't even have a character set in the sense that Windows and C# does with Unicode.

Only the manufacturers can tell you that as it can vary from model to model, never mind manufacturer to manufacturer - which is why printing almost always is done via device driver software provided by the manufacturer as a software installation with the hardware.


这篇关于将阿拉伯语字母发送到串口的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆