环境

打印机是美松的热敏打印机,厂商只提供动态库和demo。

win10 1909 + vs2017

java 本地方法

参考demo中的代码,写好java接口

package com.cares.msprint;

/**
 * @author wangcj
 * @desc
 * @date 2021/4/28 16:21
 **/
public class MsPrintSdk {

    public static native int SetPrintport(String strPort, int iBaudrate);

    public static native int SetUsbportauto();

    public static native int SetInit();

    public static native int SetClean();

    public static native int SetClose();

    public static native int SetAlignment(int iAlignment);

    public static native int SetAlignmentLeftRight(int iAlignment);

    public static native int SetSizetext(int iHeight, int iWidth);

    public static native int SetSizechar(int iHeight, int iWidth, int iUnderline, int iAsciitype);

    public static native int SetSizechinese(int iHeight, int iWidth, int iUnderline, int iChinesetype);

    public static native int SetLinespace(int iLinespace);

    public static native int SetBold(int iBold);

    public static native int SetSpacechar(int iSpace);

    public static native int SetSpacechinese(int iChsleftspace, int iChsrightspace);

    public static native int SetNvbmp(int iNums, String strPath);

    public static native int SetMarkoffsetcut(int iOffset);

    public static native int SetMarkoffsetprint(int iOffset);

    public static native int SetLeftmargin(int iLeftspace);

    public static native int SetDirection(int iDirection);

    public static native int SetItalic(int iItalic);

    public static native int SetRotate(int iRotate);

    public static native int SetWhitemodel(int iWhite);

    public static native int SetCommandmode(int iMode);

    public static native int SetUnderline(int underline);

    public static native int SetReadZKmode(int mode);

    public static native int SetHTseat(String bHTseat, int iLength);

    public static native int PrintNextHT();

    public static native int PrintSelfcheck();

    public static native int PrintString(String strData, int iImme);

    public static native int PrintFeedline(int iLine);

    public static native int PrintCutpaper(int iMode);

    public static native int PrintQrcode(String strData, int iLmargin, int iMside, int iRound);

    public static native int PrintQRcode500II(int iwidth, String strData);

    public static native int Print1Dbar(int iWidth, int iHeight, int iHrisize, int iHriseat, int iCodetype, String strData);

    public static native int PrintPdf417(int iDotwidth, int iDotheight, int iDatarows, int iDatacolumns, String strData);

    public static native int PrintDiskbmpfile(String strPath);

    public static native int PrintNvmbp(int iNvindex, int iMode);

    public static native int PrintMarkposition();

    public static native int PrintMarkpositionprint();

    public static native int PrintMarkpositioncut();

    public static native int PrintMarkcutpaper(int iMode);

    public static native int PrintTransmit(String bCmd, int iLength);

    public static native int PrintChangeRow();

    public static native int PrintRemainQR();

    public static native int PrintFeedDot(int Lnumber);

    public static native String GetProductinformation(int iFstype);

    public static native int GetTransmit(String bCmd, int iLength, String bRecv, int iRelen);

    public static native int GetStatus();

    public static native int GetStatusspecial();

    public static native int GetSDKinformation(String bInfodata);

    public static native int SetRotation_Intomode();

    public static native int PrintRotation_Data();

    public static native int PrintRotation_Sendtext(String strData, int iImme);

    public static native int PrintRotation_Sendcode(int leftspace, int iWidth, int iHeight, int iCodetype, String strData);

    public static native int PrintRotation_Changeline();

    public static native int SetRotation_Leftspace(int iLeftspace);

    public static native int SetPrintIDorName(String strIDorNAME);

    public static native String GetPrintIDorName();

    public static native int SetComportauto();

    public static native int SetPrintportFlowCtrl(int iFlowCtrlFlag);

    public static native void SetTraceLog(int iLog);

    public static native int PrintPDF_CCCB_A(String strPath);

    public static native int PrintPDF_CCCB_B(String strPath);

    public static native int GetStatus_TS();

    public static native int SetPrintConn(int iConnWay, String strName, String strValue);

    public static native int PrintDataMatrix(String strData, int iSize);
}

使用javah 生成头文件

/* DO NOT EDIT THIS FILE - it is machine generated */
#include <jni.h>
/* Header for class com_cares_msprint_MsPrintSdk */

#ifndef _Included_com_cares_msprint_MsPrintSdk
#define _Included_com_cares_msprint_MsPrintSdk
#ifdef __cplusplus
extern "C" {
#endif
/*
 * Class:     com_cares_msprint_MsPrintSdk
 * Method:    SetPrintport
 * Signature: (Ljava/lang/String;I)I
 */
JNIEXPORT jint JNICALL Java_com_cares_msprint_MsPrintSdk_SetPrintport
  (JNIEnv *, jclass, jstring, jint);

/*
 * Class:     com_cares_msprint_MsPrintSdk
 * Method:    SetUsbportauto
 * Signature: ()I
 */
JNIEXPORT jint JNICALL Java_com_cares_msprint_MsPrintSdk_SetUsbportauto
  (JNIEnv *, jclass);

/*
 * Class:     com_cares_msprint_MsPrintSdk
 * Method:    SetInit
 * Signature: ()I
 */
JNIEXPORT jint JNICALL Java_com_cares_msprint_MsPrintSdk_SetInit
  (JNIEnv *, jclass);

/*
 * Class:     com_cares_msprint_MsPrintSdk
 * Method:    SetClean
 * Signature: ()I
 */
JNIEXPORT jint JNICALL Java_com_cares_msprint_MsPrintSdk_SetClean
  (JNIEnv *, jclass);

/*
 * Class:     com_cares_msprint_MsPrintSdk
 * Method:    SetClose
 * Signature: ()I
 */
JNIEXPORT jint JNICALL Java_com_cares_msprint_MsPrintSdk_SetClose
  (JNIEnv *, jclass);

/*
 * Class:     com_cares_msprint_MsPrintSdk
 * Method:    SetAlignment
 * Signature: (I)I
 */
JNIEXPORT jint JNICALL Java_com_cares_msprint_MsPrintSdk_SetAlignment
  (JNIEnv *, jclass, jint);

/*
 * Class:     com_cares_msprint_MsPrintSdk
 * Method:    SetAlignmentLeftRight
 * Signature: (I)I
 */
JNIEXPORT jint JNICALL Java_com_cares_msprint_MsPrintSdk_SetAlignmentLeftRight
  (JNIEnv *, jclass, jint);

/*
 * Class:     com_cares_msprint_MsPrintSdk
 * Method:    SetSizetext
 * Signature: (II)I
 */
JNIEXPORT jint JNICALL Java_com_cares_msprint_MsPrintSdk_SetSizetext
  (JNIEnv *, jclass, jint, jint);

/*
 * Class:     com_cares_msprint_MsPrintSdk
 * Method:    SetSizechar
 * Signature: (IIII)I
 */
JNIEXPORT jint JNICALL Java_com_cares_msprint_MsPrintSdk_SetSizechar
  (JNIEnv *, jclass, jint, jint, jint, jint);

/*
 * Class:     com_cares_msprint_MsPrintSdk
 * Method:    SetSizechinese
 * Signature: (IIII)I
 */
JNIEXPORT jint JNICALL Java_com_cares_msprint_MsPrintSdk_SetSizechinese
  (JNIEnv *, jclass, jint, jint, jint, jint);

/*
 * Class:     com_cares_msprint_MsPrintSdk
 * Method:    SetLinespace
 * Signature: (I)I
 */
JNIEXPORT jint JNICALL Java_com_cares_msprint_MsPrintSdk_SetLinespace
  (JNIEnv *, jclass, jint);

/*
 * Class:     com_cares_msprint_MsPrintSdk
 * Method:    SetBold
 * Signature: (I)I
 */
JNIEXPORT jint JNICALL Java_com_cares_msprint_MsPrintSdk_SetBold
  (JNIEnv *, jclass, jint);

/*
 * Class:     com_cares_msprint_MsPrintSdk
 * Method:    SetSpacechar
 * Signature: (I)I
 */
JNIEXPORT jint JNICALL Java_com_cares_msprint_MsPrintSdk_SetSpacechar
  (JNIEnv *, jclass, jint);

/*
 * Class:     com_cares_msprint_MsPrintSdk
 * Method:    SetSpacechinese
 * Signature: (II)I
 */
JNIEXPORT jint JNICALL Java_com_cares_msprint_MsPrintSdk_SetSpacechinese
  (JNIEnv *, jclass, jint, jint);

/*
 * Class:     com_cares_msprint_MsPrintSdk
 * Method:    SetNvbmp
 * Signature: (ILjava/lang/String;)I
 */
JNIEXPORT jint JNICALL Java_com_cares_msprint_MsPrintSdk_SetNvbmp
  (JNIEnv *, jclass, jint, jstring);

/*
 * Class:     com_cares_msprint_MsPrintSdk
 * Method:    SetMarkoffsetcut
 * Signature: (I)I
 */
JNIEXPORT jint JNICALL Java_com_cares_msprint_MsPrintSdk_SetMarkoffsetcut
  (JNIEnv *, jclass, jint);

/*
 * Class:     com_cares_msprint_MsPrintSdk
 * Method:    SetMarkoffsetprint
 * Signature: (I)I
 */
JNIEXPORT jint JNICALL Java_com_cares_msprint_MsPrintSdk_SetMarkoffsetprint
  (JNIEnv *, jclass, jint);

/*
 * Class:     com_cares_msprint_MsPrintSdk
 * Method:    SetLeftmargin
 * Signature: (I)I
 */
JNIEXPORT jint JNICALL Java_com_cares_msprint_MsPrintSdk_SetLeftmargin
  (JNIEnv *, jclass, jint);

/*
 * Class:     com_cares_msprint_MsPrintSdk
 * Method:    SetDirection
 * Signature: (I)I
 */
JNIEXPORT jint JNICALL Java_com_cares_msprint_MsPrintSdk_SetDirection
  (JNIEnv *, jclass, jint);

/*
 * Class:     com_cares_msprint_MsPrintSdk
 * Method:    SetItalic
 * Signature: (I)I
 */
JNIEXPORT jint JNICALL Java_com_cares_msprint_MsPrintSdk_SetItalic
  (JNIEnv *, jclass, jint);

/*
 * Class:     com_cares_msprint_MsPrintSdk
 * Method:    SetRotate
 * Signature: (I)I
 */
JNIEXPORT jint JNICALL Java_com_cares_msprint_MsPrintSdk_SetRotate
  (JNIEnv *, jclass, jint);

/*
 * Class:     com_cares_msprint_MsPrintSdk
 * Method:    SetWhitemodel
 * Signature: (I)I
 */
JNIEXPORT jint JNICALL Java_com_cares_msprint_MsPrintSdk_SetWhitemodel
  (JNIEnv *, jclass, jint);

/*
 * Class:     com_cares_msprint_MsPrintSdk
 * Method:    SetCommandmode
 * Signature: (I)I
 */
JNIEXPORT jint JNICALL Java_com_cares_msprint_MsPrintSdk_SetCommandmode
  (JNIEnv *, jclass, jint);

/*
 * Class:     com_cares_msprint_MsPrintSdk
 * Method:    SetUnderline
 * Signature: (I)I
 */
JNIEXPORT jint JNICALL Java_com_cares_msprint_MsPrintSdk_SetUnderline
  (JNIEnv *, jclass, jint);

/*
 * Class:     com_cares_msprint_MsPrintSdk
 * Method:    SetReadZKmode
 * Signature: (I)I
 */
JNIEXPORT jint JNICALL Java_com_cares_msprint_MsPrintSdk_SetReadZKmode
  (JNIEnv *, jclass, jint);

/*
 * Class:     com_cares_msprint_MsPrintSdk
 * Method:    SetHTseat
 * Signature: (Ljava/lang/String;I)I
 */
JNIEXPORT jint JNICALL Java_com_cares_msprint_MsPrintSdk_SetHTseat
  (JNIEnv *, jclass, jstring, jint);

/*
 * Class:     com_cares_msprint_MsPrintSdk
 * Method:    PrintNextHT
 * Signature: ()I
 */
JNIEXPORT jint JNICALL Java_com_cares_msprint_MsPrintSdk_PrintNextHT
  (JNIEnv *, jclass);

/*
 * Class:     com_cares_msprint_MsPrintSdk
 * Method:    PrintSelfcheck
 * Signature: ()I
 */
JNIEXPORT jint JNICALL Java_com_cares_msprint_MsPrintSdk_PrintSelfcheck
  (JNIEnv *, jclass);

/*
 * Class:     com_cares_msprint_MsPrintSdk
 * Method:    PrintString
 * Signature: (Ljava/lang/String;I)I
 */
JNIEXPORT jint JNICALL Java_com_cares_msprint_MsPrintSdk_PrintString
  (JNIEnv *, jclass, jstring, jint);

/*
 * Class:     com_cares_msprint_MsPrintSdk
 * Method:    PrintFeedline
 * Signature: (I)I
 */
JNIEXPORT jint JNICALL Java_com_cares_msprint_MsPrintSdk_PrintFeedline
  (JNIEnv *, jclass, jint);

/*
 * Class:     com_cares_msprint_MsPrintSdk
 * Method:    PrintCutpaper
 * Signature: (I)I
 */
JNIEXPORT jint JNICALL Java_com_cares_msprint_MsPrintSdk_PrintCutpaper
  (JNIEnv *, jclass, jint);

/*
 * Class:     com_cares_msprint_MsPrintSdk
 * Method:    PrintQrcode
 * Signature: (Ljava/lang/String;III)I
 */
JNIEXPORT jint JNICALL Java_com_cares_msprint_MsPrintSdk_PrintQrcode
  (JNIEnv *, jclass, jstring, jint, jint, jint);

/*
 * Class:     com_cares_msprint_MsPrintSdk
 * Method:    PrintQRcode500II
 * Signature: (ILjava/lang/String;)I
 */
JNIEXPORT jint JNICALL Java_com_cares_msprint_MsPrintSdk_PrintQRcode500II
  (JNIEnv *, jclass, jint, jstring);

/*
 * Class:     com_cares_msprint_MsPrintSdk
 * Method:    Print1Dbar
 * Signature: (IIIIILjava/lang/String;)I
 */
JNIEXPORT jint JNICALL Java_com_cares_msprint_MsPrintSdk_Print1Dbar
  (JNIEnv *, jclass, jint, jint, jint, jint, jint, jstring);

/*
 * Class:     com_cares_msprint_MsPrintSdk
 * Method:    PrintPdf417
 * Signature: (IIIILjava/lang/String;)I
 */
JNIEXPORT jint JNICALL Java_com_cares_msprint_MsPrintSdk_PrintPdf417
  (JNIEnv *, jclass, jint, jint, jint, jint, jstring);

/*
 * Class:     com_cares_msprint_MsPrintSdk
 * Method:    PrintDiskbmpfile
 * Signature: (Ljava/lang/String;)I
 */
JNIEXPORT jint JNICALL Java_com_cares_msprint_MsPrintSdk_PrintDiskbmpfile
  (JNIEnv *, jclass, jstring);

/*
 * Class:     com_cares_msprint_MsPrintSdk
 * Method:    PrintNvmbp
 * Signature: (II)I
 */
JNIEXPORT jint JNICALL Java_com_cares_msprint_MsPrintSdk_PrintNvmbp
  (JNIEnv *, jclass, jint, jint);

/*
 * Class:     com_cares_msprint_MsPrintSdk
 * Method:    PrintMarkposition
 * Signature: ()I
 */
JNIEXPORT jint JNICALL Java_com_cares_msprint_MsPrintSdk_PrintMarkposition
  (JNIEnv *, jclass);

/*
 * Class:     com_cares_msprint_MsPrintSdk
 * Method:    PrintMarkpositionprint
 * Signature: ()I
 */
JNIEXPORT jint JNICALL Java_com_cares_msprint_MsPrintSdk_PrintMarkpositionprint
  (JNIEnv *, jclass);

/*
 * Class:     com_cares_msprint_MsPrintSdk
 * Method:    PrintMarkpositioncut
 * Signature: ()I
 */
JNIEXPORT jint JNICALL Java_com_cares_msprint_MsPrintSdk_PrintMarkpositioncut
  (JNIEnv *, jclass);

/*
 * Class:     com_cares_msprint_MsPrintSdk
 * Method:    PrintMarkcutpaper
 * Signature: (I)I
 */
JNIEXPORT jint JNICALL Java_com_cares_msprint_MsPrintSdk_PrintMarkcutpaper
  (JNIEnv *, jclass, jint);

/*
 * Class:     com_cares_msprint_MsPrintSdk
 * Method:    PrintTransmit
 * Signature: (Ljava/lang/String;I)I
 */
JNIEXPORT jint JNICALL Java_com_cares_msprint_MsPrintSdk_PrintTransmit
  (JNIEnv *, jclass, jstring, jint);

/*
 * Class:     com_cares_msprint_MsPrintSdk
 * Method:    PrintChangeRow
 * Signature: ()I
 */
JNIEXPORT jint JNICALL Java_com_cares_msprint_MsPrintSdk_PrintChangeRow
  (JNIEnv *, jclass);

/*
 * Class:     com_cares_msprint_MsPrintSdk
 * Method:    PrintRemainQR
 * Signature: ()I
 */
JNIEXPORT jint JNICALL Java_com_cares_msprint_MsPrintSdk_PrintRemainQR
  (JNIEnv *, jclass);

/*
 * Class:     com_cares_msprint_MsPrintSdk
 * Method:    PrintFeedDot
 * Signature: (I)I
 */
JNIEXPORT jint JNICALL Java_com_cares_msprint_MsPrintSdk_PrintFeedDot
  (JNIEnv *, jclass, jint);

/*
 * Class:     com_cares_msprint_MsPrintSdk
 * Method:    GetProductinformation
 * Signature: (ILjava/lang/String;I)I
 */
JNIEXPORT jstring JNICALL Java_com_cares_msprint_MsPrintSdk_GetProductinformation
  (JNIEnv *, jclass, jint);

/*
 * Class:     com_cares_msprint_MsPrintSdk
 * Method:    GetTransmit
 * Signature: (Ljava/lang/String;ILjava/lang/String;I)I
 */
JNIEXPORT jint JNICALL Java_com_cares_msprint_MsPrintSdk_GetTransmit
  (JNIEnv *, jclass, jstring, jint, jstring, jint);

/*
 * Class:     com_cares_msprint_MsPrintSdk
 * Method:    GetStatus
 * Signature: ()I
 */
JNIEXPORT jint JNICALL Java_com_cares_msprint_MsPrintSdk_GetStatus
  (JNIEnv *, jclass);

/*
 * Class:     com_cares_msprint_MsPrintSdk
 * Method:    GetStatusspecial
 * Signature: ()I
 */
JNIEXPORT jint JNICALL Java_com_cares_msprint_MsPrintSdk_GetStatusspecial
  (JNIEnv *, jclass);

/*
 * Class:     com_cares_msprint_MsPrintSdk
 * Method:    GetSDKinformation
 * Signature: (Ljava/lang/String;)I
 */
JNIEXPORT jstring JNICALL Java_com_cares_msprint_MsPrintSdk_GetSDKinformation
  (JNIEnv *, jclass);

/*
 * Class:     com_cares_msprint_MsPrintSdk
 * Method:    SetRotation_Intomode
 * Signature: ()I
 */
JNIEXPORT jint JNICALL Java_com_cares_msprint_MsPrintSdk_SetRotation_1Intomode
  (JNIEnv *, jclass);

/*
 * Class:     com_cares_msprint_MsPrintSdk
 * Method:    PrintRotation_Data
 * Signature: ()I
 */
JNIEXPORT jint JNICALL Java_com_cares_msprint_MsPrintSdk_PrintRotation_1Data
  (JNIEnv *, jclass);

/*
 * Class:     com_cares_msprint_MsPrintSdk
 * Method:    PrintRotation_Sendtext
 * Signature: (Ljava/lang/String;I)I
 */
JNIEXPORT jint JNICALL Java_com_cares_msprint_MsPrintSdk_PrintRotation_1Sendtext
  (JNIEnv *, jclass, jstring, jint);

/*
 * Class:     com_cares_msprint_MsPrintSdk
 * Method:    PrintRotation_Sendcode
 * Signature: (IIIILjava/lang/String;)I
 */
JNIEXPORT jint JNICALL Java_com_cares_msprint_MsPrintSdk_PrintRotation_1Sendcode
  (JNIEnv *, jclass, jint, jint, jint, jint, jstring);

/*
 * Class:     com_cares_msprint_MsPrintSdk
 * Method:    PrintRotation_Changeline
 * Signature: ()I
 */
JNIEXPORT jint JNICALL Java_com_cares_msprint_MsPrintSdk_PrintRotation_1Changeline
  (JNIEnv *, jclass);

/*
 * Class:     com_cares_msprint_MsPrintSdk
 * Method:    SetRotation_Leftspace
 * Signature: (I)I
 */
JNIEXPORT jint JNICALL Java_com_cares_msprint_MsPrintSdk_SetRotation_1Leftspace
  (JNIEnv *, jclass, jint);

/*
 * Class:     com_cares_msprint_MsPrintSdk
 * Method:    SetPrintIDorName
 * Signature: (Ljava/lang/String;)I
 */
JNIEXPORT jint JNICALL Java_com_cares_msprint_MsPrintSdk_SetPrintIDorName
  (JNIEnv *, jclass, jstring);

/*
 * Class:     com_cares_msprint_MsPrintSdk
 * Method:    GetPrintIDorName
 * Signature: (Ljava/lang/String;)I
 */
JNIEXPORT jstring JNICALL Java_com_cares_msprint_MsPrintSdk_GetPrintIDorName
  (JNIEnv *, jclass, jstring);

/*
 * Class:     com_cares_msprint_MsPrintSdk
 * Method:    SetComportauto
 * Signature: ()I
 */
JNIEXPORT jint JNICALL Java_com_cares_msprint_MsPrintSdk_SetComportauto
  (JNIEnv *, jclass);

/*
 * Class:     com_cares_msprint_MsPrintSdk
 * Method:    SetPrintportFlowCtrl
 * Signature: (I)I
 */
JNIEXPORT jint JNICALL Java_com_cares_msprint_MsPrintSdk_SetPrintportFlowCtrl
  (JNIEnv *, jclass, jint);

/*
 * Class:     com_cares_msprint_MsPrintSdk
 * Method:    SetTraceLog
 * Signature: (I)V
 */
JNIEXPORT void JNICALL Java_com_cares_msprint_MsPrintSdk_SetTraceLog
  (JNIEnv *, jclass, jint);

/*
 * Class:     com_cares_msprint_MsPrintSdk
 * Method:    PrintPDF_CCCB_A
 * Signature: (Ljava/lang/String;)I
 */
JNIEXPORT jint JNICALL Java_com_cares_msprint_MsPrintSdk_PrintPDF_1CCCB_1A
  (JNIEnv *, jclass, jstring);

/*
 * Class:     com_cares_msprint_MsPrintSdk
 * Method:    PrintPDF_CCCB_B
 * Signature: (Ljava/lang/String;)I
 */
JNIEXPORT jint JNICALL Java_com_cares_msprint_MsPrintSdk_PrintPDF_1CCCB_1B
  (JNIEnv *, jclass, jstring);

/*
 * Class:     com_cares_msprint_MsPrintSdk
 * Method:    GetStatus_TS
 * Signature: ()I
 */
JNIEXPORT jint JNICALL Java_com_cares_msprint_MsPrintSdk_GetStatus_1TS
  (JNIEnv *, jclass);

/*
 * Class:     com_cares_msprint_MsPrintSdk
 * Method:    SetPrintConn
 * Signature: (ILjava/lang/String;Ljava/lang/String;)I
 */
JNIEXPORT jint JNICALL Java_com_cares_msprint_MsPrintSdk_SetPrintConn
  (JNIEnv *, jclass, jint, jstring, jstring);

/*
 * Class:     com_cares_msprint_MsPrintSdk
 * Method:    PrintDataMatrix
 * Signature: (Ljava/lang/String;I)I
 */
JNIEXPORT jint JNICALL Java_com_cares_msprint_MsPrintSdk_PrintDataMatrix
  (JNIEnv *, jclass, jstring, jint);

#ifdef __cplusplus
}
#endif
#endif

新建vs空白工程

工程构建目标设置为dll,添加jdk的头文件和美松的sdk头文件

upload successful

jni实现

#include "com_cares_msprint_MsPrintSdk.h"
#include "Msprintsdk.h"
#include "windows.h"
#include "tchar.h"

JavaVM * g_jvm = NULL;
HINSTANCE m_hInstancePrint;

char* jstringTostring(JNIEnv* env, jstring jstr);
/*
 * Class:     com_cares_msprint_MsPrintSdk
 * Method:    SetPrintport
 * Signature: (Ljava/lang/String;I)I
 */
JNIEXPORT jint JNICALL Java_com_cares_msprint_MsPrintSdk_SetPrintport
(JNIEnv *env, jclass, jstring strPort, jint iBaudrate) {

    const char* c = env->GetStringUTFChars(strPort, false);
    return SetPrintport(c,iBaudrate);

}

/*
 * Class:     com_cares_msprint_MsPrintSdk
 * Method:    SetUsbportauto
 * Signature: ()I
 */
JNIEXPORT jint JNICALL Java_com_cares_msprint_MsPrintSdk_SetUsbportauto
(JNIEnv *env, jclass) {
    return SetUsbportauto();
}

/*
 * Class:     com_cares_msprint_MsPrintSdk
 * Method:    SetInit
 * Signature: ()I
 */
JNIEXPORT jint JNICALL Java_com_cares_msprint_MsPrintSdk_SetInit
(JNIEnv *env, jclass) {
    return SetInit();
}

/*
 * Class:     com_cares_msprint_MsPrintSdk
 * Method:    SetClean
 * Signature: ()I
 */
JNIEXPORT jint JNICALL Java_com_cares_msprint_MsPrintSdk_SetClean
(JNIEnv *env, jclass) {
    return SetClean();
}

/*
 * Class:     com_cares_msprint_MsPrintSdk
 * Method:    SetClose
 * Signature: ()I
 */
JNIEXPORT jint JNICALL Java_com_cares_msprint_MsPrintSdk_SetClose
(JNIEnv *, jclass) {
    return SetClose();
}

/*
 * Class:     com_cares_msprint_MsPrintSdk
 * Method:    SetAlignment
 * Signature: (I)I
 */
JNIEXPORT jint JNICALL Java_com_cares_msprint_MsPrintSdk_SetAlignment
(JNIEnv *, jclass, jint iAlignment) {
    return SetAlignment(iAlignment);
}

/*
 * Class:     com_cares_msprint_MsPrintSdk
 * Method:    SetAlignmentLeftRight
 * Signature: (I)I
 */
JNIEXPORT jint JNICALL Java_com_cares_msprint_MsPrintSdk_SetAlignmentLeftRight
(JNIEnv *, jclass, jint iAlignment) {
    return SetAlignmentLeftRight(iAlignment);
}

/*
 * Class:     com_cares_msprint_MsPrintSdk
 * Method:    SetSizetext
 * Signature: (II)I
 */
JNIEXPORT jint JNICALL Java_com_cares_msprint_MsPrintSdk_SetSizetext
(JNIEnv *, jclass, jint iHeight, jint iWidth) {
    return SetSizetext(iHeight, iWidth);
}

/*
 * Class:     com_cares_msprint_MsPrintSdk
 * Method:    SetSizechar
 * Signature: (IIII)I
 */
JNIEXPORT jint JNICALL Java_com_cares_msprint_MsPrintSdk_SetSizechar
(JNIEnv *, jclass, jint iHeight, jint iWidth, jint iUnderline, jint iAsciitype) {
    return SetSizechar(iHeight, iWidth, iUnderline, iAsciitype);
}

/*
 * Class:     com_cares_msprint_MsPrintSdk
 * Method:    SetSizechinese
 * Signature: (IIII)I
 */
JNIEXPORT jint JNICALL Java_com_cares_msprint_MsPrintSdk_SetSizechinese
(JNIEnv *, jclass, jint iHeight, jint iWidth, jint iUnderline, jint iChineseType) {
    return SetSizechinese(iHeight, iWidth, iUnderline, iChineseType);
}

/*
 * Class:     com_cares_msprint_MsPrintSdk
 * Method:    SetLinespace
 * Signature: (I)I
 */
JNIEXPORT jint JNICALL Java_com_cares_msprint_MsPrintSdk_SetLinespace
(JNIEnv *, jclass, jint iLineSpace) {
    return SetLinespace(iLineSpace);
}

/*
 * Class:     com_cares_msprint_MsPrintSdk
 * Method:    SetBold
 * Signature: (I)I
 */
JNIEXPORT jint JNICALL Java_com_cares_msprint_MsPrintSdk_SetBold
(JNIEnv *, jclass, jint iBold) {
    return SetBold(iBold);
}

/*
 * Class:     com_cares_msprint_MsPrintSdk
 * Method:    SetSpacechar
 * Signature: (I)I
 */
JNIEXPORT jint JNICALL Java_com_cares_msprint_MsPrintSdk_SetSpacechar
(JNIEnv *, jclass, jint iSpace) {
    return SetSpacechar(iSpace);
}

/*
 * Class:     com_cares_msprint_MsPrintSdk
 * Method:    SetSpacechinese
 * Signature: (II)I
 */
JNIEXPORT jint JNICALL Java_com_cares_msprint_MsPrintSdk_SetSpacechinese
(JNIEnv *, jclass, jint left, jint right) {
    return SetSpacechinese(left, right);
}

/*
 * Class:     com_cares_msprint_MsPrintSdk
 * Method:    SetNvbmp
 * Signature: (ILjava/lang/String;)I
 */
JNIEXPORT jint JNICALL Java_com_cares_msprint_MsPrintSdk_SetNvbmp
(JNIEnv *env, jclass, jint nums, jstring strPath) {

    const char* path = env->GetStringUTFChars(strPath,0);

    return SetNvbmp(nums,path);
}

/*
 * Class:     com_cares_msprint_MsPrintSdk
 * Method:    SetMarkoffsetcut
 * Signature: (I)I
 */
JNIEXPORT jint JNICALL Java_com_cares_msprint_MsPrintSdk_SetMarkoffsetcut
(JNIEnv *, jclass, jint offset) {
    return SetMarkoffsetcut(offset);
}

/*
 * Class:     com_cares_msprint_MsPrintSdk
 * Method:    SetMarkoffsetprint
 * Signature: (I)I
 */
JNIEXPORT jint JNICALL Java_com_cares_msprint_MsPrintSdk_SetMarkoffsetprint
(JNIEnv *, jclass, jint offset) {
    return SetMarkoffsetprint(offset);
}

/*
 * Class:     com_cares_msprint_MsPrintSdk
 * Method:    SetLeftmargin
 * Signature: (I)I
 */
JNIEXPORT jint JNICALL Java_com_cares_msprint_MsPrintSdk_SetLeftmargin
(JNIEnv *, jclass, jint left) {
    return SetLeftmargin(left);
}

/*
 * Class:     com_cares_msprint_MsPrintSdk
 * Method:    SetDirection
 * Signature: (I)I
 */
JNIEXPORT jint JNICALL Java_com_cares_msprint_MsPrintSdk_SetDirection
(JNIEnv *, jclass, jint dir) {
    return SetDirection(dir);
}

/*
 * Class:     com_cares_msprint_MsPrintSdk
 * Method:    SetItalic
 * Signature: (I)I
 */
JNIEXPORT jint JNICALL Java_com_cares_msprint_MsPrintSdk_SetItalic
(JNIEnv *, jclass, jint i) {
    return SetItalic(i);
}

/*
 * Class:     com_cares_msprint_MsPrintSdk
 * Method:    SetRotate
 * Signature: (I)I
 */
JNIEXPORT jint JNICALL Java_com_cares_msprint_MsPrintSdk_SetRotate
(JNIEnv *, jclass, jint i) {
    return  SetRotate(i);
}

/*
 * Class:     com_cares_msprint_MsPrintSdk
 * Method:    SetWhitemodel
 * Signature: (I)I
 */
JNIEXPORT jint JNICALL Java_com_cares_msprint_MsPrintSdk_SetWhitemodel
(JNIEnv *, jclass, jint i) {
    return SetWhitemodel(i);
}

/*
 * Class:     com_cares_msprint_MsPrintSdk
 * Method:    SetCommandmode
 * Signature: (I)I
 */
JNIEXPORT jint JNICALL Java_com_cares_msprint_MsPrintSdk_SetCommandmode
(JNIEnv *, jclass, jint mode) {
    return SetCommandmode(mode);
}

/*
 * Class:     com_cares_msprint_MsPrintSdk
 * Method:    SetUnderline
 * Signature: (I)I
 */
JNIEXPORT jint JNICALL Java_com_cares_msprint_MsPrintSdk_SetUnderline
(JNIEnv *, jclass, jint i) {
    return SetUnderline(i);
}

/*
 * Class:     com_cares_msprint_MsPrintSdk
 * Method:    SetReadZKmode
 * Signature: (I)I
 */
JNIEXPORT jint JNICALL Java_com_cares_msprint_MsPrintSdk_SetReadZKmode
(JNIEnv *, jclass, jint mode) {
    return SetReadZKmode(mode);
}

/*
 * Class:     com_cares_msprint_MsPrintSdk
 * Method:    SetHTseat
 * Signature: (Ljava/lang/String;I)I
 */
JNIEXPORT jint JNICALL Java_com_cares_msprint_MsPrintSdk_SetHTseat
(JNIEnv *env, jclass, jstring set, jint len) {
    const char* setstr = env->GetStringUTFChars(set, 0);
    return SetHTseat(setstr,len);
}

/*
 * Class:     com_cares_msprint_MsPrintSdk
 * Method:    PrintNextHT
 * Signature: ()I
 */
JNIEXPORT jint JNICALL Java_com_cares_msprint_MsPrintSdk_PrintNextHT
(JNIEnv *, jclass) {
    return PrintNextHT();
}

/*
 * Class:     com_cares_msprint_MsPrintSdk
 * Method:    PrintSelfcheck
 * Signature: ()I
 */
JNIEXPORT jint JNICALL Java_com_cares_msprint_MsPrintSdk_PrintSelfcheck
(JNIEnv *, jclass) {
    return PrintSelfcheck();
}

/*
 * Class:     com_cares_msprint_MsPrintSdk
 * Method:    PrintString
 * Signature: (Ljava/lang/String;I)I
 */
JNIEXPORT jint JNICALL Java_com_cares_msprint_MsPrintSdk_PrintString
(JNIEnv *env, jclass, jstring c, jint i) {
    const char* data = jstringTostring(env, c);
    int res = PrintString(data, i);
    free((void*)data);
    return res;
}

/*
 * Class:     com_cares_msprint_MsPrintSdk
 * Method:    PrintFeedline
 * Signature: (I)I
 */
JNIEXPORT jint JNICALL Java_com_cares_msprint_MsPrintSdk_PrintFeedline
(JNIEnv *, jclass, jint i) {
    return PrintFeedline(i);
}

/*
 * Class:     com_cares_msprint_MsPrintSdk
 * Method:    PrintCutpaper
 * Signature: (I)I
 */
JNIEXPORT jint JNICALL Java_com_cares_msprint_MsPrintSdk_PrintCutpaper
(JNIEnv *, jclass, jint m) {
    return PrintCutpaper(m);
}

/*
 * Class:     com_cares_msprint_MsPrintSdk
 * Method:    PrintQrcode
 * Signature: (Ljava/lang/String;III)I
 */
JNIEXPORT jint JNICALL Java_com_cares_msprint_MsPrintSdk_PrintQrcode
(JNIEnv *env, jclass, jstring data, jint margin, jint side, jint round) {
    const char* code = env->GetStringUTFChars(data, 0);
    return PrintQrcode(code, margin, side, round);
}

/*
 * Class:     com_cares_msprint_MsPrintSdk
 * Method:    PrintQRcode500II
 * Signature: (ILjava/lang/String;)I
 */
JNIEXPORT jint JNICALL Java_com_cares_msprint_MsPrintSdk_PrintQRcode500II
(JNIEnv *env, jclass, jint width, jstring data) {
    const char* code = env->GetStringUTFChars(data, 0);
    return PrintQRcode500II(width, code);
}

/*
 * Class:     com_cares_msprint_MsPrintSdk
 * Method:    Print1Dbar
 * Signature: (IIIIILjava/lang/String;)I
 */
JNIEXPORT jint JNICALL Java_com_cares_msprint_MsPrintSdk_Print1Dbar
(JNIEnv *env, jclass, jint width, jint height, jint size, jint seat, jint type, jstring data) {
    const char* code = env->GetStringUTFChars(data, 0);
    return Print1Dbar(width, height, size, seat, type, code);
}

/*
 * Class:     com_cares_msprint_MsPrintSdk
 * Method:    PrintPdf417
 * Signature: (IIIILjava/lang/String;)I
 */
JNIEXPORT jint JNICALL Java_com_cares_msprint_MsPrintSdk_PrintPdf417
(JNIEnv *env, jclass, jint width, jint height, jint rows, jint cols, jstring data) {
    const char* code = env->GetStringUTFChars(data, 0);
    return PrintPdf417(width, height, rows, cols, code);
}

/*
 * Class:     com_cares_msprint_MsPrintSdk
 * Method:    PrintDiskbmpfile
 * Signature: (Ljava/lang/String;)I
 */
JNIEXPORT jint JNICALL Java_com_cares_msprint_MsPrintSdk_PrintDiskbmpfile
(JNIEnv *env, jclass, jstring data) {
    const char* code = env->GetStringUTFChars(data, 0);
    return PrintDiskbmpfile(code);
}

/*
 * Class:     com_cares_msprint_MsPrintSdk
 * Method:    PrintNvmbp
 * Signature: (II)I
 */
JNIEXPORT jint JNICALL Java_com_cares_msprint_MsPrintSdk_PrintNvmbp
(JNIEnv *, jclass, jint idx, jint mode) {
    return PrintNvmbp(idx,mode);
}

/*
 * Class:     com_cares_msprint_MsPrintSdk
 * Method:    PrintMarkposition
 * Signature: ()I
 */
JNIEXPORT jint JNICALL Java_com_cares_msprint_MsPrintSdk_PrintMarkposition
(JNIEnv *, jclass) {
    return PrintMarkposition();
}

/*
 * Class:     com_cares_msprint_MsPrintSdk
 * Method:    PrintMarkpositionprint
 * Signature: ()I
 */
JNIEXPORT jint JNICALL Java_com_cares_msprint_MsPrintSdk_PrintMarkpositionprint
(JNIEnv *, jclass) {
    return PrintMarkpositionprint();
}

/*
 * Class:     com_cares_msprint_MsPrintSdk
 * Method:    PrintMarkpositioncut
 * Signature: ()I
 */
JNIEXPORT jint JNICALL Java_com_cares_msprint_MsPrintSdk_PrintMarkpositioncut
(JNIEnv *, jclass) {
    return PrintMarkpositioncut();
}

/*
 * Class:     com_cares_msprint_MsPrintSdk
 * Method:    PrintMarkcutpaper
 * Signature: (I)I
 */
JNIEXPORT jint JNICALL Java_com_cares_msprint_MsPrintSdk_PrintMarkcutpaper
(JNIEnv *, jclass, jint mode) {
    return PrintMarkcutpaper(mode);
}

/*
 * Class:     com_cares_msprint_MsPrintSdk
 * Method:    PrintTransmit
 * Signature: (Ljava/lang/String;I)I
 */
JNIEXPORT jint JNICALL Java_com_cares_msprint_MsPrintSdk_PrintTransmit
(JNIEnv *env, jclass, jstring cmd, jint len) {
    const char* code = env->GetStringUTFChars(cmd, 0);
    return PrintTransmit(code, len);
}

/*
 * Class:     com_cares_msprint_MsPrintSdk
 * Method:    PrintChangeRow
 * Signature: ()I
 */
JNIEXPORT jint JNICALL Java_com_cares_msprint_MsPrintSdk_PrintChangeRow
(JNIEnv *, jclass) {
    return PrintChangeRow();
}

/*
 * Class:     com_cares_msprint_MsPrintSdk
 * Method:    PrintRemainQR
 * Signature: ()I
 */
JNIEXPORT jint JNICALL Java_com_cares_msprint_MsPrintSdk_PrintRemainQR
(JNIEnv *, jclass) {
    return PrintRemainQR();
}

/*
 * Class:     com_cares_msprint_MsPrintSdk
 * Method:    PrintFeedDot
 * Signature: (I)I
 */
JNIEXPORT jint JNICALL Java_com_cares_msprint_MsPrintSdk_PrintFeedDot
(JNIEnv *, jclass, jint num) {
    return PrintFeedDot(num);
}

/*
 * Class:     com_cares_msprint_MsPrintSdk
 * Method:    GetProductinformation
 * Signature: (ILjava/lang/String;I)I
 */
JNIEXPORT jstring JNICALL Java_com_cares_msprint_MsPrintSdk_GetProductinformation
(JNIEnv *env, jclass, jint) {
    int iLen = 0;
    char bFiddata[30] = { 0 };
    int r = GetProductinformation(3, bFiddata, iLen);

    if (0 == r) {
        return env->NewStringUTF(bFiddata);
    }

    return nullptr;
}

/*
 * Class:     com_cares_msprint_MsPrintSdk
 * Method:    GetTransmit
 * Signature: (Ljava/lang/String;ILjava/lang/String;I)I
 */
JNIEXPORT jint JNICALL Java_com_cares_msprint_MsPrintSdk_GetTransmit
(JNIEnv *, jclass, jstring, jint, jstring, jint) {
    // 暂不实现
    return 0;
}

/*
 * Class:     com_cares_msprint_MsPrintSdk
 * Method:    GetStatus
 * Signature: ()I
 */
JNIEXPORT jint JNICALL Java_com_cares_msprint_MsPrintSdk_GetStatus
(JNIEnv *, jclass) {
    return GetStatus();
}

/*
 * Class:     com_cares_msprint_MsPrintSdk
 * Method:    GetStatusspecial
 * Signature: ()I
 */
JNIEXPORT jint JNICALL Java_com_cares_msprint_MsPrintSdk_GetStatusspecial
(JNIEnv *, jclass) {
    return GetStatusspecial();
}

/*
 * Class:     com_cares_msprint_MsPrintSdk
 * Method:    GetSDKinformation
 * Signature: (Ljava/lang/String;)I
 */
JNIEXPORT jstring JNICALL Java_com_cares_msprint_MsPrintSdk_GetSDKinformation
(JNIEnv *env, jclass) {
    char bInfodata[20] = { 0 };
    int r = GetSDKinformation(bInfodata);
    if (r == 0) {
        return env->NewStringUTF(bInfodata);
    }

    return nullptr;
}

/*
 * Class:     com_cares_msprint_MsPrintSdk
 * Method:    SetRotation_Intomode
 * Signature: ()I
 */
JNIEXPORT jint JNICALL Java_com_cares_msprint_MsPrintSdk_SetRotation_1Intomode
(JNIEnv *, jclass) {
    return SetRotation_Intomode();
}

/*
 * Class:     com_cares_msprint_MsPrintSdk
 * Method:    PrintRotation_Data
 * Signature: ()I
 */
JNIEXPORT jint JNICALL Java_com_cares_msprint_MsPrintSdk_PrintRotation_1Data
(JNIEnv *, jclass) {
    return PrintRotation_Data();
}

/*
 * Class:     com_cares_msprint_MsPrintSdk
 * Method:    PrintRotation_Sendtext
 * Signature: (Ljava/lang/String;I)I
 */
JNIEXPORT jint JNICALL Java_com_cares_msprint_MsPrintSdk_PrintRotation_1Sendtext
(JNIEnv *env, jclass, jstring text, jint i) {
    const unsigned char* str = (unsigned char*)env->GetStringUTFChars(text, 0);
    return PrintRotation_Sendtext(str, i);
}

/*
 * Class:     com_cares_msprint_MsPrintSdk
 * Method:    PrintRotation_Sendcode
 * Signature: (IIIILjava/lang/String;)I
 */
JNIEXPORT jint JNICALL Java_com_cares_msprint_MsPrintSdk_PrintRotation_1Sendcode
(JNIEnv *env, jclass, jint iLeftspace, jint height, jint width, jint codeType, jstring strData) {

    const char* data = env->GetStringUTFChars(strData,0);

    return PrintRotation_Sendcode(iLeftspace, height, width, codeType, data);
}

/*
 * Class:     com_cares_msprint_MsPrintSdk
 * Method:    PrintRotation_Changeline
 * Signature: ()I
 */
JNIEXPORT jint JNICALL Java_com_cares_msprint_MsPrintSdk_PrintRotation_1Changeline
(JNIEnv *, jclass) {
    return PrintRotation_Changeline();
}

/*
 * Class:     com_cares_msprint_MsPrintSdk
 * Method:    SetRotation_Leftspace
 * Signature: (I)I
 */
JNIEXPORT jint JNICALL Java_com_cares_msprint_MsPrintSdk_SetRotation_1Leftspace
(JNIEnv *, jclass, jint iLeftspace) {
    return SetRotation_Leftspace(iLeftspace);
}

/*
 * Class:     com_cares_msprint_MsPrintSdk
 * Method:    SetPrintIDorName
 * Signature: (Ljava/lang/String;)I
 */
JNIEXPORT jint JNICALL Java_com_cares_msprint_MsPrintSdk_SetPrintIDorName
(JNIEnv *env, jclass, jstring strIDorNAME) {

    const char* idname = env->GetStringUTFChars(strIDorNAME, 0);
    return SetPrintIDorName(idname);
}

/*
 * Class:     com_cares_msprint_MsPrintSdk
 * Method:    GetPrintIDorName
 * Signature: (Ljava/lang/String;)I
 */
JNIEXPORT jstring JNICALL Java_com_cares_msprint_MsPrintSdk_GetPrintIDorName
(JNIEnv *env, jclass) {
    char recv[100] = { 0 };
    int res = GetPrintIDorName(recv);
    if (res != 0) {
        return nullptr;
    }

    jstring str = env->NewStringUTF(recv);
    return str;

}

/*
 * Class:     com_cares_msprint_MsPrintSdk
 * Method:    SetComportauto
 * Signature: ()I
 */
JNIEXPORT jint JNICALL Java_com_cares_msprint_MsPrintSdk_SetComportauto
(JNIEnv *, jclass) {
    return SetComportauto();
}

/*
 * Class:     com_cares_msprint_MsPrintSdk
 * Method:    SetPrintportFlowCtrl
 * Signature: (I)I
 */
JNIEXPORT jint JNICALL Java_com_cares_msprint_MsPrintSdk_SetPrintportFlowCtrl
(JNIEnv *, jclass, jint iFlowCtrlFlag) {

    return SetPrintportFlowCtrl(iFlowCtrlFlag);

}

/*
 * Class:     com_cares_msprint_MsPrintSdk
 * Method:    SetTraceLog
 * Signature: (I)V
 */
JNIEXPORT void JNICALL Java_com_cares_msprint_MsPrintSdk_SetTraceLog
(JNIEnv *, jclass, jint iLog) {
    return SetTraceLog(iLog);
}

/*
 * Class:     com_cares_msprint_MsPrintSdk
 * Method:    PrintPDF_CCCB_A
 * Signature: (Ljava/lang/String;)I
 */
JNIEXPORT jint JNICALL Java_com_cares_msprint_MsPrintSdk_PrintPDF_1CCCB_1A
(JNIEnv *env, jclass, jstring path) {
    const char* strPath = env->GetStringUTFChars(path, 0);
    return PrintPDF_CCCB_A(strPath);
}

/*
 * Class:     com_cares_msprint_MsPrintSdk
 * Method:    PrintPDF_CCCB_B
 * Signature: (Ljava/lang/String;)I
 */
JNIEXPORT jint JNICALL Java_com_cares_msprint_MsPrintSdk_PrintPDF_1CCCB_1B
(JNIEnv *env, jclass, jstring path) {
    const char* strPath = env->GetStringUTFChars(path, 0);
    return PrintPDF_CCCB_B(strPath);
}

/*
 * Class:     com_cares_msprint_MsPrintSdk
 * Method:    GetStatus_TS
 * Signature: ()I
 */
JNIEXPORT jint JNICALL Java_com_cares_msprint_MsPrintSdk_GetStatus_1TS
(JNIEnv *, jclass) {
    return GetStatus_TS();
}

/*
 * Class:     com_cares_msprint_MsPrintSdk
 * Method:    SetPrintConn
 * Signature: (ILjava/lang/String;Ljava/lang/String;)I
 */
JNIEXPORT jint JNICALL Java_com_cares_msprint_MsPrintSdk_SetPrintConn
(JNIEnv *env, jclass, jint iConnWay, jstring strName, jstring strValue) {
    const char* key = env->GetStringUTFChars(strName,0);
    const char* value = env->GetStringUTFChars(strValue, 0);
    return SetPrintConn(iConnWay,key,value);
}

/*
 * Class:     com_cares_msprint_MsPrintSdk
 * Method:    PrintDataMatrix
 * Signature: (Ljava/lang/String;I)I
 */
JNIEXPORT jint JNICALL Java_com_cares_msprint_MsPrintSdk_PrintDataMatrix
(JNIEnv *env, jclass, jstring strData, jint iSize) {

    const char* chs = env->GetStringUTFChars(strData,0);

    return PrintDataMatrix(chs, iSize);
}



JNIEXPORT jint JNICALL JNI_OnLoad(JavaVM *jvm, void *reserved) {
    JNIEnv *env = NULL;
    jint result = -1;

    // 加载 打印机函数
    m_hInstancePrint = LoadLibrary("Msprintsdk.dll");
    if (m_hInstancePrint != NULL)
    {
        SetPrintport = (int(*)(const char* strPort, int iBaudrate))GetProcAddress(m_hInstancePrint, "SetPrintport");
        SetInit = (int(*)(void))GetProcAddress(m_hInstancePrint, "SetInit");
        SetUsbportauto = (int(*)(void))GetProcAddress(m_hInstancePrint, "SetUsbportauto");
        SetClose = (int(*)(void))GetProcAddress(m_hInstancePrint, "SetClose");
        SetClean = (int(*)(void))GetProcAddress(m_hInstancePrint, "SetClean");
        SetAlignment = (int(*)(int iAlignment))GetProcAddress(m_hInstancePrint, "SetAlignment");
        SetAlignmentLeftRight = (int(*)(int iAlignment))GetProcAddress(m_hInstancePrint, "SetAlignmentLeftRight");
        SetSizetext = (int(*)(int iHeight, int iWidth))GetProcAddress(m_hInstancePrint, "SetSizetext");
        SetSizechar = (int(*)(int iHeight, int iWidth, int iUnderline, int iAsciitype))GetProcAddress(m_hInstancePrint, "SetSizechar");
        SetSizechinese = (int(*)(int iHeight, int iWidth, int iUnderline, int iChinesetype))GetProcAddress(m_hInstancePrint, "SetSizechinese");
        SetLinespace = (int(*)(int iLinespace))GetProcAddress(m_hInstancePrint, "SetLinespace");
        SetBold = (int(*)(int iBold))GetProcAddress(m_hInstancePrint, "SetBold");
        SetSpacechar = (int(*)(int iSpace))GetProcAddress(m_hInstancePrint, "SetSpacechar");
        SetSpacechinese = (int(*)(int iChsleftspace, int iChsrightspace))GetProcAddress(m_hInstancePrint, "SetSpacechinese");
        SetNvbmp = (int(*)(int iNums, const char* strPath))GetProcAddress(m_hInstancePrint, "SetNvbmp");
        SetReadZKmode = (int(*)(int mode))GetProcAddress(m_hInstancePrint, "SetReadZKmode");
        SetHTseat = (int(*)(const char* bHTseat, int iLength))GetProcAddress(m_hInstancePrint, "SetHTseat");
        PrintNextHT = (int(*)(void))GetProcAddress(m_hInstancePrint, "PrintNextHT");

        PrintNvmbp = (int(*)(int iNvindex, int iMode))GetProcAddress(m_hInstancePrint, "PrintNvmbp");
        PrintSelfcheck = (int(*)(void))GetProcAddress(m_hInstancePrint, "PrintSelfcheck");
        PrintString = (int(*)(const char* strData, int iImme))GetProcAddress(m_hInstancePrint, "PrintString");

        PrintFeedline = (int(*)(int iLine))GetProcAddress(m_hInstancePrint, "PrintFeedline");
        PrintQrcode = (int(*)(const char* strData, int iLmargin, int iMside, int iRound))GetProcAddress(m_hInstancePrint, "PrintQrcode");
        PrintCutpaper = (int(*)(int iMode))GetProcAddress(m_hInstancePrint, "PrintCutpaper");
        PrintMarkposition = (int(*)(void))GetProcAddress(m_hInstancePrint, "PrintMarkposition");
        PrintMarkcutpaper = (int(*)(int iMode))GetProcAddress(m_hInstancePrint, "PrintMarkcutpaper");
        PrintDiskbmpfile = (int(*)(const char* strPath))GetProcAddress(m_hInstancePrint, "PrintDiskbmpfile");
        PrintTransmit = (int(*)(const char* bCmd, int iLength))GetProcAddress(m_hInstancePrint, "PrintTransmit");
        PrintRemainQR = (int(*)(void))GetProcAddress(m_hInstancePrint, "PrintRemainQR");
        SetCommandmode = (int(*)(int iMode))GetProcAddress(m_hInstancePrint, "SetCommandmode");

        GetTransmit = (int(*)(const char* bCmd, int iLength, char* bRecv, int iRelen))GetProcAddress(m_hInstancePrint, "GetTransmit");
        GetStatus = (int(*)(void))GetProcAddress(m_hInstancePrint, "GetStatus");

        GetProductinformation = (int(*)(int iFstype, char *bFiddata, int iFidlen))GetProcAddress(m_hInstancePrint, "GetProductinformation");
        Print1Dbar = (int(*)(int iWidth, int iHeight, int iHrisize, int iHriseat, int iCodetype, const char* strData))GetProcAddress(m_hInstancePrint, "Print1Dbar");

        GetSDKinformation = (int(*)(char *bInfodata))GetProcAddress(m_hInstancePrint, "GetSDKinformation");


        SetRotation_Intomode = (int(*)(void))GetProcAddress(m_hInstancePrint, "SetRotation_Intomode");
        PrintRotation_Data = (int(*)(void))GetProcAddress(m_hInstancePrint, "PrintRotation_Data");
        PrintRotation_Sendtext = (int(*)(const unsigned char* strData, int iImme))GetProcAddress(m_hInstancePrint, "PrintRotation_Sendtext");
        PrintRotation_Sendcode = (int(*)(int leftspace, int iWidth, int iHeight, int iCodetype, const char* strData))GetProcAddress(m_hInstancePrint, "PrintRotation_Sendcode");
        PrintRotation_Changeline = (int(*)(void))GetProcAddress(m_hInstancePrint, "PrintRotation_Changeline");
        SetRotation_Leftspace = (int(*)(int iLeftspace))GetProcAddress(m_hInstancePrint, "SetRotation_Leftspace");
        SetPrintIDorName = (int(*)(const char* strIDorNAME))GetProcAddress(m_hInstancePrint, "SetPrintIDorName");
        GetPrintIDorName = (int(*)(char* strIDorNAME))GetProcAddress(m_hInstancePrint, "GetPrintIDorName");
        SetLeftmargin = (int(*)(int iLeftspace))GetProcAddress(m_hInstancePrint, "SetLeftmargin");
        SetComportauto = (int(*)(void))GetProcAddress(m_hInstancePrint, "SetComportauto");
        SetPrintportFlowCtrl = (int(*)(int iFlowCtrlFlag))GetProcAddress(m_hInstancePrint, "SetPrintportFlowCtrl");
        PrintFeedDot = (int(*)(int Lnumber))GetProcAddress(m_hInstancePrint, "PrintFeedDot");
        SetTraceLog = (void(*)(int iLog))GetProcAddress(m_hInstancePrint, "SetTraceLog");
        PrintPDF_CCCB_A = (int(*)(const char* strPath))GetProcAddress(m_hInstancePrint, "PrintPDF_CCCB_A");
        PrintPDF_CCCB_B = (int(*)(const char* strPath))GetProcAddress(m_hInstancePrint, "PrintPDF_CCCB_B");
        GetStatus_TS = (int(*)(void))GetProcAddress(m_hInstancePrint, "GetStatus_TS");
        SetPrintConn = (int(*)(int iConnWay, const char *strName, const char *strValue))GetProcAddress(m_hInstancePrint, "SetPrintConn");
        PrintDataMatrix = (int(*)(const char* strData, int iSize))GetProcAddress(m_hInstancePrint, "PrintDataMatrix");
        PrintQRcode500II = (int(*)(int iwidth, const char* strData))GetProcAddress(m_hInstancePrint, "PrintQRcode500II");
        PrintPdf417 = (int(*)(int iDotwidth, int iDotheight, int iDatarows, int iDatacolumns, const char* strData))GetProcAddress(m_hInstancePrint, "PrintPdf417");

        SetTraceLog(1);
    }
    else
    {
        printf("Loading DLL file failed!\n");
        fflush(stdout);    
        return -1;
    }

    if (jvm->GetEnv((void **)&env, JNI_VERSION_1_4) != JNI_OK) {
        return -1;
    }
    g_jvm = jvm;

    result = JNI_VERSION_1_8;


    printf("JNI_OnLoad sucess\n");
    fflush(stdout);
    return result;
}


char* jstringTostring(JNIEnv* env, jstring jstr)
{
    int length = env->GetStringLength(jstr);
    const jchar* jcstr = env->GetStringChars(jstr, 0);
    char* rtn = (char*)malloc(length * 2 + 1);
    int size = 0;
    size = WideCharToMultiByte(CP_ACP, 0, (LPCWSTR)jcstr, length, rtn,
        (length * 2 + 1), NULL, NULL);
    if (size <= 0)
        return NULL;
    env->ReleaseStringChars(jstr, jcstr);
    rtn[size] = 0;
    return rtn;
}

JNI 传中文字符

char* jstringTostring(JNIEnv* env, jstring jstr)
{
    int length = env->GetStringLength(jstr);
    const jchar* jcstr = env->GetStringChars(jstr, 0);
    char* rtn = (char*)malloc(length * 2 + 1);
    int size = 0;
    size = WideCharToMultiByte(CP_ACP, 0, (LPCWSTR)jcstr, length, rtn,
        (length * 2 + 1), NULL, NULL);
    if (size <= 0)
        return NULL;
    env->ReleaseStringChars(jstr, jcstr);
    rtn[size] = 0;
    return rtn;
}

使用完后注意 free

java 测试代码

public class PrinterTest {

    public static void main(String[] args) {
        int res=-1;
        System.loadLibrary("MsPrintSdkJni");
        res = MsPrintSdk.SetUsbportauto();
        System.out.println("SetUsbportauto="+res);
        res=MsPrintSdk.SetInit();
        System.out.println("SetInit="+res);
        MsPrintSdk.SetSizetext(2,2);

        res=MsPrintSdk.PrintString("测试中文测试中文测试中文测试中文测试中文测试中文测试中文测试中文测试中文\n", 0);
        res=MsPrintSdk.PrintString("您前面有 2 人等候,注意业务窗口的呼叫号码信息。过号请重新取号。\n", 0);
        System.out.println("PrintString="+res);
        PrintQrcode("QR Code:123456",27,8,0);
        MsPrintSdk.PrintFeedline(6);
        MsPrintSdk.PrintCutpaper(1);
        MsPrintSdk.SetClose();
    }
}

upload successful



硬件      JNI 热敏打印机

本博客所有文章除特别声明外,均采用 CC BY-SA 3.0协议 。转载请注明出处!