社区
C#
帖子详情
串口打印条码问题
凹加凸等于啥
2015-10-16 01:37:57
打印机是:酷道5803 安卓版 蓝牙打印机,支持ESC/POS打印指令,不知道是不是该打印机不支持条码的ESC指令还是什么问题,通过网上找的条码指令打印出来都是文字,并不是条码,很纠结,急!!!!!!!!!!!!!!!!!1[/u]
...全文
224
2
打赏
收藏
串口打印条码问题
打印机是:酷道5803 安卓版 蓝牙打印机,支持ESC/POS打印指令,不知道是不是该打印机不支持条码的ESC指令还是什么问题,通过网上找的条码指令打印出来都是文字,并不是条码,很纠结,急!!!!!!!!!!!!!!!!!1[/u]
复制链接
扫一扫
分享
转发到动态
举报
AI
作业
写回复
配置赞助广告
用AI写文章
2 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
凹加凸等于啥
2015-10-16
打赏
举报
回复
谢谢,,我已经解决了,,方式和你这个一样的,,
angel6709
2015-10-16
打赏
举报
回复
引用了Gma.QrCodeNet.Encoding自己网上找 /// <summary> /// ESC K ///[名称] 打印点阵图形 ///[格式] ASCII:ESC K n1 n2 …data… 十进制:27 75 n1 n2 …data… ///十六进制: 1B 4B n1 n2 …data… ///[说明] ///该命令打印n1×8点阵图形。该图形的宽度为n1点,高度为8点。每一列的8个点可以由一个 ///8位的字节来表示,最高位在上。 ///n1,n2的数值代表一个16位的二进制数,n1为低8位字节,n2为高8位字节,表示ESC K ///命令要打印的图形宽度为n2×256+n1。n2应是0或1,点数之和小于等于384,若超出则自动 ///清除。n1应在1到该机型的每行最大点数之间。 ///Data是该点阵图形从左到右每列的字节内容,字节数应等于n1。 ///当图形的高度大于8点时,可按每8点行一个图形单元划分成多个单元。不足8点的用空点补 ///齐。然后按顺序每个图形单元分别用ESC K命令打印出来,最后组成一个完整的图形。 ///[注意] ///当采用反向打印方式时,要按图形从下到上的顺序依次打印每个图形单元。 /// </summary> /// <param name="width"></param> /// <param name="bitmap"></param> public void PrintBitmap(ushort width, byte[] bitmap) { byte[] data = new byte[bitmap.Length + 4]; data[0] = 27; data[1] = 75; data[2] = (byte)width; data[3] = (byte)(width >> 8); Array.Copy(bitmap, 0, data, 4, bitmap.Length); _sender.SendData2Printer(data); } public void PrintBitmap(Bitmap bitmap) { if (bitmap.Width > 384) { throw new Exception("Width>384"); } ushort width = (ushort)bitmap.Width; for (int i = 0; i < bitmap.Height; i += 8) { byte[] bts = new byte[width]; for (int j = 0; j < bitmap.Width; j++) { for (int k = 0; k < 8; k++) { Color c = bitmap.GetPixel(j, k + i); if (c.GetBrightness() < 0.3) { bts[j] = (byte)(bts[j] | (1 << k)); } } } Return(); PrintBitmap(width, bts); } } public void Print2DCode(int maxWidth, string content) { QrCode code = null; new QrEncoder(ErrorCorrectionLevel.H).TryEncode(content, out code); int pointWidth = maxWidth / code.Matrix.Width; var bars = TranslateFromMatrix(code.Matrix, pointWidth); var height = (code.Matrix.Width * pointWidth) / 8 + ((code.Matrix.Width * pointWidth) % 8 == 0 ? 0 : 1); var width = code.Matrix.Width * pointWidth; for (int r = 0; r < height; r++) { byte[] bts = new byte[width]; for (int c = 0; c < width; c++) { bts[c] = 0; for (int i = 0; i < 8; i++) { if (r * 8 + i < width) { bts[c] = (byte)(bts[c] + ((bars[r * 8 + i, c] ? 1 : 0) << i)); } } } PrintBitmap((ushort)(width), bts); Return(); } } private bool[,] TranslateFromMatrix(BitMatrix matrix, int width) { bool[,] ret = new bool[matrix.Width * width, matrix.Width * width]; for (int c = 0; c < matrix.Width; c++) { for (int r = 0; r < matrix.Height; r++) { for (int cc = 0; cc < width; cc++) { for (int rr = 0; rr < width; rr++) { ret[c * width + cc, r * width + rr] = matrix[c, r]; } } } } return ret; } public void Print2DCode(string content) { QrCode code = null; new QrEncoder(ErrorCorrectionLevel.H).TryEncode(content, out code); byte[,] bts = new byte[code.Matrix.Width, code.Matrix.Width * 8]; for (int i = 0; i < code.Matrix.Height; i += 1) { for (int j = 0; j < code.Matrix.Width; j++) { // if (i < 8 || i >= 13 || j < 8 || j >= 13) { byte b = (byte)(code.Matrix[j, i] ? 255 : 0); for (int k = j * 8; k < j * 8 + 8; k++) { bts[i, k] = b; } } } } byte[] bs = new byte[code.Matrix.Width * 8]; for (int i = code.Matrix.Width - 1; i >= 0; i--) { for (int j = 0; j < code.Matrix.Width * 8; j++) { bs[j] = bts[i, j]; } PrintBitmap((ushort)(code.Matrix.Width * 8), bs); Return(); } } /// <summary> /// ESC E ///[名称] 打印条型码 ///[格式] ASCII: ESC E nq nc n1 n2 n3…nk NUL ///十进制: 27 69 nq nc n1 n2 n3…nk 0 ///十六进制: 1B 45 nq nc n1 n2 n3…nk 00 ///[说明] ///nq:条码第1条线离打印纸端的距离(点)。N的值应在0到64之间。 ///nc:条码线纵向高度(点)。n的值应在1到255之间。 ///nk:第k个条码线的参数: ///高4位(D7~D4)与前一个条码线之间的空白点数。n的值应在1到15之间。 ///低4位(D3~D0)该条码线的宽度(点)。K为条码线数量,k的值应在1到15之间。 ///[注意] ///本命令只适用热敏系列。 /// </summary> /// <param name="bardata"></param> /// <param name="nq"></param> /// <param name="nc"></param> public void PrintBarCode(byte nq, byte nc, byte[] bardata) { var bar = bardata.Select(a => (byte)a).ToArray(); byte[] data = new byte[bar.Length + 5]; data[0] = 27; data[1] = 69; data[2] = nq; data[3] = nc; data[data.Length - 1] = 0; Array.Copy(bar, 0, data, 4, bar.Length); _sender.SendData2Printer(data); }
JAVA
串口
(LPT1)
打印
机
打印
条形码 源码
java通过
串口
(LPT1)连接小票
打印
机 ,
打印
商品摘要信息及条形码
易语言
串口
打印
指令
在易语言中,通过
串口
打印
指令,我们可以将数据发送到支持
串口
打印
的设备,如
打印
机、条形码扫描器等。这一功能主要涉及以下几个核心知识点: 1. **
串口
初始化**:在使用
串口
前,我们需要先进行初始化操作,设置...
CSharp/C#调用TSC
条码
打印
机 dll动态库文件
打印
条形码
本教程将深入探讨如何使用C#(CSharp)语言调用TSC
条码
打印
机的DLL动态库文件来
打印
条形码。TSC是一家知名的
条码
打印
机制造商,其提供的DLL文件使得开发者能够方便地在自己的应用程序中集成
打印
功能。 首先,我们...
java实现zebra
打印
条形码
ZXing是一个全面的
条码
处理库,不仅支持生成,还支持读取
条码
,而Barbecue则专注于生成条形码,更加轻量级。 2. **Zebra编程语言**:Zebra
打印
机支持自己的编程语言,称为ZPL(Zebra Programming Language)或EPL...
VB通过
串口
读取条形码
在VB(Visual Basic)编程中,通过
串口
(Serial Port)读取条形码是一种常见的实践,这在自动化数据采集、库存管理、生产线监控等场景中广泛应用。
串口
通信允许VB程序与硬件设备如条形码扫描器进行交互,接收扫描器...
C#
111,097
社区成员
642,554
社区内容
发帖
与我相关
我的任务
C#
.NET技术 C#
复制链接
扫一扫
分享
社区描述
.NET技术 C#
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
让您成为最强悍的C#开发者
试试用AI创作助手写篇文章吧
+ 用AI写文章