首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用C#向TRITON 60系列60 mm小型信息亭打印机发送Ascii命令

如何使用C#向TRITON 60系列60 mm小型信息亭打印机发送Ascii命令
EN

Stack Overflow用户
提问于 2015-01-13 15:06:21
回答 1查看 277关注 0票数 1

我需要发送Ascii命令到TRITON 60系列60毫米微型信息亭,并希望获得使用C#代码的状态

例如:"DLE EOT SOH“这是用于获取打印机实时状态的ascii代码,如何使用C#将此命令发送到打印机并获取打印机的状态。

EN

回答 1

Stack Overflow用户

发布于 2015-01-13 19:54:57

根据我在网上找到的一台Axiohm 60 data sheet,这台打印机与通过USB或RS232设置的ESC/POS命令集兼容。

一个叫Nicholas Piasecki的人有一个博客,他在博客上谈到了如何将数据发送到支持此命令集的打印机。来自他的blog entry的代码是这样的(参见末尾的“将文档发送到打印机”):

代码语言:javascript
复制
private static void Print(string printerName, byte[] document)
{
    NativeMethods.DOC_INFO_1 documentInfo;
    IntPtr printerHandle;

    documentInfo = new NativeMethods.DOC_INFO_1();
    documentInfo.pDataType = "RAW";
    documentInfo.pDocName = "Bit Image Test";

    printerHandle = new IntPtr(0);

    if (NativeMethods.OpenPrinter(printerName.Normalize(), out printerHandle, IntPtr.Zero))
    {
        if (NativeMethods.StartDocPrinter(printerHandle, 1, documentInfo))
        {
            int bytesWritten;
            byte[] managedData;
            IntPtr unmanagedData;

            managedData = document;
            unmanagedData = Marshal.AllocCoTaskMem(managedData.Length);
            Marshal.Copy(managedData, 0, unmanagedData, managedData.Length);

            if (NativeMethods.StartPagePrinter(printerHandle))
            {
                NativeMethods.WritePrinter(
                    printerHandle,
                    unmanagedData,
                    managedData.Length,
                    out bytesWritten);
                NativeMethods.EndPagePrinter(printerHandle);
            }
            else
            {
                throw new Win32Exception();
            }

            Marshal.FreeCoTaskMem(unmanagedData);

            NativeMethods.EndDocPrinter(printerHandle);
        }
        else
        {
            throw new Win32Exception();
        }

        NativeMethods.ClosePrinter(printerHandle);
    }
    else
    {
        throw new Win32Exception();
    }
}

它基本上是一堆P/Invoke调用(他在他的博客文章中提供了示例代码的链接),允许您将原始数据发送到指定的打印机(假设是通过USB,如果打印机是这样连接的)。我知道打印机型号与你的不同,但希望通讯技术是相似的。

我建议阅读他的文章,下载并检查他的示例代码,看看是否有任何可能对您有帮助的东西。特别是,他有指向ESC/POS命令和编程指南的链接,如果您还没有这些链接,这些链接可能会很有用。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27916596

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档