Reputation: 338
I'm trying to print a receipt using a thermal printer.
printer mprinter = new printer();
mprinter.Open();
mprinter.SetPrintMode(1);
/*Some code */
mprinter.Write(byteData);
mprinter.Close();
When I set a breakpoint near mprinter.Close();
(or somwhere else) everything works fine. If I reset a breakpoint thermal printer prints nothing. Why is this happening?
My native functions:
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;
}
Upvotes: 1
Views: 56
Reputation: 338
OK, I have found a solution. I just need to call Thread.sleep() after calling mprinter.Write(byteData);
Upvotes: 1