下面是我开发的条码打印程序用到的条码打印类
using System;
using System.IO;
using System.Collections.Generic;
using System.Text;

namespace Barcode
{
/*条码打印命令说明
^XA                           //条码打印指令开始
^MD30                         //设置色带颜色的深度, 取值范围从-30到30
^LH60,10                      //设置条码纸的边距
^FO20,10                      //设置条码左上角的位置
^ACN,18,10                    //设置字体
^BY1.4,3,50                   //设置条码样式。1.4是条码的缩放级别,3是条码中粗细柱的比例, 50是条码高度
^BC,,Y,N                      //打印code128的指令
^FD12345678^FS                //设置要打印的内容, ^FD是要打印的条码内容^FS表示换行
^XZ                           //条码打印指令结束
*/                            //上面的指令会打印12345678的CODE128的条码
    public class BarcodePrint
    {
        [System.Runtime.InteropServices.StructLayout(System.Runtime.InteropServices.LayoutKind.Sequential)]
        private struct OVERLAPPED
        {
            int Internal;
            int InternalHigh;
            int Offset;
            int OffSetHigh;
            int hEvent;
        }
        [System.Runtime.InteropServices.DllImport("kernel32.dll")]
        private static extern int CreateFile(string lpFileName, uint dwDesiredAccess, int dwShareMode, int lpSecurityAttributes, int dwCreationDisposition, int dwFlagsAndAttributes, int hTemplateFile);
        [System.Runtime.InteropServices.DllImport("kernel32.dll")]
        private static extern bool WriteFile(int hFile, byte[] lpBuffer, int nNumberOfBytesToWrite, out int lpNumberOfBytesWritten, out OVERLAPPED lpOverlapped);
        [System.Runtime.InteropServices.DllImport("kernel32.dll")]
        private static extern bool CloseHandle(int hObject);
        private int iHandle;
        public bool Open()
        {
            iHandle = CreateFile("LPT1:", (uint)FileAccess.ReadWrite, 0, 0, (int)FileMode.Open, 0, 0);
            if (iHandle != -1)
            {
                return true;
            }
            else
            {
                return false;
            }
        }
        public bool Write(string Mystring)
        {
            if (iHandle != -1)
            {
                int i;
                OVERLAPPED x;
                byte[] mybyte = System.Text.Encoding.Default.GetBytes(Mystring);
                return WriteFile(iHandle, mybyte, mybyte.Length, out i, out x);
            }
            else
            {
                throw new Exception("LPT1端口未打开!");
            }
        }
        public bool Close()
        {
            return CloseHandle(iHandle);
        }
    }
}

如何打印中文见下:使用GETFONTHEX函数
函数使用之C#原型:
        [DllImport("fnthex32.dll")]
        public static extern int GETFONTHEX(
                              string BarcodeText,
                              string FontName,
                              string FileName,
                              int Orient,
                              int Height,
                              int Width,
                              int IsBold,
                              int IsItalic,
                              StringBuilder ReturnBarcodeCMD);

调用打印汉字,下面代码将会打印“测试”二个汉字
            string sBarCodeCMD = "";            //条码打印命令
            StringBuilder sb1 = new StringBuilder(10240);
            int i1;
            i1 = GETFONTHEX("测试","宋体","temp1",0,30,20,0,0,sb1);

sBarCodeCMD = sb1.ToString() + "^XA^MD30^LH20,20^FO20,20^XGtemp1,1,1^FS^XZ";

=======================================================================================

调用后出现:“尝试读取或写入受保护的内存。这通常指示其他内存已损坏。”的提示

我最开始不会用时,也遇到过这个提示

函数使用之C#原型:
[DllImport("fnthex32.dll")]
public static extern int GETFONTHEX(
string BarcodeText,
string FontName,
string FileName,
int Orient,
int Height,
int Width,
int IsBold,
int IsItalic,
StringBuilder ReturnBarcodeCMD);

注意函数原型声明在C#中是这个样子

若打错了,可能会有错吧

再注意我是将fnthex32.dll文件放在我开发的条码软件的安装目录下的
不知是否有这原因,你可试试

最后
StringBuilder sb1 = new StringBuilder(10240);

如果StringBuilder的容量设置太小,可能会出错
我在用时
StringBuilder sb1 = new StringBuilder(1024);
就出现过错误

我改为
StringBuilder sb1 = new StringBuilder(2048);
错误就消失了

以上是我使用时遇到的一些问题及我的解决方法,请参考
=============================================================

不知哪个“temp1”如何使用?

调用打印汉字,下面代码将会打印“测试”二个汉字
string sBarCodeCMD = ""; //条码打印命令
StringBuilder sb1 = new StringBuilder(10240);
int i1;
i1 = GETFONTHEX("测试","宋体"," temp1 ",0,30,20,0,0,sb1);
sBarCodeCMD = sb1.ToString() + "^XA^MD30^LH20,20^FO20,20^XG temp1 ,1,1^FS^XZ";

注意红色的temp1,

如果前面是temp1,后面就应该是temp1
如果前面是temp2,后面就应该修改为temp2

========================================================================================

fnthex32.dll 有两个版本一个8个参数和9个参数的,此例要用到9参数的。如果选错了dll会出现前面所说的调用后出现:“尝试读取或写入受保护的内存。这通常指示其他内存已损坏。”的提示。

让更多的人知道如何用C#操作斑马条码打印机相关推荐

  1. 分享经验,让更多的人受益

    最近由于失业,所以特别多想法.在这段时间里有着很多很多想法,今天先把它记住.今天的主题是"分享经验,让更多的人受益".找工作碰壁了,发现了最近几年来所学到知识跟社会出现一定的脱轨现 ...

  2. 苹果手机iphone丢失被诈骗经历,警醒更多的人

    本人朋友于2020年12月25日在陕西省西安市大寨路等待公交的过程中手机被盗,下面讲述下盗窃诈骗的经历,提醒更多的人警醒. 手机丢失后定位出现在陕西省西安市太和路紫薇东进2期 由于设置了丢失模式并设置 ...

  3. 怎么让更多的人填写问卷?

    解决了调查问卷制作这个难题,怎么让更多的人填写又是一个让人头大的难题.那有什么好的方式可以帮助我们尽可能地让更多的人填写问卷额,我整理了以下方法: 1.调查问卷尽可能做的美观一些. 设想一下,如果我们 ...

  4. 为什么工作让某些人快乐,让更多的人痛苦?

    为什么爱情让一些人快乐,却让另些人烦恼?为什么工作让某些人快乐,让更多的人痛苦?其实快乐和悲伤并不在于事本身,而在于经历事的人.有些人太聪明太认真,就会陷入各种痛苦.聪明的林妹妹一辈子流泪,傻傻的还珠 ...

  5. 爱眼护眼的倡导者,康瞳护眼吧引领更多的人关注眼部健康

    爱眼护眼的倡导者,康瞳护眼吧引领更多的人关注眼部健康#微信热点#康瞳护眼膏@百收网SEO 大家早上好有好消息告诉大家 人民日报连续❷大版面报道

  6. 网络版EXCEL订单业务系统实战(多人网络同时分权限操作同一个EXCEL文件)-张涛-专题视频课程...

    网络版EXCEL订单业务系统实战(多人网络同时分权限操作同一个EXCEL文件)-99人已学习 课程介绍         课程以一个外贸公司订单业务为背景,系统的讲解了一个基于公司原有EXCEL模版为基 ...

  7. 如何用java操作Redis缓存设置过期时间

    如何用java操作Redis缓存设置过期时间?很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获. 在应用中我们会需要使用red ...

  8. 华为怎么分屏操作技巧_糖豆人终极淘汰赛扒拉怎么操作 扒拉抓人技巧介绍

    糖豆人终极淘汰赛扒拉怎么操作?游戏中拉拔抓人是玩家们都会的基础操作,但是总会有抓空的时候,甚至还导致自己失败了,那么下面带来扒拉抓人技巧介绍,快一起来了解一下吧. 糖豆人终极淘汰赛相关推荐: 糖豆人终 ...

  9. 信息论与编码课件,希望传播给更多的人

    可能有些图片打不开,链接:https://pan.baidu.com/s/1azDGIkaZRVKbMMGHacNucw  提取码:1111                 附上链接,传播知识,知识无 ...

最新文章

  1. 侠客X官方网站成立,第一个内测版本即将放出,敬请期待.
  2. php和python和java-python和java,php,c,c#,c++的对比
  3. “蚂蚁漫步”背后的定位原理思考
  4. mysql-数据库操作-连接-创建-删除-修改编码-查询-切换
  5. python合并word全部_python:怎样合并文档中有重复部分的行?
  6. Xamarin 设置可接受的版本
  7. OpenCV模板匹配方法原理
  8. 密码领域专用语言 ZUC算法
  9. 信息学奥赛研究1:竞赛时间表、学习规划
  10. 结合模电分析电流源电路(简单晶体管电流源,Howland电流源,压控电流源)
  11. java休闲游戏背景音乐推荐_休闲益智类游戏背景音乐推荐
  12. 联想和柳传志的5G标准投票辩白和抗争为啥那么苍白?
  13. 钉钉机器人关键字自动回复_【原创新软件】办公引流机器人个人微信企业微信QQ通用的自动回复,群发助手...
  14. x20手机科学计算机,360手机N4 跑分遭泄露 Helio X20名不虚传
  15. “8421码 5421码 2421码 余3码”区别
  16. R语言随机抽样sample
  17. Mendix敏捷开发零基础学习《二》-进阶(Microflow微流、表单验证、运算符、条件判断、数据嵌套、触发器、Debug问题跟踪、版本管理)
  18. R语言基于lm模型构建线性回归模型(蟋蟀的鸣叫声与温度的关系)、计算回归模型的RMSE指标、计算回归模型的R方指标(R-squared)
  19. JavaScript创始人Brendan Eich访谈录(转)
  20. ubuntu apt 下载所有依赖包

热门文章

  1. Android studio模拟器尺寸和真机不一样的原因
  2. 联通云的七大“场景云”,能让用户实现云计算自由吗?
  3. python入门三剑客怎么样_python三剑客
  4. word文档中的页码问题
  5. 丽思·卡尔顿:是如何创造出忠诚顾客人均120万美元的终身消费的?
  6. 主动推迟面试时间是面试的大忌
  7. 分享一个短视频在线去水印接口
  8. mybatis-plus中and和or的使用
  9. 【絮叨.1】同时在写四门语言是怎样一种体验?
  10. linux sda sda1区别,linux – / dev / sda和/ dev / sda1之间的区别