
// jsprinterDLLDlg.h : 头文件
//

#pragma once
#include "afxcmn.h"
#include "afxwin.h"

// 本动态库采用 ANSCII 编码 ,UNICODE ,UTF-8 编码的字符 需要先转成ANSCII编码后再传入调用
typedef int (_stdcall *puniOpenCom)(char *lpCom, int BaudRate);
typedef int (_stdcall *puniOpenUsbByVidPid)(int vid, int pid);
typedef int (_stdcall *puniOpenUsb)();
typedef int (_stdcall *puniConnectNetPortByIp)(char *ip, UINT32 port, int Timeout);
typedef int (_stdcall *puniOpenLpt)(char *lpLptName);
typedef BOOL (_stdcall *puniClose)(int fs);
typedef int (_stdcall *puniRead)(int fs, char *ReadBuf, int ReadBufSize);
typedef int (_stdcall *puniWrite)(int fs, char *SendBuf, int SendBufSize);
typedef BOOL (_stdcall *puniInitNetSev)();
typedef BOOL (_stdcall *puniCloseNetServ)();

typedef int(_stdcall *puniPrintImg1b2a)(int fs, char* imgpath);
typedef int(_stdcall *puniPrintImg1d76)(int fs, char* imgpath, int printerwidth);
/**
* FS p n m<br>
* 打印下载到FLASH中的位图
* @param n，表示位图，0-255
* @param m：0-3或48-51
* @return int
* */
typedef int(_stdcall *puniprintBmpInFLASH)(int fs, int n, int m);

typedef int  (_stdcall *punihorizontalPositioning)(int fs);
/**
* LF<br>
* 打印并换行
* @return int;
* */
typedef int (_stdcall *puniprintAndFeedLine)(int fs);
/**
* FF<br>
* 打印并回到标准模式
* @return int;
* */
typedef int  (_stdcall *puniprintAndBackStandardmodel)(int fs);
/**
* CR<br>
* 打印并跳格
* @return int
* */
typedef int  (_stdcall *puniPrintAndCarriageReturn)(int fs);
/**
* CAN<br>
* 页模式下取消打印数据
* @return int;
* */
typedef int  (_stdcall *punicanclePrintDataByPagemodel)(int fs);
/**
* DLE EOT n<br>
* 实时状态传送
* @param n,1<=n<=4;
* @return int;
* */
typedef int  (_stdcall *punisendRealtimestatus)(int fs, int n);
/**
* DLE ENQ n<br>
* 实时对打印机请求
* @param n,1<=n<=2
* @return int
* */
typedef int  (_stdcall *punirequestRealtimeForPrint)(int fs, int n);
/**
* DLE DC4 n m t<br>
* 实时产生开钱箱脉冲
* @param m:0,1;
* @param t,1<=t<=8;
* @return int
* */
typedef int  (_stdcall *puniopenCashboxRealtime)(int fs, int m, int t);
/**
* ESC FF<br>
* 页模式下打印<br>
* 该命令只在页模式下有效
* @return int
* */
typedef int  (_stdcall *puniprintByPagemodel)(int fs);
/**
* 设置字符右间距<br>
* @param n,代表间距大小的变量，范围0-255；
* @return int
* */
typedef int  (_stdcall *punisetCharRightSpace)(int fs, int n);
/**
* ESC ！n<br>
* 选择打印模式
* @param n代表打印模式的变量，范围0-255
* @return int
* */
typedef int  (_stdcall *puniselectPrintModel)(int fs, int n);
/**
* ESC $ nL nH<br>
* 设置绝对打印位置
* @param m，n，m+n*256代表距离行首位置，范围0-255；
* @return int
* */
typedef int  (_stdcall *punisetAbsolutePrintPosition)(int fs, int m, int n);
/**
* ESC % n<br>
* 选择或取消用户自定义字符
* @param n，0-255，最低位为1，使用；最低位为0，不使用；
* @return int
* */
typedef int  (_stdcall *puniselectOrCancleCustomChar)(int fs, int n);
/**
* ESC $ Y c1 c2 [x1 d1...d(x1*y)]...[xk d1...d(y*xk)]<br>
* 定义用户自定义字符
* @param c1,c1是起始字符代码,范围32<=c1<=c2<=127
* @param c2，c2是终止字符代码，范围32<=c1<=c2<=127;
* @param b，字节数组b的格式为[x1 d1...d(x1*y)]...[xk d1...d(y*xk)]，为字符下载的字符的数据的集合,自定义字符的规则详情，请参考编程手册；
* @return int
* */
typedef int  (_stdcall *punidefineuserDefinedCharacters)(int fs, int c1, int c2, char b[], int nlen);
/**
* ESC * m nL nH d1 d2...dk<br>
* 选择位图模式<br>
* 该指令详情请参考编程手册
* @param m范围：0,1,32，33,代表不同点的密度
* @param nL范围：0-255
* @param nH范围：0-3
* @param b，b={d1 d2...dk}，m=0或1,k=nL+nH*256;m=32或33,k=(nL+nH*256)*3;0<=d<=255;
* @return int
* */
typedef int  (_stdcall *puniselectBmpModel)(int fs, int m, int nL, int nH, char b[]);
/**
* ESC-n<br>
* 选择或者取消下划线模式
* @param n:0,48 取消下划线；1,49选择下划线（1点宽）;2,50选择下划线（2点宽）;
* @return int
* */
typedef int  (_stdcall *puniselectOrCancelUnderlineModel)(int fs, int n);
/**
* ESC 2<br>
* 设置默认行间距
* 大约3.75mm
* @return int
* */
typedef int  (_stdcall *punisetDefultLineSpacing)(int fs);
/**
* ESC 3 n<br>
* 设置行间距
* @param n范围：0-255
* */
typedef int  (_stdcall *punisetLineSpaceing)(int fs, int n);
/**
* ESC=n<br>
* 选择打印机
* @param n：0或1
* @return int
* */
typedef int  (_stdcall *puniselectPrinter)(int fs, int n);
/**
* ESC ? n<br>
* 取消用户自定义字符
* 取消用户自定义字符中代码为n的字符
* @param n范围:32-127
* @return int
* */
typedef int  (_stdcall *punicancelUserDefinedCharacters)(int fs, int n);
/**
* ESC @<br>
* 初始化打印机
* @return int
* */
typedef int  (_stdcall *puniinitializePrinter)(int fs);
/**
* ESC D n1...nk NUL;<br>
* 设置横线跳格位置
* @param b={n1...nk};k<=32;跳格距离=字符宽度*n；<br>
* 参数b内的n值大小和个数设置请参考编程手册
* @return int
* */
typedef int  (_stdcall *punisetHorizontalmovementPosition)(int fs, char b[], int nblen);
/**
* ESC E n<br>
* 选择或取消加粗模式
* @param n，0-255，最低位为1，选择加粗；最低位为0，取消加粗；
* @return int
* */
typedef int  (_stdcall *puniselectOrCancelBoldModel)(int fs, int n);
/**
* ESC G n<br>
* 选择或取消双重打印模式
* @param n，0-255，最低位为1，选择双重打印；最低位为0，取消双重打印；
* @return int
* */
typedef int  (_stdcall *puniselectOrCancelDoubelPrintModel)(int fs, int n);
/**
* ESC J n<br>
* 打印并走纸
* @param n走纸距离，单位英寸，范围：0-255
* @return int
* */
typedef int  (_stdcall *puniprintAndFeed)(int fs, int n);
/**
* ESC L<br>
* 选择页模式
* @return int
* */
typedef int  (_stdcall *puniselectPageModel)(int fs);
/**
* ESC M n<br>
* 选择字体
* @param n 范围：0，1，48，49；0，48标准字体；1，49压缩字体
* @return int
* */
typedef int  (_stdcall *puniselectFont)(int fs, int n);
/**
* ESC R n<br>
* 选择国际字符集
* @param n：0-15；代表某一种国际字符集
* @return int
* */
typedef int  (_stdcall *puniselectInternationalCharacterSets)(int fs, int n);
/**
* ESC S<br>
* 选择标准模式
* @return int
* */
typedef int  (_stdcall *puniselectStandardModel)(int fs);
/**
* ESC T n<br>
* 在页模式下选择打印区域方向
* @param n：0<=n<=3,48<=n<=51;n指定打印区域的方向和起始位置
* @return int
* */
typedef int  (_stdcall *puniselectPrintDirectionUnderPageModel)(int fs, int n);
/**
* ESC V n<br>
* 选择或取消顺时针旋转90度<br>
* 此命令只在页模式下有效
* @param n:0<=n<=1,48<=n<=49;0,48代表取消，1,49代表选择
* @return int
* */
typedef int  (_stdcall *puniselectOrCancelCW90)(int fs, int n);
/**
* ESC W  xL xH yL yH dxL dxH dyL dyH<br>
* 页模式下设置打印区域
* @param  0<=xL xH yL yH dxL dxH dyL dyH<=255
* @return int
* */
typedef int  (_stdcall *punisetPrintAreaUnderPageModel)(int fs, int xL, int xH, int yL, int yH, int dxL, int dxH, int dyL, int dyH);
/**
* ESC \ nL nH<br>
* 设置相对横向打印位置<br>
* 指令使用详情请参考编程手册
* @param nL,nH范围：0-255
* @return int
* */
typedef int  (_stdcall *punisetRelativeHorizontalPrintPosition)(int fs, int nL, int nH);
/**
* ESC a n<br>
* 选择对齐方式
* @param n:0-2或48-50；分别表示：左对齐，居中，右对齐
* @return int
* */
typedef int  (_stdcall *puniselectAlignment)(int fs, int n);
/**
* ESC c 3 n<br>
* 选择打印机纸传感器以输出缺纸信号
* @param n：0-255
* @return int
* */
typedef int  (_stdcall *puniselectPrintTransducerOutPutPageOutSignal)(int fs, int n);
/**
* ESC c 4 n<br>
* 选择打印机传感器一停止打印
* @param n:0-255
* @return int
* */
typedef int  (_stdcall *puniselectPrintTransducerStopPrint)(int fs, int n);
/**
* ESC c 5 n<br>
* 允许或禁止按键
* @param n：0-255，n的最后一位为0，按键启用，为1，按键禁止；
* @return int
* */
typedef int  (_stdcall *puniallowOrForbidPressButton)(int fs, int n);
/**
* ESC d n<br>
* 打印并向前走纸n行
* @param n:0-255；
* @return int
* */
typedef int  (_stdcall *puniprintAndFeedForward)(int fs, int n);
/**
* ESC p m t1 t2<br>
* 产生钱箱控制脉冲
* @param m ：连接引脚，范围：0,1,48,49；
* @param t1,t2：0-255
* @return int
* */
typedef int  (_stdcall *punicreatCashboxContorlPulse)(int fs, int m, int t1, int t2);
/**
* ESC t n<br>
* 选择字符代码表
* @param n：0<=n<=10,16<=n<=19;
* @return int
* */
typedef int  (_stdcall *puniselectCharacterCodePage)(int fs, int n);
/**
* ESC { n<br>
* 选择或取消倒置打印模式
* @param n：最低位0取消，最低位1选择，范围：0-255；
* @return int
* */
typedef int  (_stdcall *puniselectOrCancelConvertPrintModel)(int fs, int n);

/**
* GS ! n<br>
* 选择字符大小
* @param n 范围0-255；n的0到3位设定字符高度，4-7位用来设定字符宽度
* @return int
* */
typedef int  (_stdcall *puniselectCharacterSize)(int fs, int n);
/**
* GS $ nL nH<br>
* 页模式下设置绝对位置
* @param nL,nH,nl+nh*256代表位置，单位英寸；nl和nh的范围：0-255；
* @return int
* */
typedef int  (_stdcall *punisetAbsolutePositionUnderPageModel)(int fs, int nL, int nH);

/**
* GS ( A pL pH n m<br>
* 执行打印机数据十六进制转储
* @return int
* */
typedef int  (_stdcall *puniexecutePrintDataSaveByTransformToHex)(int fs);
/**
* GS / m<br>
* 打印下载位图
* @param m，指定打印模式，范围：0-3或48-51；
* @return int
* */
typedef int  (_stdcall *puniprintDownLoadBmp)(int fs, int m);
/**
* GS ：<br>
* 开始或结束宏定义
* @return int
* */
typedef int  (_stdcall *punistartOrStopMacrodeFinition)(int fs);
/**
* GS B n<br>
* 选择或取消黑白反显打印模式
* @param n：0-255，最低位为0，取消反显打印，最低位为1，选择反显打印
* @return int
* */
typedef int  (_stdcall *puniselectOrCancelInvertPrintModel)(int fs, int n);
/**
* GS H n<br>
* 选择HRI字符打印位置;
* HRI是对条码内容注释的字符;
* @param n:范围0-3或者48-51；代表字符在条码的打印位置
* @return int
* */
typedef int  (_stdcall *puniselectHRICharacterPrintPosition)(int fs, int n);
/**
* GS L nL nH<br>
* 设置左边距
* @param nL，nH，范围0-255，（nl+nh*256）*横向移动单位，代表设置的左边距，单位：英寸
* @return int
* */
typedef int  (_stdcall *punisetLeftSpace)(int fs, int nL, int nH);
/**
* GS P x y<br>
* 设置横向和纵向移动单位<br>
* @param x设置横向移动单位的参数，0-255
* @param y设置纵向移动单位的参数，0-255
* 当x和y为0时，xy被设置为默认值
* @return int
* */
typedef int  (_stdcall *punisetHorizontalAndVerticalMoveUnit)(int fs, int x, int y);
/**
* GS V m<br>
* 选择切纸模式并切纸
* @param m：0，48，全切；1,49，半切
* @return int
* */
typedef int  (_stdcall *puniselectCutPagerModerAndCutPager)(int fs, int m);
/**
* GS V m n<br>
* 选择切纸模式并切纸
* @param m：只能是66
* @param n:进纸n，然后半切纸
* @return int
* */
typedef int  (_stdcall *puniselectCutPagerModerAndCutPager2)(int fs, int m, int n);
/**
* GS W nL nH<br>
* 设置打印区域宽度
* @param nL,(nl+nh*256)*横向移动单位，代表打印区域宽度
* @param nH,(nl+nh*256)*横向移动单位，代表打印区域宽度
*
* @return int
* */
typedef int  (_stdcall *punisetPrintAreaWidth)(int fs, int nL, int nH);
/**
* GS \ nL nH<br>
* 页模式下设置相对打印位置
* @param nL,(nl+nh*256)*纵向移动单位，表示相对当前打印位置纵向移动距离
* @param nH,(nl+nh*256)*纵向移动单位，表示相对当前打印位置纵向移动距离
* @return int
* */
typedef int  (_stdcall *punisetVerticalRelativePositionUnderPageModel)(int fs, int nL, int nH);
/**
* GS ^ r t m<br>
* 执行宏命令
* @param r：0-255，指定执行次数
* @param t：0-255，执行等等时间
* @param m：0或1，执行模式
* @return int
* */
typedef int  (_stdcall *puniexecuteMacrodeCommand)(int fs, int r, int t, int m);
/**
* GS a n<br>
* 打开或关闭自动状态返回功能
* @param n，0-255，每一位代表不同的状态返回
*	@return int
* */
typedef int  (_stdcall *puniopenOrCloseAutoReturnPrintState)(int fs, int n);
/**
* GS f n<br>
* 选择HRI使用字体
* @param n ：0,48代表标准；1，49代表压缩字体；
* @return int
* */
typedef int  (_stdcall *puniselectHRIFont)(int fs, int n);
/**
* GS h n<br>
* 选择条码高度
* @param n ：1-255；默认162
* @return int
* */
typedef int  (_stdcall *punisetBarcodeHeight)(int fs, int n);
/**
* GS r n<br>
* 返回状态
* @param n 范围：1,2,49,50;1,49返回传感器状态,2,50返回钱箱状态;
* @return int
*
* */
typedef int  (_stdcall *punireturnState)(int fs, int n);
/**
* GS w n<br>
* 设置条码宽度
* @param n：2-6；默认3；
* @return int
* */
typedef int  (_stdcall *punisetBarcodeWidth)(int fs, int n);
/**
* FS ! n<br>
* 设置汉字字符模式
* @param n:0-255；字节的不同位定义字符模式
* @return int
* */
typedef int  (_stdcall *punisetChineseCharacterModel)(int fs, int n);
/**
* FS &<br>
* 选择汉字模式
* @return int
* */
typedef int  (_stdcall *puniselectChineseCharModel)(int fs);
/**
* FS - n<br>
* 选择或取消汉字下划线模式
* @param n：0-2或48-50；
* @return int
* */
typedef int  (_stdcall *puniselectOrCancelChineseCharUnderLineModel)(int fs, int n);
/**
* FS .<br>
* 取消汉字模式
* @return int
* */
typedef int  (_stdcall *puniCancelChineseCharModel)(int fs);
/**
* FS 2 c1 c2 d1...dk<br>
* 定义用户自定义汉字
*
* @param c2:A1H<=c2<=FEH
* @param b,长度为72，代表定义的汉字的数据int
* @return int
* */
//typedef int  (_stdcall *punidefinedUserDefinedChineseChar)(int fs, int c2, int b);
//}
/**
* FS S n1 n2<br>
* 设置汉字字符左右间距
* @param n1,设置左间距，0-255；
* @param n2,设置右间距，0-255；
* @return	int
* */
typedef int  (_stdcall *punisetChineseCharLeftAndRightSpace)(int fs, int n1, int n2);
/**
* FS W n<br>
* 选择或取消汉字倍高倍宽
* @param n：0-255；只有最低位有效，0，取消；1，选择
* @return int
* */
typedef int  (_stdcall *puniselectOrCancelChineseCharDoubleWH)(int fs, int n);
/**
* ESC B n t<br>
* 打印机来单打印蜂鸣提示
* @param n 蜂鸣次数.1-9
* @param t 每次蜂鸣时间，t*50ms,1-9
* @return int
* */
typedef int  (_stdcall *puniprinterOrderBuzzingHint)(int fs, int n, int t);
/**
* ESC C m t n<br>
* 打印机来单蜂鸣提示及报警灯闪烁
* @param m 蜂鸣次数报警灯闪烁次数.范围1-20
* @param t 每次鸣叫或闪烁间隔时间，（t*50ms），范围1-20
* @param n 0-3；分别表示是否鸣叫，闪烁；
* @return int
* */
typedef int  (_stdcall *puniprinterOrderBuzzingAndWarningLight)(int fs, int m, int t, int n);

/**
* GS ( k p L p H cn fn n (fn = 65)<br>
* Sets the number of columns of the data area for PDF417<br>
* (p L + p H × 256) = 3 (p L = 3, p H = 0)<br>
* cn = 48<br>
* fn = 65<br>
* @param 0 ≤ n ≤ 30;
* @return int
* */
typedef int  (_stdcall *puniSetsTheNumberOfColumnsOfTheDataAreaForPDF417)(int fs, int n);
/**
* Sets the number of rows of the data area for PDF417<br>
* GS ( k p L p H cn fn n (fn = 66)<br>
* (p L + p H × 256) = 3 (p L = 3, p H = 0)<br>
* cn = 48<br>
* fn = 66<br>
* @param n=0,3 ≤ n ≤ 90;
* @return int
* */
typedef int  (_stdcall *puniSetsTheNumberOfRowsOfTheDataAreaForPDF417)(int fs, int n);
/**
* Sets the module width of one PDF417 symbol to n dots.<br>
*  GS ( k p L p H cn fn n (fn = 67)<br>
*  [Range]  (p L + p H × 256) = 3 (p L = 3, p H = 0)<br>
*  			cn = 48	<br>
*  			fn = 67	<br>
*   @param		2 ≤ n ≤ 8	<br>
* 				[Default]  n =3<br>
* @return int
*
* */
typedef int  (_stdcall *puniSetsTheModuleWidthOfPDF417)(int fs, int n);
/**
*  Sets the module height to [(module width) × n].<br>
*   GS ( k p L p H cn fn n (fn = 68)<br>
*   [Range]  (p L + p H × 256) = 3 (p L = 3, p H = 0)<br>
*   cn = 48<br>
*   fn = 68<br>
*  @param  2 ≤ n ≤ 8<br>
*   [Default]  n = 3<br>
*   @return int
* */
typedef int  (_stdcall *puniSetsTheModuleHeightForPDF417)(int fs, int n);
/**
* Sets the error correction level for PDF417 symbols.<br>
* GS ( k p L p H cn fn m n (fn = 69)<br>
* [Range]  (p L + p H × 256) = 4 (p L = 4, p H = 0)<br>
* cn = 48<br>
* fn = 69<br>
* @param m = 48, 49<br>
* @param n:48 ≤ n ≤ 56 (when m = 48 is specified),1 ≤ n ≤ 40 (when m = 49 is specified)<br>
* [Default]  m = 49, n = 1<br>
* @return int
* */
typedef int  (_stdcall *puniSetsTheErrorCorrectionLevelForPDF417)(int fs, int m, int n);
/**
* Specifies or cancels various PDF417 symbol options<br>
*  GS ( k p L p H cn fn m (fn = 70)<br>
* [Range]  (p L + p H × 256) = 3 (p L = 3, p H = 0)<br>
* cn = 48<br>
* fn = 70<br>
* @param m = 0 or 1<br>
* [Default]  m = 0
* @return int
* */
typedef int  (_stdcall *puniSpecifiesOrCancelsVariousPDF417SymbolOptions)(int fs, int m);
/**
*  Stores symbol data (d1...dk) in the PDF417 symbol storage area.<br>
*   GS ( k p L p H cn fn m d1 … dk (fn = 80)<br>
*   [Range]  4 ≤ (p L + p H × 256) ≤ 65535 (0 ≤ p L ≤ 255, 0 ≤ p H ≤ 255)<br>
*   cn = 48<br>
*   fn = 80<br>
*   m = 48<br>
*   @param b={d1...dk},k为b的长度<br>
*   0 ≤ d ≤ 255<br>
*   k = (p L + p H × 256) – 3<br>
*   @return int
* */
typedef int  (_stdcall *puniStoresSymbolDataInThePDF417SymbolStorageArea)(int fs, int pL, int pH, char b[], int nblen);
/**
* Prints the PDF417 symbol data in the symbol storage area.<br>
* GS ( k p L p H cn fn m (fn = 81)<br>
* [Range]  (p L + p H × 256) = 3 (p L = 3, p H = 0)<br>
* cn = 48<br>
* fn = 81<br>
* m = 48<br>
* @return int
* */
typedef int  (_stdcall *puniPrintsThePDF417SymbolDataInTheSymbolStorageArea)(int fs);
/**
* Transmits the size of the symbol data in the symbol storage area.<br>
*  GS ( k p L p H cn fn m (fn = 82)<br>
*  Hex  1D  28  6B  p L p H cn  fn  m<br>
*  [Range]  (p L + p H × 256) = 3 (p L = 3, pH = 0)<br>
*  cn = 48<br>
*  fn = 82<br>
*  m = 48<br>
*  @return int
* */
typedef int  (_stdcall *puniTransmitsTheSizeOfTheSymbolDataInTheSymbolStorageAreaPDF417)(int fs);
/**
* Specifies the mode for QRCode symbol by n1;<br>
*  GS ( k p L p H cn fn n1 n2 (fn = 65);<br>
*  Hex  1D  28  6B  p L p H cn  fn  n1  n2;<br>
*  [Range]  p L = 4, p H = 0;<br>
*  cn = 49;<br>
*  fn = 65;<br>
*  @param n1:n1 = 49, 50;
*  n2 = 0;<br>
*  [Default]  n1 = 50;<br>
*  n2 = 0<br>
*  @return int
* *
/**
* Sets the size of the QRCode symbol module to [n dots × n dots]<br>
*  GS ( k p L p H cn fn n (fn = 67)<br>
*  Hex  1D  28  6B  p L p H cn  fn  n<br>
*  [Range]  p L = 3, p H = 0<br>
*  cn = 49<br>
*  fn = 67<br>
* @param n 1<=n<=16
*  [Default]  n = 3<br>
*  @return int
* */
typedef int  (_stdcall *puniSetsTheSizeOfTheQRCodeSymbolModule)(int fs, int n);
/**
* Sets the error correction level for QRCode symbol.<br>
* GS ( k p L p H cn fn n (fn = 69)<br>
* Hex  1D  28  6B  p L p H cn  fn  n<br>
* [Range]  p L = 3, p H = 0<br>
* cn = 49<br>
* fn = 69<br>
* @param 48 ≤ n ≤ 51
* [Default]  n = 48<br>
* @return int
* */
typedef int  (_stdcall *puniSetsTheErrorCorrectionLevelForQRCodeSymbol)(int fs, int n);
/**
* Stores symbol data (d1…dk) in the QRCode symbol storage area.<br>
* GS ( k p L p H cn fn m d1…dk (fn = 80)<br>
* Hex  1D  28  6B  p L p H cn  fn  m  d1…dk<br>
* [Range]  4 ≤ (p L + p H × 256) ≤ 7092 (0 ≤ p L ≤ 255, 0 ≤ p H ≤ 28)<br>
* cn = 49<br>
* fn = 80<br>
* m = 48<br>
* 32≤ d ≤ 255<br>
*
* @param code qrcode content<br>
*
* k = (p L + p H × 256)<br>
* @return int
* */
/**
* Prints the QRCode symbol data in the symbol storage area.<br>
* GS ( k p L p H cn fn m (fn = 81)<br>
* Hex  1D  28  6B  p L p H cn  fn m<br>
* [Range]  p L = 3, p H = 0<br>
* cn = 49<br>
* fn = 81<br>
* m = 48<br>
* @return int
* */
typedef int  (_stdcall *puniPrintsTheQRCodeSymbolDataInTheSymbolStorageArea)(int fs);
/**
* 封装好的QRcode打印指令<br>
* @param n 单元大小，默认值为n=3
* @param errLevel 纠错等级 48-51；
* @param code 二维码内容字符串
*
* */

/**
* Transmits the size of the symbol data in the symbol storage area<br>
* GS ( k p L p H cn fn m (fn = 82)<br>
* Hex  1D  28  6B  p L p H cn  fn  m<br>
* [Range]  p L = 3, pH = 0<br>
* cn = 49<br>
* fn = 82<br>
* m = 48<br>
* @return int
* */
typedef int  (_stdcall *puniTransmitsTheSizeOfTheSymbolDataInTheSymbolStorageAreaQRCode)(int fs);
/**
* Specifies the mode for MaxiCode symbol<br>
*  GS ( k p L p H cn fn n (fn = 65)<br>
*  Hex  1D  28  6B  p L p H cn  fn  n<br>
*  [Range]  p L = 3, p H = 0<br>
*  cn = 50<br>
*  fn = 65<br>
*  @param 50 ≤ n ≤ 54<br>
*  [Default]  n = 50<br>
*  @return int
* */
typedef int  (_stdcall *puniSpecifiesTheModeForMaxiCodeSymbol)(int fs, int n);
/**
* Stores symbol data (d1…dk) in the MaxiCode symbol storage area.<br>
* GS ( k p L p H cn fn m d1…dk (fn = 80)<br>
* Hex  1D  28  6B  p L p H cn  fn  m  d1…dk<br>
* [Range]  4 ≤ (p L + p H × 256) ≤ 141 (0 ≤ p L ≤ 141, p H = 0)<br>
* cn = 50<br>
* fn = 80<br>
* m = 48<br>
* 1 ≤ d ≤ 255<br>
* k = (p L + p H × 256) – 3<br>
* @param pL :int
* @param pH :int
* @param b :int
* @return int
* */
typedef int  (_stdcall *puniStoresSymbolDataInItheMaxiCodeSymbolStorageArea)(int fs, int pL, int pH, char b[], int nblen);
/**
* Prints the MaxiCode symbol data in the symbol storage area<br>
* GS ( k p L p H cn fn m (fn = 81)<br>
* Hex  1D  28  6B  p L p H cn  fn m<br>
* [Range]  p L = 3, p H = 0<br>
* cn = 50<br>
* fn = 81<br>
* m = 48<br>
* @return int
* */
typedef int  (_stdcall *puniPrintsTheMaxiCodeSymbolDataInTheSymbolStorageArea)(int fs);
/**
* Transmits the size of the encoded symbol data in the symbol storage area<br>
* ASCII  GS  (  k  p L p H cn  fn  m<br>
* Hex  1D  28  6B  p L p H cn  fn  m<br>
* [Range]  p L = 3, pH = 0<br>
* cn = 50<br>
* fn = 82<br>
* m = 48<br>
* @return int
* */
typedef int  (_stdcall *puniTransmitsTheSizeOfTheEncodedSymbolDataInTheSymbolStorageAreaMaxiCode)(int fs);

typedef BOOL  (_stdcall *puniDownLogo)(int fs, char *strBmpFilePath);

/**
* 打印制定文字的二维码
* @fs 句柄
* @strTrxData  文本内容
* @nZoomIn  放大系数 1-16
* @nErrorLevel  错误修正级别 1=7%，2=15%，3=25%，4=30%
* @bCut  是否切纸
* @return >0 成功，<= 0 失败
* */
typedef int  (_stdcall *puniTwobarCodes)(int fs, char *strTrxData, int nZoomIn, int nErrorLevel, int bCut);

/**
* 打印制定文字的二维码
* @fs 句柄
* @nCodeType  条码类型 65 UPC_A ,66 UPC_C ,67 EN(JAN)13 ,68 EN(JAN)8 ,69 CODE39 ,70 ITF ,71 CODABAR ,72 CODE93,73 CODE128
* @High  1<= High <= 255
* @align 0 左对齐 1 中间对齐 2 右对齐
* @codeTextalign n  条码字符打印位置
0, 48  不打印
1, 49  条码上方
2, 50  条码下方
3, 51  条码上、下方都打印
* @width 宽度 根据类型而定，有范围
* @codeText 字符根据 类型而定，可参考编程手册

* @return >0 成功，<= 0 失败
* */
typedef int  (_stdcall *puniPrintbarCodes)(int fs, char *code, char *codebarText, int nCodeType,
	int width, int High, int align, int codeTextalign);


// CjsprinterDLLDlg 对话框
class CjsprinterDLLDlg : public CDialogEx
{
// 构造
public:
	CjsprinterDLLDlg(CWnd* pParent = NULL);	// 标准构造函数

// 对话框数据
	enum { IDD = IDD_JSPRINTERDLL_DIALOG };

	protected:
	virtual void DoDataExchange(CDataExchange* pDX);	// DDX/DDV 支持


// 实现
protected:
	HICON m_hIcon;

	// 生成的消息映射函数
	virtual BOOL OnInitDialog();
	afx_msg void OnSysCommand(UINT nID, LPARAM lParam);
	afx_msg void OnPaint();
	afx_msg HCURSOR OnQueryDragIcon();
	DECLARE_MESSAGE_MAP()
public:
	afx_msg void OnBnClickedButton1();

	puniOpenCom uniOpenCom = NULL;
	puniOpenUsbByVidPid uniOpenUsbByVidPid = NULL;
	puniOpenUsb uniOpenUsb = NULL;
	puniConnectNetPortByIp uniConnectNetPortByIp = NULL;
	puniOpenLpt uniOpenLpt = NULL;
	puniClose uniClose = NULL;
	puniRead uniRead = NULL;
	puniWrite uniWrite = NULL;
	puniInitNetSev uniInitNetSev = NULL;
	puniCloseNetServ uniCloseNetServ = NULL;

	puniPrintImg1d76 uniPrintImg1d76 = NULL;
	puniDownLogo uniDownLogo = NULL;
	puniprintBmpInFLASH uniprintBmpInFLASH = NULL;
	puniPrintImg1b2a uniPrintImg1b2a = NULL;

	HINSTANCE hDllInst;
	CIPAddressCtrl m_ipctr;
	void InitComb();
//	CString m_ComPort;
//	CString m_baudrate;
//	int m_baudrate1;
//	int m_baudrate;
	CString m_ComPort;
//	CComboBox m_Lpt;
	CString m_LptPort;
//	CComboBox m_baudrate1;
//	CComboBox m_baudrate;
	int m_baudrate;
	afx_msg void OnBnClickedbtnprintimg1d76();
	int m_portselect;
	afx_msg void OnBnClickedbtnprint();
	afx_msg void OnBnClickedBtnprinttxt();
	afx_msg void OnBnClickedBtnprinthex();
	CString SendTemp;
	afx_msg void OnBnClickedBtnread();
	afx_msg void OnBnClickedBtncall();
	CString m_strfunc;
	void LoadFuncNames();

	int  uniOpen();
	void PrintImg1d76();
	void PrintImg1b2a();
	void DownLogo();
};
