VS中存在Com口操作的控件,却未有现成的LPT端口控件,而相对COM口来说,LPT的速度要快,所以在打印的时候客户一般选择LPT通讯方式,经过网上的一些查阅,终于实现了LPT口的打印,打印机为Zebra,写出来与大家分享。其他品牌打印机原理类似,只是打印指令有所区别。

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;

namespace PrintDemo
{
    public partial class Form1 : Form
    {  
        public Form1()
        {
            InitializeComponent();
        }
        private void Form1_Load(object sender, EventArgs e)
        {
            tbBarCode.Focus();
        }
        private void tbBarCode_KeyDown(object sender,
            KeyEventArgs e)
        {
            switch (e.KeyCode)
            {
                case Keys.Enter:
                    PrintBarcode(tbBarCode.Text.Trim());
                    tbBarCode.Text = "";
                    tbBarCode.Focus();
                    break; 
                default:
                    break;
            }
        }
        private void PrintBarcode(string Barcode)
        {
            Barcode = "^XA^FO48,12^BY4^BCN,152,N,N^FD>;" +
                Barcode.Trim() + "^FS^FT62,220^CI0^ABN,44,28^FD" +
                Barcode.Trim() + "^FS^PQ1,0,1,Y^XZ";
            PrintDemo.POSPrinter prn = new
                PrintDemo.POSPrinter("LPT1");
            string strmsg = prn.PrintLine(Barcode);
            if (strmsg != "")
            {
                MessageBox.Show(strmsg);
            }
        }
    }
}
 
其中类POSPrinter定义如下
namespace PrintDemo
{
    class POSPrinter
    {
        const int OPEN_EXISTING = 3;
        string prnPort = "LPT1";
        [DllImport("kernel32.dll", CharSet = CharSet.Auto)]
        private static extern IntPtr CreateFile(string lpFileName,
            int dwDesiredAccess,
            int dwShareMode,
            int lpSecurityAttributes,
            int dwCreationDisposition,
            int dwFlagsAndAttributes,
            int hTemplateFile);
        public POSPrinter()
        {
            //   
            //   TODO:   在此处添加构造函数逻辑   
            //   
        }
        public POSPrinter(string prnPort)
        {
            this.prnPort = prnPort;//打印机端口   
        }
        public string PrintLine(string str)
        {
            IntPtr iHandle = CreateFile(prnPort, 0x40000000, 
                0, 0, OPEN_EXISTING, 0, 0);
            if (iHandle.ToInt32() == -1)
            {
                return "LPT1 Port Open Failed";
            }
            else
            {
                FileStream fs = new FileStream(iHandle, 
                    FileAccess.ReadWrite);
                StreamWriter sw = new StreamWriter(fs,
                    System.Text.Encoding.Default);   //写数据   
                sw.WriteLine(str);
                sw.Close();
                fs.Close();
                return "";
            }
        }
    }  
}

C#LPT指令打印条码——代码嵌套指令相关推荐

  1. 电脑识别指令和代码的原理

    电脑识别指令和代码的原理 一.前言 电脑代bai码,就du是让电脑执行的命令.可以让电脑执行相应zhi的命令.就电脑本身底层代码所言就dao是0和1,或者说二进制码.十六进制等等.还有汇编.C.C++ ...

  2. php发送指令,PHP发送AT指令实例代码

    需求: 发送短信到用户输入手机, 要求可以自定义信息内容 问题:没有电信猫, 使用免费api接口无法自定义短信内容 解决方案:通过4G网卡, 接在服务器上, 通过AT指令操作网卡, 发送短信 查阅发现 ...

  3. delphi 实现屏幕旋转代码_X86指令混淆之函数分析和代码块粉碎

    本文为看雪论坛优秀文章看雪论坛作者ID:三猫原理二进制分析的时候经常遇到经过混淆的函数,所以一直想自己学习实现一个简单的指令乱序demo,也不需要太复杂(其实就是自己菜而已).能阻止IDA F5党(就 ...

  4. 指令和数据都用二进制代码存放在内存中,从时空观角度回答CPU如何区分读出的代码是指令还是数据

     指令用来确定"做什么"和"怎样做",数据是"做"的时候需要原始数. 计算机可以从时间和空间两方面来区分指令和数据,在时间上,取指周期从 ...

  5. 代码 or 指令,浅析ARM架构下的函数的调用过程

    摘要:linux程序运行的状态以及如何推导调用栈. 1.背景知识 1.ARM64寄存器介绍: 2.STP指令详解(ARMV8手册): 我们先看一下指令格式(64bit),以及指令对于寄存机执行结果的影 ...

  6. FLASH(M25P16)-页编程(PP)指令时序代码及仿真波形(内含M25P16仿真模型文件)

    PP指令 pp是页编程指令:需要先打开写使能(0000_0110),发送PP指令号(0000_0010),后面给24位地址,然后接数据,时序图发送如下图所示. PP指令时序代码 //页编程(PP)指令 ...

  7. CPU如何区分读出的代码是指令还是数据

    计算机可以从时间和空间两方面来区分指令和数据,在时间上,取指周期从内存中取出的是指令,而执行周期从内存取出或往内存中写入的是数据,在空间上,从内存中取出指令送控制器,而执行周期从内存从取的数据送运算器 ...

  8. 开源免费代码_02_单摇杆远程遥控小车,基于Arduino的ESP-NOW,ESP32发送指令、ESP32接收指令,实现小车毫秒级完美控制_公羽兴

    发文希望能够帮忙物联网爱好者少走弯路,少被割韭菜.如果觉得此文对您有帮助的话帮忙点个赞,感谢!!! 哔哩哔哩网址:开源免费代码_02_单摇杆远程遥控小车,基于Arduino的ESP-NOW,ESP32 ...

  9. 开源免费代码_01_基于Arduino的ESP-NOW,ESP32发送指令、ESP-01S接收指令,通过ESP-01S继电器实现LED灯开关控制_公羽兴

    发文希望能够帮忙物联网爱好者少走弯路,少被割韭菜.如果觉得此文对您有帮助的话帮忙点个赞,感谢!!! 哔哩哔哩网址:开源免费代码_01_基于Arduino的ESP-NOW,ESP32发送指令.ESP-0 ...

最新文章

  1. HESSIAN 海森矩阵
  2. 聊聊Elasticsearch的ExponentiallyWeightedMovingAverage
  3. 绑定服务调用本地服务中的方法
  4. LeetCode(Java) 两数相加
  5. c++ 调用 ffmpeg 编程
  6. 现代化权限管理解决方案平台推动商业模式的演进
  7. Java jdbctemplate赋值_Spring 之 Spring JdbcTemplate的使用
  8. [转载]二叉树先序、中序、后序三种遍历的非递归算法
  9. 【BZOJ】【3850】ZCC Loves Codefires
  10. 虚拟专题:知识图谱 | DDoS攻击恶意行为知识库构建
  11. Linux学习之路01
  12. vs2008试用期到期解决办法
  13. python socket recv超时_python使用多线程编写tcp客户端程序,你还没掌握吗?
  14. jQuery中的end()
  15. iphonex适配游戏_Galaxy Fold应用适配大测试,这些软件超有远见!
  16. 徽州区数字城管平台智慧管理城市
  17. Linux计划任务以及进程检测与控制
  18. 计算机网络发现已关闭啥意思,电脑显示网络发现已关闭,是什么意思?怎样解决问题?...
  19. 双稳态继电器工作原理图_常见的继电器及工作原理
  20. python爬虫简单入门级,小白讲说

热门文章

  1. 短视频全自动剪辑制作视频渲染语音同步AE混剪
  2. vim编辑器使用手册
  3. 简单认识c语言的概念
  4. 郑州大学“战役杯”第一次比赛题解
  5. 爬取豆瓣电影TP250(文字信息+保存图片)
  6. 数据库优化的几种方式
  7. python可以实现什么炫酷图形吗_如何把图片变得炫酷多彩,Python教你这样实现!...
  8. Difference between ReLU、LReLU、PReLU、CReLU、ELU、SELU
  9. vue+element实现导入和导出excel
  10. C++設計模式——觀察者模式