-
Notifications
You must be signed in to change notification settings - Fork 55
/
Copy pathPrinter.cs
3751 lines (2122 loc) · 108 KB
/
Printer.cs
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
using System;
using System.Collections.Generic;
using System.Text;
using System.Runtime.InteropServices;
namespace PrinterDriver.Yanke
{
class Printer
{
public static int POS_SUCCESS = 1001; // 函数执行成功
public static int POS_FAIL = 1002; // 函数执行失败
public static int POS_ERROR_INVALID_HANDLE = 1101;// 端口或文件的句柄无效
public static int POS_ERROR_INVALID_PARAMETER = 1102; // 参数无效
public static int POS_ERROR_NOT_BITMAP = 1103;// 不是位图格式的文件
public static int POS_ERROR_NOT_MONO_BITMAP = 1104; // 位图不是单色的
public static int POS_ERROR_BEYONG_AREA = 1105; // 位图超出打印机可以
// 处理的大小
public static int POS_ERROR_INVALID_PATH = 1106; // 没有找到指定的文件
// 路径或名称
public static int POS_COM_DTR_DSR = 0x00; // 流控制为DTR/DST
public static int POS_COM_RTS_CTS = 0x01; // 流控制为RTS/CTS
public static int POS_COM_XON_XOFF = 0x02; // 流控制为XON/OFF
public static int POS_COM_NO_HANDSHAKE = 0x03; // 无握手
public static int POS_OPEN_PARALLEL_PORT = 0x12; // 打开并口通讯端口
public static int POS_OPEN_USB_PORT = 0x13;// 打开USB通讯端口
public static int POS_OPEN_PRINTNAME = 0X14; //打开打印机驱动程序
public static int POS_OPEN_NETPORT = 0X15; // 打开以太网打印机
public static int POS_FONT_TYPE_STANDARD = 0x00; // 标准 ASCII
public static int POS_FONT_TYPE_COMPRESSED = 0x01; // 压缩 ASCII
public static int POS_FONT_TYPE_UDC = 0x02; // 用户自定义字符
public static int POS_FONT_TYPE_CHINESE = 0x03; // 标准 “宋体”
public static int POS_FONT_STYLE_NORMAL = 0x00; // 正常
public static int POS_FONT_STYLE_BOLD = 0x08; // 加粗
public static int POS_FONT_STYLE_THIN_UNDERLINE = 0x80; // 1点粗的下划线
public static int POS_FONT_STYLE_THICK_UNDERLINE = 0x100; // 2点粗的下划线
public static int POS_FONT_STYLE_UPSIDEDOWN = 0x200; // 倒置(只在行首有效)
public static int POS_FONT_STYLE_REVERSE = 0x400; // 反显(黑底白字)
public static int POS_FONT_STYLE_SMOOTH = 0x800; // 平滑处理(用于放大时)
public static int POS_FONT_STYLE_CLOCKWISE_90 = 0x1000; // 每个字符顺时针旋转 90 度
public static int POS_PRINT_MODE_STANDARD = 0x00; // 标准模式(行模式)
public static int POS_PRINT_MODE_PAGE = 0x01; // 页模式
public static int POS_PRINT_MODE_BLACK_MARK_LABEL = 0x02; // 黑标记标签模式(部分打印机本身硬件支持)
public static int POS_PRINT_MODE_WHITE_MARK_LABEL = 0x03; //白标记标签模式 (部分打印机本身硬件支持)
public static int POS_PRINT_MODE_VIRTUAL_PAGE = 0x04; //虚拟页模式(动态库软件仿真)
public static int POS_BARCODE_TYPE_UPC_A = 0x41; // UPC-A
public static int POS_BARCODE_TYPE_UPC_E = 0x42; // UPC-C
public static int POS_BARCODE_TYPE_JAN13 = 0x43; // JAN13(EAN13)
public static int POS_BARCODE_TYPE_JAN8 = 0x44; // JAN8(EAN8)
public static int POS_BARCODE_TYPE_CODE39 = 0x45; // CODE39
public static int POS_BARCODE_TYPE_ITF = 0x46; // INTERLEAVED 2 OF 5
public static int POS_BARCODE_TYPE_CODEBAR = 0x47; // CODEBAR
public static int POS_BARCODE_TYPE_CODE93 = 0x48; // 25
public static int POS_BARCODE_TYPE_CODE128 = 0x49; // CODE 128
public static int POS_HRI_POSITION_NONE = 0x00; // 不打印
public static int POS_HRI_POSITION_ABOVE = 0x01; // 只在条码上方打印
public static int POS_HRI_POSITION_BELOW = 0x02;// 只在条码下方打印
public static int POS_HRI_POSITION_BOTH = 0x03;// 条码上、下方都打印
public static int POS_BITMAP_PRINT_NORMAL = 0x00; // 正常
public static int POS_BITMAP_PRINT_DOUBLE_WIDTH = 0x01; // 倍宽
public static int POS_BITMAP_PRINT_DOUBLE_HEIGHT = 0x02; // 倍高
public static int POS_BITMAP_PRINT_QUADRUPLE = 0x03; // 倍宽且倍高
public static int POS_CUT_MODE_FULL = 0x00;// 全切
public static int POS_CUT_MODE_PARTIAL = 0x01;// 半切
public static int POS_CUT_MODE_ALL = 0x02; //不区别半/全切刀类弄,直接切纸
public static int POS_AREA_LEFT_TO_RIGHT = 0x0; // 左上角
public static int POS_AREA_BOTTOM_TO_TOP = 0x1; // 左下角
public static int POS_AREA_RIGHT_TO_LEFT = 0x2; // 右下角
public static int POS_AREA_TOP_TO_BOTTOM = 0x3; // 右上角
public static int POS_BITMAP_MODE_8SINGLE_DENSITY = 0x00; // 8点单密度
public static int POS_BITMAP_MODE_8DOUBLE_DENSITY = 0x01;// 8点双密度
public static int POS_BITMAP_MODE_24SINGLE_DENSITY = 0x20;// 24点单密度
public static int POS_BITMAP_MODE_24DOUBLE_DENSITY = 0x21;// 24点双密度
public static int PRINTER_TYPE = 1; /// 1 清单打印机关干部 0 发票打印机
public static int S_COMMUNICATION_OK = 0; ///正常
public static int S_COMMUNICATION_FAILED = -1010; ///通讯故障
public static int S_DEVICE_FAULT = 1011; ///设备故障
public static int S_PAPER_OUT = 1012; ////缺纸
public static int S_PAPER_JAM = 1013; ///卡纸
public static int S_PAPER_NEAR_END = 1014; ///纸将尽
public static int S_COVER_OPEN = 1015; ///机盖(抬杆)打开
public static int S_DEVICE_BUSY = 1016; ////设备忙
///状态返回值位定义
public static int E_COMMUNICATION_OK = 0; ///正常
public static int E_COMMUNICATION_FAILED = 0X01; ///通讯故障
public static int E_DEVICE_FAULT = 0x02; ///设备故障
public static int E_PAPER_OUT = 0x04; ////缺纸
public static int E_PAPER_JAM = 0x08; ///卡纸
public static int E_PAPER_NEAR_END = 0x10; ///纸将尽
public static int E_COVER_OPEN = 0x20; ///机盖(抬杆)打开
public static int E_DEVICE_BUSY = 0x40; ////设备忙
public static int E_OVER_TEMPERATURE = 0x80; ////设备忙
public static int E_CUTTER_ERROR = 0x0100; ////切刀错误
public static int E_READ_ERROR = 0x0200; ////无数据读回
public static int E_POWER_OFF = 0x0400; ////机器断电
//函数功能:通过系列号连接打印机设备,
//参数: szSerial -- 设备系列号
//数据类型:字符串指针,长度最长12个,不区分大小写
//返回值:0 -- 成功 -1 -- 失败
//数据类型:整型
[DllImport("YkPosdll.dll", CharSet = CharSet.Ansi, CallingConvention = CallingConvention.StdCall)]
//int OpenUSBDeviceBySerial(char *szSerial);
public static extern int OpenUSBDeviceBySerial(String szSerial);
//函数功能:枚举正与主机相连的打印机设备系列号
//参数: szSerial -- 设备系列号数组,主机程序需预先分配足够的内存空间 至少200 字节
//数据类型:字符串指针
//返回值:>0 返回枚举设备数 -1 -- 失败
//数据类型:整型
//int EnumUSBDeviceSerials(char *szSerials[10]);
[DllImport("YkPosdll.dll", CharSet = CharSet.Ansi, CallingConvention = CallingConvention.StdCall)]
public static extern int EnumUSBDeviceSerials(StringBuilder sb);
//HANDLE OpenUsbPrinterByName(LPCTSTR PrinterName);
[DllImport("YkPosdll.dll", CharSet = CharSet.Ansi, CallingConvention = CallingConvention.StdCall)]
public static extern UIntPtr OpenUsbPrtByName(String PrinterName);
//函数功能:连接打印机设备
//返回值:0 -- 成功 -1 -- 失败
/*
iport:
///串口
#define COM1 1
#define COM2 2
#define COM3 3
#define COM4 4
#define COM5 5
#define COM6 6
#define COM7 7
#define COM8 8
#define COM9 9
#define COM10 10
///并口
#define LPT1 11
#define LPT2 12
///USB 口
#define USB 13
baud:
波特率
iflow:
0 无流控
1 DTR/DSR
2 RTS/CTS
3 XON/XOFF
*/
//public static extern int YkOpenDevice(int iport, int baud,int iflow=0);
[DllImport("YkPosdll.dll", CharSet = CharSet.Ansi, CallingConvention = CallingConvention.StdCall)]
public static extern int YkOpenDevice(int iport, int baud, int iflow);
//函数功能:断开打印设备
//参数:无
//返回值:0 -- 成功 -1 -- 失败
//public static extern int YkCloseDevice();
[DllImport("YkPosdll.dll", CharSet = CharSet.Ansi, CallingConvention = CallingConvention.StdCall)]
public static extern int YkCloseDevice();
//函数功能:获取设备的操作句柄
//参数:无
//返回值:>0 -- 句柄值 -1 -- 失败
//public static extern int YkGetDeviceHandle();
[DllImport("YkPosdll.dll", CharSet = CharSet.Ansi, CallingConvention = CallingConvention.StdCall)]
public static extern int YkGetDeviceHandle();
//函数功能:设备是否已经到连接计算机(仅支持USB口打印机)
//参数:无
//返回值:>0 -- 连接 -1 -- 没有连接
//public static extern int YkIsConnected();
[DllImport("YkPosdll.dll", CharSet = CharSet.Ansi, CallingConvention = CallingConvention.StdCall)]
public static extern int YkIsConnected();
//函数功能:初始化打印机 〈详见命令:ESC @〉
//参数:无
//返回值:0 -- 成功 -1 -- 失败
[DllImport("YkPosdll.dll", CharSet = CharSet.Ansi, CallingConvention = CallingConvention.StdCall)]
public static extern int YkInitPrinter();
//函数功能:把将要打印的字符串送入打印机缓冲区(注: 达到满行时会自动打印出来)
//参数:pstr -- 将要送打印机的字符串数据缓冲,len -- 字符串数据长度
//返回值:0 -- 成功 -1 -- 失败
[DllImport("YkPosdll.dll", CharSet = CharSet.Ansi, CallingConvention = CallingConvention.StdCall)]
public static extern int YkPrintStr(String pstr);
//函数功能:打印并回车,但不走纸〈详见命令:CR〉
//参数:无
//返回值:0 -- 成功 -1 -- 失败
[DllImport("YkPosdll.dll", CharSet = CharSet.Ansi, CallingConvention = CallingConvention.StdCall)]
public static extern int YkEnter();
//函数功能:打印并换行,走纸到下一行首〈详见命令:LF〉
//参数:无
//返回值:0 -- 成功 -1 -- 失败
[DllImport("YkPosdll.dll", CharSet = CharSet.Ansi, CallingConvention = CallingConvention.StdCall)]
public static extern int YkFeedPaper();
//函数功能:页模式下,取消打印数据〈详见命令:CAN〉
//参数:无
//返回值:0 -- 成功 -1 -- 失败
[DllImport("YkPosdll.dll", CharSet = CharSet.Ansi, CallingConvention = CallingConvention.StdCall)]
public static extern int YkCancelPrintInPM();
//函数功能:实时响应主机请求, 〈详见命令:DLE ENQ n〉
//参数:n=1:从错误状态恢复,从错误状态出现的行重新开始打印。
//参数:n=2:清除接收缓冲区,打印缓冲区内容。
//返回值:0 -- 成功 -1 -- 失败
[DllImport("YkPosdll.dll", CharSet = CharSet.Ansi, CallingConvention = CallingConvention.StdCall)]
public static extern int YkResponse(int n);
//函数功能:Tab水平定位,从下一个水平定位点位置开始打印。〈详见命令:HT〉
//参数:无
//返回值:0 -- 成功 -1 -- 失败
[DllImport("YkPosdll.dll", CharSet = CharSet.Ansi, CallingConvention = CallingConvention.StdCall)]
public static extern int YkTabMove();
//函数功能:页模式下,打印数据〈详见命令:ESC FF〉
//参数:无
//返回值:0 -- 成功 -1 -- 失败
[DllImport("YkPosdll.dll", CharSet = CharSet.Ansi, CallingConvention = CallingConvention.StdCall)]
public static extern int YkPrintInPM();
//函数功能:设置西文字符右间距,以半点为设定单位〈详见命令:ESC SP n〉
//参数:n = 0~255 ,default = 0
//返回值:0 -- 成功 -1 -- 失败
[DllImport("YkPosdll.dll", CharSet = CharSet.Ansi, CallingConvention = CallingConvention.StdCall)]
public static extern int YkSetCharRightSpace(int n);
//函数功能:设置字符打印方式〈详见命令:ESC ! n〉
//参数:n = 0~255 ,default = 0
//返回值:0 -- 成功 -1 -- 失败
[DllImport("YkPosdll.dll", CharSet = CharSet.Ansi, CallingConvention = CallingConvention.StdCall)]
public static extern int YkSetFontStyle(int n);
//函数功能:设置绝对打印位置,〈详见命令:ESC $ nL nH〉
//参数:nL -- 位置数值的低字节,nH -- 位置数值的高字节 ,0 ≤ (nL + nH × 256) ≤ 65535 (0 ≤ nL ≤ 255 , 0 ≤ nH ≤ 255)
//返回值:0 -- 成功 -1 -- 失败
[DllImport("YkPosdll.dll", CharSet = CharSet.Ansi, CallingConvention = CallingConvention.StdCall)]
public static extern int YkSetAbsPrnPos(int nL, int nH);
//函数功能:使能/禁用用户自定义字符户〈详见命令:ESC % n〉
//参数:n = 0~255 ,default = 0
//返回值:0 -- 成功 -1 -- 失败
[DllImport("YkPosdll.dll", CharSet = CharSet.Ansi, CallingConvention = CallingConvention.StdCall)]
public static extern int YkEnableUserDefineChar(int n);
//函数功能:设置用户自定义字符, 〈详见命令:ESC & y c1 c2 [ x1 d1...d(y×x1)]...[ xk d1...d(y×xk)]〉
//参数:c1, c2分别为起始码和终止码,最多为95个。
//参数:字符宽度,以点为单位,视用什么字体大小而定
//参数:code --自定义字符的内码值,例:使用Font B字体,把空格定义为黑块 内码为c1=0x20,c2=0x20,code[0]=0xff,code[1]=0xff...code[26]=0xff
// YkSetUserDefineChar(0x20,0x20,9,code);
///以下数据详见说明书
//y==3
//0 ≤ x ≤ 12 [Font A (12 × 24)]
//0 ≤ x ≤ 9 [Font B (9 × 17)]
//k = c2 – c1 +1
//返回值:0 -- 成功 -1 -- 失败
[DllImport("YkPosdll.dll", CharSet = CharSet.Ansi, CallingConvention = CallingConvention.StdCall)]
public static extern int YkSetUserDefineChar(int c1, int c2, int x, byte[] code);
//函数功能:使能或禁用字符加下画线功能 〈详见命令:ESC - n〉
//参数:n=1 使能,n=0 禁用,默认值n=0。
//返回值:0 -- 成功 -1 -- 失败
[DllImport("YkPosdll.dll", CharSet = CharSet.Ansi, CallingConvention = CallingConvention.StdCall)]
public static extern int YkEnableUnderLine(int n);
//函数功能:设置字符行距为默认值3.75毫米 〈详见命令:ESC 2〉
//参数:无
//返回值:0 -- 成功 -1 -- 失败
[DllImport("YkPosdll.dll", CharSet = CharSet.Ansi, CallingConvention = CallingConvention.StdCall)]
public static extern int YkSetDefaultLineSpace();
//设置字符行距 〈详见命令:ESC 3 n〉
//参数:n=0~255,默认 n=30
//返回值:0 -- 成功 -1 -- 失败
[DllImport("YkPosdll.dll", CharSet = CharSet.Ansi, CallingConvention = CallingConvention.StdCall)]
public static extern int YkSetLineSpace(int n);
//函数功能:取消用户自定义字符, 〈详见命令:ESC ? n〉
//参数:n=32~126
//返回值:0 -- 成功 -1 -- 失败
[DllImport("YkPosdll.dll", CharSet = CharSet.Ansi, CallingConvention = CallingConvention.StdCall)]
public static extern int YkCancelUserDefChar(int n);
//函数功能:设置水平制表位置 〈详见命令:ESC D〉
//参数:tabstr --tab 位置值组成的字符串序列,如
//返回值:0 -- 成功 -1 -- 失败
[DllImport("YkPosdll.dll", CharSet = CharSet.Ansi, CallingConvention = CallingConvention.StdCall)]
public static extern int YkSetTabPos(String tabstr);
//函数功能:使能或禁用加重打印模式 〈详见命令: ESC E n〉
//参数:n =0 禁用 n=1 使能
//返回值:0 -- 成功 -1 -- 失败
[DllImport("YkPosdll.dll", CharSet = CharSet.Ansi, CallingConvention = CallingConvention.StdCall)]
public static extern int YkSetEmphasized(int n);
//函数功能:使能或禁用重叠打印模式 〈详见命令: ESC G〉
//参数:n =0 禁用 n=1 使能
//返回值:0 -- 成功 -1 -- 失败
[DllImport("YkPosdll.dll", CharSet = CharSet.Ansi, CallingConvention = CallingConvention.StdCall)]
public static extern int YkOverlap(int n);
//函数功能:打印后走纸 n 点行(注:可以精确走纸 1点行=0.125mm) 〈详见命令: ESC J n〉
//参数:n =0~255
//返回值:0 -- 成功 -1 -- 失败
[DllImport("YkPosdll.dll", CharSet = CharSet.Ansi, CallingConvention = CallingConvention.StdCall)]
public static extern int YkPrnAndFeedPaper(int n);
//函数功能:进入页模式工作 〈详见命令:ESC L〉
//参数:无
//返回值:0 -- 成功 -1 -- 失败
[DllImport("YkPosdll.dll", CharSet = CharSet.Ansi, CallingConvention = CallingConvention.StdCall)]
public static extern int YkEnablePM();
//函数功能:选择字符字型 〈详见命令:ESC M〉
//参数:n=0 选择字型 A (12×24); n=1 选择字型 B (9×17)
//返回值:0 -- 成功 -1 -- 失败
[DllImport("YkPosdll.dll", CharSet = CharSet.Ansi, CallingConvention = CallingConvention.StdCall)]
public static extern int YkSelectFont(int n);
//函数功能:设置11个国家的不同ASCII字符集 〈详见命令:ESC R n〉
//参数: n 国家代号
/*
n International character set
0 U.S.A.
1 France
2 Germany
3 U.K.
4 Denmark I
5 Sweden
6 Italy
7 Spain I
8 Japan
9 Norway
10 Denmark II
11 Spain II
12 Latin America
13 Korea
14 Slovenia / Croatia
15 China
*/
//返回值:0 -- 成功 -1 -- 失败
[DllImport("YkPosdll.dll", CharSet = CharSet.Ansi, CallingConvention = CallingConvention.StdCall)]
public static extern int YkSetInterCharSet(int n);
//函数功能:从页模式切换到标准模式 〈详见命令:ESC S〉
//参数:无
//返回值:0 -- 成功 -1 -- 失败
[DllImport("YkPosdll.dll", CharSet = CharSet.Ansi, CallingConvention = CallingConvention.StdCall)]
public static extern int YkEnterSM();
//函数功能:页模式下,设置打印方向, 〈详见命令:ESC T n〉
//参数:n=0~3 ;
/*
n Print direction Starting position
0 Left to right Upper left
1 Bottom to top Lower left
2 Right to left Lower right
3 Top to bottom Upper right
*/
//返回值:0 -- 成功 -1 -- 失败
[DllImport("YkPosdll.dll", CharSet = CharSet.Ansi, CallingConvention = CallingConvention.StdCall)]
public static extern int YkSetDirectionInPM(int n);
//函数功能:使能或禁用顺时针90度旋转字符打印, 〈详见命令:ESC V n〉
//参数:n=0禁用顺时针90度旋转打印 n=1 使能顺时针90度旋转打印
//返回值:0 -- 成功 -1 -- 失败
[DllImport("YkPosdll.dll", CharSet = CharSet.Ansi, CallingConvention = CallingConvention.StdCall)]
public static extern int YkClockwiseD90(int n);
//函数功能:页模式下,设置设置打印区域,打印页长度范围(76~185mm),打印宽度(最大72mm) 〈详见命令:ESC W xL xH yL yH dxL dxH dyL dyH〉
//参数:left 打印区域左上角x坐标 top 打印区域左上角y坐标 width 打印区域宽度 height 打印区域高度
//返回值:0 -- 成功 -1 -- 失败
[DllImport("YkPosdll.dll", CharSet = CharSet.Ansi, CallingConvention = CallingConvention.StdCall)]
public static extern int YkSetPrnAreaInPM(int left, int top, int width, int height);
//函数功能:设置相对打印位置 〈详见命令:ESC \ nL nH〉
//参数:nL ,nH ; 实际位置= (nL + nH x 256)x0.125 毫米
//返回值:0 -- 成功 -1 -- 失败
[DllImport("YkPosdll.dll", CharSet = CharSet.Ansi, CallingConvention = CallingConvention.StdCall)]
public static extern int YkSetRelPrnPos(int nL, int nH);
//函数功能:设置打印时的对齐方式 〈详见命令:ESC a n〉
//参数:n=0 左对齐 n=1 居中 n=2 右对齐
//返回值:0 -- 成功 -1 -- 失败
[DllImport("YkPosdll.dll", CharSet = CharSet.Ansi, CallingConvention = CallingConvention.StdCall)]
public static extern int YkSetAlign(int n);
//函数功能:设置测纸传感器输出缺纸信号 〈详见命令:ESC c 3 n〉
//参数:n=0~255 , 各位定义,详见命令说明书表格说明
//返回值:0 -- 成功 -1 -- 失败
[DllImport("YkPosdll.dll", CharSet = CharSet.Ansi, CallingConvention = CallingConvention.StdCall)]
public static extern int YkSetPaperSensor(int n);
//函数功能:设置纸尽时停止打印 〈详见命令:ESC c 4 n〉
//参数:n=0~255 , 各位定义,详见命令说明书表格说明
//返回值:0 -- 成功 -1 -- 失败
[DllImport("YkPosdll.dll", CharSet = CharSet.Ansi, CallingConvention = CallingConvention.StdCall)]
public static extern int YkSetSensorToStopPrint(int n);
//函数功能:使能或禁用打印机面板上的开关 〈详见命令:ESC c 5 n〉
//参数:n=0 禁用 n=1 使能
//返回值:0 -- 成功 -1 -- 失败
[DllImport("YkPosdll.dll", CharSet = CharSet.Ansi, CallingConvention = CallingConvention.StdCall)]
public static extern int YkEnablePanelButton(int n);
//函数功能:打印后走纸n字符行 〈详见命令:ESC d n〉
//参数:n 字符行数
//返回值:0 -- 成功 -1 -- 失败
[DllImport("YkPosdll.dll", CharSet = CharSet.Ansi, CallingConvention = CallingConvention.StdCall)]
public static extern int YkPrnAndFeedLine(int n);
//函数功能:设置字符代码表 〈详见命令:ESC t n〉
//参数:n 代码表代号 取值范围:0 ≤ n ≤ 5 , 16 ≤ n ≤ 19 , n = 255
/*
n Character code table
0 Page 0 [PC437 (USA: Standard Europe)]
1 Page 1 [Katakana]
2 Page 2 [PC850 (Multilingual)]
3 Page 3 [PC860 (Portuguese)]
4 Page 4 [PC863 (Canadian-French)
5 Page 5 [PC865 (Nordic)]
16 Page 16 [WPC1252]
17 Page 17 [PC866 (Cyrillic #2)]
18 Page 18 [PC852 (Latin 2)]
19 Page 19 [PC858 (Euro)]
255 Page 255 [User-defined page]
*/
//返回值:0 -- 成功 -1 -- 失败
[DllImport("YkPosdll.dll", CharSet = CharSet.Ansi, CallingConvention = CallingConvention.StdCall)]
public static extern int YkSetCharCodeTable(int n);
//函数功能:走黑标纸到打印起始位置 〈详见命令:GS FF〉
//参数:无
//返回值:0 -- 成功 -1 -- 失败
[DllImport("YkPosdll.dll", CharSet = CharSet.Ansi, CallingConvention = CallingConvention.StdCall)]
public static extern int YkFeedToStartPos();
//函数功能:设置字符倍数 〈详见命令:GS ! n〉
//参数:hsize 水平放大倍数 vsize 垂直放在倍数 ,取值范围0~7
/*
hsize ,vsize 值与倍数对应关系
0 1倍(原大小)
1 2倍
2 3倍
3 4倍
4 5倍
5 6倍
6 7倍
7 8倍
*/
//返回值:0 -- 成功 -1 -- 失败
[DllImport("YkPosdll.dll", CharSet = CharSet.Ansi, CallingConvention = CallingConvention.StdCall)]
public static extern int YkSetCharSize(int hsize, int vsize);
//函数功能:页模式下,设置打印区域内绝对垂直打印起始位置 〈详见命令:GS $ nL nH〉
//参数:nL nH 位置值 位置 = (nL + nH x256) x 0.125 毫米
//返回值:0 -- 成功 -1 -- 失败
[DllImport("YkPosdll.dll", CharSet = CharSet.Ansi, CallingConvention = CallingConvention.StdCall)]
public static extern int YkSetAbsVertPosInPM(int nL, int nH);
//函数功能:进行测试打印 〈详见命令:GS ( A pL pH n m〉
//参数:n,m
/*
n 指定测试时的纸张来源
0 Basic sheet (roll paper)
1 Roll paper
2 Roll paper
m 指定测试样式
1 Hexadecimal dump print
2 Printer status print
3 Rolling pattern print
*/
//返回值:0 -- 成功 -1 -- 失败
[DllImport("YkPosdll.dll", CharSet = CharSet.Ansi, CallingConvention = CallingConvention.StdCall)]
public static extern int YkDoTestPrint(int n, int m);
//函数功能:进入或退出用户设置模式 〈详见命令:GS ( E pL pH 〉
//参数:m=1 进入 m=2 退出
//返回值:0 -- 成功 -1 -- 失败
[DllImport("YkPosdll.dll", CharSet = CharSet.Ansi, CallingConvention = CallingConvention.StdCall)]
public static extern int YkUserDefCmd(int m);
//函数功能:设置MemorySwitch开关 〈详见命令:GS ( E pL pH 〉
//参数:n=0~7对应MemorySwitch开关1~8。
//参数:数组memory[]对应memory1~8每个开关值。
//返回值:0 -- 成功 -1 -- 失败
[DllImport("YkPosdll.dll", CharSet = CharSet.Ansi, CallingConvention = CallingConvention.StdCall)]
public static extern int YkSetMemorySwitch(int n, int[] memory); ///???
//函数功能:读取MemorySwitch开关值 〈详见命令:GS ( E pL pH〉
//参数:n=0~7对应MemorySwitch开关1~8。
//参数:数组memory[]用于存储读回来对应memory1~8每个开关值。
//返回值:0 -- 成功 -1 -- 失败
[DllImport("YkPosdll.dll", CharSet = CharSet.Ansi, CallingConvention = CallingConvention.StdCall)]
public static extern int YkGetMemorySwitch(int n, byte[] memory); ///???
//函数功能:设置黑标的切撕纸位置和起始打印位置 〈详见命令:GS ( F pL pH a m〉
//参数a =1 设置起始打印位置的设定值 a=2 设置开始切纸位置的设定值
//参数m = 0 指定为前向进纸的方向 m = 1 指定为逆向进纸的方向
//返回值:0 -- 成功 -1 -- 失败
[DllImport("YkPosdll.dll", CharSet = CharSet.Ansi, CallingConvention = CallingConvention.StdCall)]
public static extern int YkSetBlackMarkParam(int a, int m, int nL, int nH);
//函数功能:(注:按工作状态功能有所不同)〈详见命令:FF〉
// 页模式:打印后返回到标准模式
// 黑标模式:打印后走黑标到打印起始位置。
//参数:无
//返回值:0 -- 成功 -1 -- 失败
[DllImport("YkPosdll.dll", CharSet = CharSet.Ansi, CallingConvention = CallingConvention.StdCall)]
public static extern int YkPrnAndBackToStd();
//函数功能:定制打印机控制值。 〈详见命令:GS ( M pL pH a n m〉
//参数:
/*
保存或者载入命令所定义的数据。
n 功能
1 将命令GS ( F 所设置的数据保存到用户NV 存储器。
2 从用户NV 存储器载入命令GS ( F 所设置的数据。
3 指定在初始设定时禁止或允许自动数据载入程序。
m 指定数据如下:
m = 0 与该规格参考手册所叙述的GS ( F 命令的初始设定值相同。
m = 1 将被保存的存储区。
*/
//返回值:0 -- 成功 -1 -- 失败
[DllImport("YkPosdll.dll", CharSet = CharSet.Ansi, CallingConvention = CallingConvention.StdCall)]
public static extern int YkDefineControl(int n, int m);
//函数功能:设置条码HRI字符的打印位置 〈详见命令:GS H n〉
//参数:n=0 不打印,n=1 条形码上方,n=2条形码下方,n=3条形码的上方和下方
//返回值:0 -- 成功 -1 -- 失败
[DllImport("YkPosdll.dll", CharSet = CharSet.Ansi, CallingConvention = CallingConvention.StdCall)]
public static extern int YkSetHRIPos(int n);
//函数功能:读取打印机ID 〈详见命令:GS I n〉
//参数:n=1~3 不同型号机型,具体内容不同,请查说明书
/*
n 打印机ID
1 打印机型号ID
2 类型ID 见说明书类型表
3 固件版本ID
*/
//返回值:0 -- 成功 -1 -- 失败
[DllImport("YkPosdll.dll", CharSet = CharSet.Ansi, CallingConvention = CallingConvention.StdCall)]
public static extern int YkGetPrinterID(int n);
//函数功能:设置左边距 〈详见命令:GS L nL nH〉
//参数:nL nH 左边距=(nL + nH x 256) x 0.125 毫米
//返回值:0 -- 成功 -1 -- 失败
[DllImport("YkPosdll.dll", CharSet = CharSet.Ansi, CallingConvention = CallingConvention.StdCall)]
public static extern int YkSetLeftMargin(int nL, int nH);
//函数功能:打印位置设置为打印行起点 〈详见命令:GS T n〉
//参数:n=0 删除打印缓冲区中的所有数据后设置打印位置为打印行起始点 n=1 将打印缓冲区中的所有数据打印后设置打印位置为打印行起始点
//返回值:0 -- 成功 -1 -- 失败
[DllImport("YkPosdll.dll", CharSet = CharSet.Ansi, CallingConvention = CallingConvention.StdCall)]
public static extern int YkToLineHome(int n);
//函数功能:执行切纸动作,包括进纸 〈详见命令:GS V m〉
//参数:m=66 n:打印机进纸到(切纸位置+ [n × 0.125 毫米{0.0049英寸}])并切纸,一般n=0
//返回值:0 -- 成功 -1 -- 失败
[DllImport("YkPosdll.dll", CharSet = CharSet.Ansi, CallingConvention = CallingConvention.StdCall)]
public static extern int YkCutPaper(int m, int n);
//函数功能:设置打印区域宽度。 〈详见命令:GS W nL nH〉
//参数:nL --打印区域宽度低字节 nH -- 打印区域宽度高字节
//返回值:0 -- 成功 -1 -- 失败
[DllImport("YkPosdll.dll", CharSet = CharSet.Ansi, CallingConvention = CallingConvention.StdCall)]
public static extern int YkSetPrnAreaWidth(int nL, int nH);
//函数功能:页模式下,设置相对于当前位置的垂直打印起点位置 〈详见命令:GS \ nL nH〉
//参数:nL --位置低字节 nH -- 位置高字节
//返回值:0 -- 成功 -1 -- 失败
[DllImport("YkPosdll.dll", CharSet = CharSet.Ansi, CallingConvention = CallingConvention.StdCall)]
public static extern int YkSetRelVertPosInPM(int nL, int nH);
//函数功能:使能或禁用自动状态回复功能(ASB) 〈详见命令:GS a n〉
//参数:0 -- 禁用 1 -- 使能
//返回值:0 -- 成功 -1 -- 失败
[DllImport("YkPosdll.dll", CharSet = CharSet.Ansi, CallingConvention = CallingConvention.StdCall)]
public static extern int YkEnableASB(int n);
//函数功能:使能或禁用平滑模式 〈详见命令:GS b n〉
//参数:0 -- 禁用 1 -- 使能
//返回值:0 -- 成功 -1 -- 失败
[DllImport("YkPosdll.dll", CharSet = CharSet.Ansi, CallingConvention = CallingConvention.StdCall)]
public static extern int YkEnableSmoothPrn(int n);
// 函数功能:设置条码的HRI字符字型 〈详见命令:GS f n〉
//参数:0 -- 字体A (12 × 24) 1 -- 字体B (9 × 17)
//返回值:0 -- 成功 -1 -- 失败
[DllImport("YkPosdll.dll", CharSet = CharSet.Ansi, CallingConvention = CallingConvention.StdCall)]
public static extern int YkSetHRICharStyle(int n);
//函数功能:设置条码高度 〈详见命令:GS h n〉
//参数:n=1~255 垂直方向的点数
//返回值:0 -- 成功 -1 -- 失败
[DllImport("YkPosdll.dll", CharSet = CharSet.Ansi, CallingConvention = CallingConvention.StdCall)]
public static extern int YkSetBarCodeHeight(int n);
//函数功能:打印条码 〈详见命令:GS k m n d1 ... dn〉
//参数:m=65~75
/*
m 条形码系统 字符个数 备注
65 UPC-A 11 ≤ n ≤ 12 48 ≤ d ≤ 57
66 UPC-E 11 ≤ n ≤ 12 48 ≤ d ≤ 57
67 JAN13 (EAN13) 12 ≤ n ≤ 13 48 ≤ d ≤ 57
68 JAN8 (EAN8) 7 ≤ n ≤ 8 48 ≤ d ≤ 57
69 CODE39 1 ≤ n ≤ 255 48 ≤ d ≤ 57, 65 ≤ d ≤ 90, 32, 36,37, 43, 45, 46, 47
70 ITF 1 ≤ n ≤ 255 (n 为偶数) 48 ≤ d ≤ 57
71 CODABAR 1 ≤ n ≤ 255 48 ≤ d ≤ 57, 65 ≤ d ≤ 68, 36, 43,45, 46, 47, 58
72 CODE93 1 ≤ n ≤ 255 0 ≤ d ≤ 127
73 CODE128 1 ≤ n ≤ 255 0 ≤ d ≤ 127
74 标准EAN13 12 ≤ n ≤ 13 48 ≤ d ≤ 57
75 标准EAN8 7 ≤ n ≤ 8 48 ≤ d ≤ 57
*/
//参数:n 上表中字符个数
//参数:barcode 要转化为条码的数据
//返回值:0 -- 成功 -1 -- 失败
[DllImport("YkPosdll.dll", CharSet = CharSet.Ansi, CallingConvention = CallingConvention.StdCall)]
public static extern int YkPrintBarCode(int m, int n, String barcode);
//函数功能:获取打印机状态, 〈详见命令:DLE EOT n〉
//参数:n = 1~5
//返回值:0 -- 成功 -1 -- 失败
[DllImport("YkPosdll.dll", CharSet = CharSet.Ansi, CallingConvention = CallingConvention.StdCall)]
public static extern int YkGetStatus(byte n);
//函数功能:读取打印机状态 〈详见命令:GS r n〉
//参数:n=1 传送打印纸传感器状态
//返回值:0 -- 成功 -1 -- 失败
[DllImport("YkPosdll.dll", CharSet = CharSet.Ansi, CallingConvention = CallingConvention.StdCall)]
public static extern int YkGetPrinterStatus(byte n);
//函数功能:设置条码宽度 〈详见命令:GS w n〉
//参数:参数n=2~6
/*
二元条形码
n 多元条形码单位宽度(毫米) 窄条宽度(毫米) 宽条宽度(毫米)
2 0.250 0.250 0.625
3 0.375 0.375 1.000
4 0.560 0.500 1.250
5 0.625 0.625 1.625
6 0.750 0.750 2.000
*/
//返回值:0 -- 成功 -1 -- 失败
[DllImport("YkPosdll.dll", CharSet = CharSet.Ansi, CallingConvention = CallingConvention.StdCall)]
public static extern int YkSetBarCodeWidth(int n);
//函数功能:设置汉字字符打印模式组合。〈详见命令:FS ! n〉
//参数:n=0~255 详见命令说明书中表格
//返回值:0 -- 成功 -1 -- 失败
[DllImport("YkPosdll.dll", CharSet = CharSet.Ansi, CallingConvention = CallingConvention.StdCall)]
public static extern int YkSetChineseFontStyle(int n);
//函数功能:进入汉字打印方式。〈详见命令:FS &〉
//参数:无
//返回值:0 -- 成功 -1 -- 失败
[DllImport("YkPosdll.dll", CharSet = CharSet.Ansi, CallingConvention = CallingConvention.StdCall)]
public static extern int YkEnableChineseMode();
//函数功能:退出汉字打印方式。〈详见命令:FS .〉
//参数:无
//返回值:0 -- 成功 -1 -- 失败
[DllImport("YkPosdll.dll", CharSet = CharSet.Ansi, CallingConvention = CallingConvention.StdCall)]
public static extern int YkDisableChineseMode();
//函数功能:使能或禁用汉字下划线模式。〈详见命令:FS - n〉
//参数:n=0 禁用 n=1 使能
//返回值:0 -- 成功 -1 -- 失败
[DllImport("YkPosdll.dll", CharSet = CharSet.Ansi, CallingConvention = CallingConvention.StdCall)]
public static extern int YkEnableChineseUnderLine(int n);
//函数功能:定义用户自定义汉字 〈详见命令:FS 2 c1 c2 d1...dk〉
//参数:c1、c2汉字用户自定义汉字区内的区位码,详见说明书表格,如汉字区GB18030,c1 = FE A1 ≤ c2 ≤ FE ,k=72,数组d元素取值范围0~255
//返回值:0 -- 成功 -1 -- 失败
[DllImport("YkPosdll.dll", CharSet = CharSet.Ansi, CallingConvention = CallingConvention.StdCall)]
public static extern int YkSetUserDefChinese(int c1, int c2, int[] code);
//函数功能:设置用户自定义字符代码系统 〈详见命令:FS C n〉
//参数:自定义字符代码系统代号 n= 0~1
//返回值:0 -- 成功 -1 -- 失败
[DllImport("YkPosdll.dll", CharSet = CharSet.Ansi, CallingConvention = CallingConvention.StdCall)]
public static extern int YkSetUserDefChineseArea(int n);
//函数功能:设置汉字字符左右间距 〈详见命令:FS S n1 n2〉
//参数:左间距n1,右间距n2,0 ≤ n1 ≤ 255,0 ≤ n2 ≤ 255
//返回值:0 -- 成功 -1 -- 失败
[DllImport("YkPosdll.dll", CharSet = CharSet.Ansi, CallingConvention = CallingConvention.StdCall)]
public static extern int YkSetChineseLeftRightSpace(int n1, int n2);
//函数功能:使能或禁用汉字四倍大小打印。〈详见命令:FS W n〉
//参数:n=0 禁用 n=1 使能
//返回值:0 -- 成功 -1 -- 失败
[DllImport("YkPosdll.dll", CharSet = CharSet.Ansi, CallingConvention = CallingConvention.StdCall)]
public static extern int YkSetChinese4TimesSize(int n);
//函数功能:使能或禁用颠倒打印模式〈详见命令: ESC { n〉
//参数:n=0 禁用 n=1 使能
//返回值:0 -- 成功 -1 -- 失败
[DllImport("YkPosdll.dll", CharSet = CharSet.Ansi, CallingConvention = CallingConvention.StdCall)]
public static extern int YkEnableUpsidedown(int n);
//函数功能:打印预定义位图 〈详见命令: FS p n m〉
//参数:m 打印密度
/* m 效果 垂直密度(dpi) 水平密度(dpi)
0 普通 203 203
1 倍宽 203 101
2 倍高 101 203
3 4倍 101 101
*/
//返回值:0 -- 成功 -1 -- 失败
[DllImport("YkPosdll.dll", CharSet = CharSet.Ansi, CallingConvention = CallingConvention.StdCall)]
public static extern int YkPrintDefineBitmap(int m, int n);
//函数功能:下载预定义位图 〈详见命令: FS q n〉
//参数:szBmpFile,要下载的位图的全路径。
//返回值:0 -- 成功 -1 -- 失败
[DllImport("YkPosdll.dll", CharSet = CharSet.Ansi, CallingConvention = CallingConvention.StdCall)]
public static extern int YkDefineBitmap(String szBmpFile);
//函数功能:即时打印BMP图象。 〈详见命令:ESC * m nL nH d1...dk 〉
//参数:szBmpFile,要下载的位图的全路径。
/*
m 垂直密度 水平密度
0 60 90
1 60 180
32 180 90
33 180 180
一般 m=33
*/
//返回值:0 -- 成功 -1 -- 失败
[DllImport("YkPosdll.dll", CharSet = CharSet.Ansi, CallingConvention = CallingConvention.StdCall)]
public static extern int YkPrintBitmap(String szBmpFile, int m);
//函数功能:下装图形后即时打印。 〈详见命令:先执行GS * ,后执行 GS / m〉
//参数:szBmpFile,要下载的位图的全路径。
/*
m 效果 垂直密度(dpi) 水平密度(dpi)
0 普通 180 180
1 倍宽 180 90
2 倍高 90 180
3 四倍 90 90
一般 m=0
*/
//返回值:0 -- 成功 -1 -- 失败
[DllImport("YkPosdll.dll", CharSet = CharSet.Ansi, CallingConvention = CallingConvention.StdCall)]
public static extern int YkDownloadBitmapAndPrint(String szBmpFile, int m);
///函数功能:设置钱箱驱动方式 〈详见命令: ESC p m t1 t2〉
//参数:使用那个管脚输出脉冲 m=0 2脚 m=1 5脚 脉冲宽度为 t1*2ms t2*2ms ,其中要求 t1 < t2 ,一般 t1=150 t2=250
//返回值:0 -- 成功 -1 -- 失败
[DllImport("YkPosdll.dll", CharSet = CharSet.Ansi, CallingConvention = CallingConvention.StdCall)]
public static extern int YkSetCashBoxDriveMode(int m, int t1, int t2);
//函数功能:设置单状态回调函数(注:适用于能返回状态的打印机型号,如串口打印机)
//参数:pCallBack -- 回调函数指针
//返回值:0 -- 成功 -1 -- 失败
// [DllImport("YkPosdll.dll", CharSet = CharSet.Ansi, CallingConvention = CallingConvention.StdCall)]
//public static extern int YkSetCallBack(CallBack pCallBack);
//函数功能:使能打印状态回调函数,方便在回调函数根据打印机状态处理业务流程
//参数:enable = 1 ,使能 =0 禁用
//返回值:0 -- 成功 -1 -- 失败
[DllImport("YkPosdll.dll", CharSet = CharSet.Ansi, CallingConvention = CallingConvention.StdCall)]
public static extern int YkEnableCallBack(int enable);
//函数功能:直接与设备数据交互通信(注: 不熟悉设备功能,不建议直接使用)
//参数:pdata -- 将要送打印机的数据缓冲,len -- 数据长度
//返回值:0 -- 成功 -1 -- 失败
[DllImport("YkPosdll.dll", CharSet = CharSet.Ansi, CallingConvention = CallingConvention.StdCall)]
public static extern int YkDirectIO(byte[] pdata, int len);
//函数功能:写入打印机序列号(仅使用于杭州宽达公司)
//参数:pdata -- 将要写入的打印机序列号的的数据缓冲,字符串以0结尾
//返回值:0 -- 成功 -1 -- 失败
[DllImport("YkPosdll.dll", CharSet = CharSet.Ansi, CallingConvention = CallingConvention.StdCall)]
public static extern int YkWriteSerialNo(String pdata);
//函数功能:读取打印机序列号(仅使用于杭州宽达公司)
//参数:pdata -- 将要接收打印机序列号的的数据缓冲,字符串以0结尾
//返回值:0 -- 成功 -1 -- 失败
[DllImport("YkPosdll.dll", CharSet = CharSet.Ansi, CallingConvention = CallingConvention.StdCall)]
public static extern int YkReadSerialNo(String pdata);
//// iXpos 水平位置,单位:点
[DllImport("YkPosdll.dll", CharSet = CharSet.Ansi, CallingConvention = CallingConvention.StdCall)]
public static extern int YkPrintRasterBmp(String szBmpFile, int iXpos);
[DllImport("YkPosdll.dll", CharSet = CharSet.Ansi, CallingConvention = CallingConvention.StdCall)]
public static extern int YkGetState();
[DllImport("YkPosdll.dll", CharSet = CharSet.Ansi, CallingConvention = CallingConvention.StdCall)]
public static extern int YkPrintBitmapMatrix(String szBmpFile);
[DllImport("YkPosdll.dll", CharSet = CharSet.Ansi, CallingConvention = CallingConvention.StdCall)]
public static extern int YkGetASBStatus();
[DllImport("YkPosdll.dll", CharSet = CharSet.Ansi, CallingConvention = CallingConvention.StdCall)]
public static extern int YkPrintDownloadBitmap(int m);
[DllImport("YkPosdll.dll", CharSet = CharSet.Ansi, CallingConvention = CallingConvention.StdCall)]
public static extern int YkDownloadBitmap(String szBmpFile);
////通用函数
/*
函数描述:设置字体
变量名称 类型 变量含义 备注
入口参数:
iInDoubleHieght int 倍高
iInDoubleWide int 倍宽
iInUnderLine int 下划线
返回值: int 0:成功
1:失败
*/
[DllImport("YkPosdll.dll", CharSet = CharSet.Ansi, CallingConvention = CallingConvention.StdCall)]
public static extern int SetPrintFont(int iInDoubleHeight, int iInDoubleWide, int iInUnderLine);
/*
函数描述:设置左边距
变量名称 类型 变量含义 备注
入口参数:
iInDistance int 左边距单位 单位:0.1mm
返回值: int 0:成功
1:失败
*/
[DllImport("YkPosdll.dll", CharSet = CharSet.Ansi, CallingConvention = CallingConvention.StdCall)]
public static extern int SetLeftDistance(int iInDistance);
/*
函数描述:设置行高
变量名称 类型 变量含义 备注
入口参数:
iInDistance int 行间距 单位:0.1mm 等于0时默认高3.75mm
返回值: int 0:成功
1:失败
*/
[DllImport("YkPosdll.dll", CharSet = CharSet.Ansi, CallingConvention = CallingConvention.StdCall)]
public static extern int SetRowDistance(int iInDistance);
/*
函数描述:打印位图LOGO
变量名称 类型 变量含义 备注
入口参数:
pcInBmpFile char* Bmp文件名 支持相对路径和绝对路径,图片采用黑白单色bmp格式(一点占一位),分辩率300*100左右,大小不超过5k
返回值: int 0:成功
1:失败
*/
[DllImport("YkPosdll.dll", CharSet = CharSet.Ansi, CallingConvention = CallingConvention.StdCall)]
public static extern int PrintBmp(String pcInBmpFile);
/*
函数描述:打印字符
变量名称 类型 变量含义 备注
入口参数:
pcInstring char* 需打印字符 不自动换行
返回值: int 0:成功
1:失败
*/
[DllImport("YkPosdll.dll", CharSet = CharSet.Ansi, CallingConvention = CallingConvention.StdCall)]
public static extern int PrintString(String pcInstring);
/*
函数描述:打印字符
变量名称 类型 变量含义 备注
入口参数:
pcInstring char* 需打印的一行字符 自动换行
返回值: int 0:成功
1:失败
*/
[DllImport("YkPosdll.dll", CharSet = CharSet.Ansi, CallingConvention = CallingConvention.StdCall)]
public static extern int PrintLine(String pcInstring);
/*
函数描述:切纸
变量名称 类型 变量含义 备注