java - 热敏打印机仅在设置断点时打印

标签 java android printing java-native-interface

我正在尝试使用热敏打印机打印收据。

    printer mprinter = new printer();
    mprinter.Open();
    mprinter.SetPrintMode(1);
    /*Some code */
    mprinter.Write(byteData);
    mprinter.Close();

当我在 mprinter.Close();(或其他地方)附近设置断点时,一切正常。如果我重置断点热敏打印机什么都不打印。为什么会这样?

我的原生函数:

   JNIEXPORT jint JNICALL Java_aclasdriver_printer_Open(JNIEnv *env, jobject thiz)
       {
           if(openflag < 0)
           {
               openflag = open(DEV_PRINTER_NAME, O_RDWR);
           }

           return openflag;
       }

   JNIEXPORT jint JNICALL Java_aclasdriver_printer_Write(JNIEnv *env, jobject thiz, jbyteArray wrbuf)
   {
       jbyte *pwrbuf;
       int ret;
       int wrlen;
       int i;

       if(openflag < 0)
       {
           return -1;
       }
       LOGD("Printer write");

       pwrbuf = (*env)->GetByteArrayElements(env, wrbuf, NULL);
       wrlen = (*env)->GetArrayLength(env, wrbuf);
       for(i =0 ;i< wrlen;i++)
       {
          LOGD("%x ",pwrbuf[i]);
       }

       ret = write(openflag, pwrbuf, wrlen);
       (*env)->ReleaseByteArrayElements(env, wrbuf, pwrbuf, 0);

       return ret;
   }

最佳答案

好的,我找到了解决方案。我只需要在调用 mprinter.Write(byteData) 之后调用 Thread.sleep();

关于java - 热敏打印机仅在设置断点时打印,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33934713/

相关文章:

android - 防止用户更改字体

java - 动态 fragment 中的运行时异常

android - 调用 ArrayAdapter 导致无限循环?

perl - 用长度较短的语句覆盖打印语句

windows - 获取调用打印的应用程序的名称(路径)

CSS 格式化 A4 打印

java - 卡 table 和作家屏障实际上是​​如何工作的?

java - 部署到Heroku时如何使用OpenJDK 11?

java - 强制覆盖 DynamoDB 表名称

java - 桌面上的Libgdx,窗口关闭时如何处理