admin 管理员组文章数量: 887031
2024年1月14日发(作者:免费资源excel自学教程)
打印机(条码)打印标签、条码的方式一种是通过驱动发送图形的方式(这时一般需要排版软件),另一种是无需驱动直接通过发送指令到打印机执行打印。这里就是采取第二种方式打印。下面把实现过程中遇到的问题和一些心得总结一下:本实例使用DataMax-i-4308打印机。
1. VS(2008)中存在Com口操作的控件,却未有现成的LPT端口控件,而相对COM口来说,LPT的速度要快,所以在打印的时候客户一般选择LPT通讯方式,经过网上的一些查阅,终于实现了LPT口的打印,其他品牌打印机原理类似,只是打印指令有所区别。
实现LPT端口指令打印的方式是采用Windows下的API函数CreateFile,该函数要实现并口操作,需要设置几个关键参数。函数原型为:
HANDLE WINAPI
CreateFile( LPCTSTRlpFileName, DWORDdwDesiredAccess, DWORDdwShareMode, LPSECURITY_ATTRIBUTESlpSecurityAttributes, DWORDdwCreationDisposition, DWORDdwFlagsAndAttributes, HANDLEhTemplateFile);
LPT操作需要设置:
lpFileName应设为端口号;如"LPT1"或者"COM3"等;
dwDesiredAccess设为GENERIC_WRITE或者GENERIC_READ或者GENERIC_WRITE|GENERIC_READ。
dwCreationDisposition应设为OPEN_EXISTING。
hTemplateFile需要设为NULL或者0。
在C#中使用API需要做一个dll库的使用声明,例:
[DllImport(" ")]
private static extern int CreateFile( string lpFileName, uint
dwDesiredAccess, int dwShareMode, int lpSecurityAttributes, int
dwCreationDisposition, int dwFlagsAndAttributes, int hTemplateFile);
注:以上的宏需要自己定义,例:private const uint GENERIC_WRITE =
0x40000000; private const int OPEN_EXISTING = 3;
2. 使用CreateFile操作并口,然后使用CreateFile返回的句柄与并口通信。例:(我这里是写入数据到LPT1)
int hPort = CreateFile("LPT1", GENERIC_WRITE, 0, 0, OPEN_EXISTING,
0, 0);
hPortP = new IntPtr(hPort);//定义一个IntPtr对象并初始化,用于对句柄操作。
SafeFileHandle sfHandle = new SafeFileHandle(hPortP, true);//因为用hPortP给出警告。
FileStream fs;
fs = new FileStream(sfHandle, ,1);//利用安全句柄和写模式实例一个文件流。
StreamWriter writer = new StreamWriter(fs);//定义一个写入流进行向LPT1写入数据。
ush = false;//不让自动清空
ine(sContent);//把数据(字符串)写入到LPT1。
();
();
();
CloseHandle(hPort);
3. DataMax的指令DPL与Zebra的指令ZPL不同,开始编写指令发送,总是遇到一些无法打印(识别)的问题。DPL看上去不如ZPL好理解,也许是很多人对ZPL比较熟悉的原因。其实总的来说指令都大同小异,只是语法标示不太一样。DPL指令在标签设置部分是以
str = "x02Ln" + "D11n" + "1E0" + +
ng("yyyyMMdd") + strFor +
"n";//输入的单位编号加日期加流水号组成条码内容。
str += "1211Barcode En" + "En";
把这里的str赋值给上面的sContent就行了,具体的函数编写可以根据自己的习惯或者思维方式来写。实现的方式很多种,也可以自己定义一个类封装函数。
ASCII码表完整版
ASCII值 控制字符 ASCII值 控制字符 ASCII值 控制字符 ASCII值 控制字符
0 NUT 32 (space) 64 @ 96 、
1 SOH 33 ! 65 A 97 a
2 STX 34 ” 66 B 98 b
3 ETX 35 # 67 C 99 c
4 EOT 36 $ 68 D 100 d
5 ENQ 37 % 69 E 101 e
6 ACK 38 & 70 F 102 f
7 BEL 39 , 71 G 103 g
8 BS 40 ( 72 H 104 h
9 HT 41 ) 73 I 105 i
10 LF 42 * 74 J 106 j
11 VT 43 + 75 K 107 k
12 FF 44 , 76 L 108 l
13 CR 45 - 77 M 109 m
14 SO 46 . 78 N 110 n
15 SI 47 / 79 O 111 o
16 DLE 48 0 80 P 112 p
17 DCI 49 1 81 Q 113 q
18
19
20
21
22
23
24
25
26
27
28
29
30
31
DC2
DC3
DC4
NAK
SYN
TB
CAN
EM
SUB
ESC
FS
GS
RS
US
50
51
52
53
54
55
56
57
58
59
60
61
62
63
2
3
4
5
6
7
8
9
:
;
<
=
>
?
82
83
84
85
86
87
88
89
90
91
92
93
94
95
R
X
T
U
V
W
X
Y
Z
[
/
]
^
—
114
115
116
117
118
119
120
121
122
123
124
125
126
127
r
s
t
u
v
w
x
y
z
{
|
}
~
DEL
NUL 空
SOH 标题开始
STX 正文开始
ETX 正文结束
EOY 传输结束
ENQ 询问字符
ACK 承认
BEL 报警
BS 退一格
HT 横向列表
LF 换行
VT 垂直制表
FF 走纸控制
CR 回车
SO 移位输出
SI 移位输入
DLE 空格
DC1 设备控制1
DC2 设备控制2
DC3 设备控制3
DC4 设备控制4
NAK 否定
SYN 空转同步
ETB 信息组传送结束
CAN 作废
EM 纸尽
SUB 换置
ESC 换码
FS 文字分隔符
GS 组分隔符
RS 记录分隔符
US 单元分隔符
DEL 删除
版权声明:本文标题:并口打印指令总结 内容由网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://www.freenas.com.cn/free/1705217319h477310.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论