65.9K
CodeProject 正在变化。 阅读更多。
Home

阿拉伯语在收据打印机上的快速打印

starIconstarIconstarIconstarIcon
emptyStarIcon
starIcon

4.11/5 (9投票s)

2002年5月28日

2分钟阅读

viewsIcon

123903

downloadIcon

2953

允许阿拉伯POS系统开发人员以最简单的方式在他们的收据打印机上工作。

演示程序的主屏幕。

引言

此控件专为那些正在开发收据打印机系统的阿拉伯开发人员设计,他们希望打印阿拉伯语/英语字符。此组件不使用打印机制造商提供的图形模式驱动程序。

它已在Citizen CBM系列上经过全面测试,并在Epson TM系列上进行测试。

该控件使用ESC命令,这是几种收据打印机制造商中最常见的命令。

历史

我们开发了一个POS软件,我们面临的问题之一是如何在收据打印机上打印阿拉伯字符,而无需使用Windows驱动程序,并且在同一行上打印阿拉伯语/英语,并考虑语言方向。所有这些都应该比Windows图形驱动程序更快。

所以,我们解决了这个问题。我们开发了VC++代码,并以一种巧妙的方式解决了这个问题。对于其他开发人员,我们制作了一个ActiveX控件来处理收据打印机。

用法

主要特点

开发人员可以使用下载到打印机中的字符集,但是如何避免这种麻烦呢?

  1. 它是ActiveX控件,可以嵌入到任何其他开发语言中。
  2. 它使用打印机的通用ESC命令,因此它可以与许多打印机品牌一起使用。
  3. 即使所需的语言字符集未下载到打印机ROM中,它也可以工作。我们在日本CBM打印机中心的Citizen收据打印机上打印了阿拉伯语,那里:打印机上没有阿拉伯字符集,也没有支持阿拉伯语的Windows操作系统!!
  4. 它不仅仅是阿拉伯语,它可以打印任何其他语言字符。首先,我们将字符下载到ActiveX中。除了英语之外。
  5. Windows操作系统根本不需要支持该语言。我们在Citizen Japan Ltd.上的Citizen收据打印机和Epson打印机上,在运行JP语言的Windows计算机上打印阿拉伯字符!
  6. 它非常容易使用,用户只需执行以下操作
    1. 将ActiveX插入到他的程序中。
    2. Control.Open (这里使用的 COM 端口 / LPT 端口)。
    3. 选择字符模式(32个国际字符,或扩展的79个字符用于阿拉伯数字)。
    4. 加载字符(控件打开后)。
    5. 选择要打印的语言并打印任何您想要的内容。
    6. 用户可以:打印空行,更改方向,跳行,打印有/无换行符,...

    在程序结束时,只需关闭控件即可。

示例代码

// The activeX control name is: PrnX for example

void InitPrn (CString pComPort)
{
    PrnX.OpenPort (pComPort);
    PrnX.Reset(); //Rest the printer


    //1 = 79 Figures(extended mode for Citizin CBM printers and similars)

    //2 = 32 Figures(restricted mode for Epson & 32

    //       International characters only)

    PrnX.SetChMode (1);

    PrnX.Init();
    //Initialize the printer status & buffer


    PrnX.LoadCharsDefs();
    //Load the international characters into the printer


}

void PrintText (CString pText, short pAllignment)
{
     // Left, Center, Right PrnX.SetAllignment (pAllignment);


     //vLines = Number of empty lines after the print operation. Can be Zero

     short vLines = 2;  

     // Print now as you want.

     // pText may be " any local/english text here

     // -arabic version here- " PrnX.CBMPrint (pText, vLines);


     //And can use PrnX.FeedLine(vLines) also


     //And can do PrnX.CutSheet() to cut the paper if the printer support it

}

void ClosePrnPort ()
{
  PrnX.ClosePort();
}

它非常简单,而且体积很小。

如果有人需要演示,我们很乐意立即发送演示版本。(现在存在阿拉伯字符,其他语言可根据要求提供。)

© . All rights reserved.