EPSON ERR_CONN printer connection failed

I have an Epson printer and I used the epos2_printer code (sample project) given by the SDK to integrate with my application. I copied the same code, but it never works!

However, the same thing works when I connect a sample project to my printer.

private boolean runPrintReceiptSequence() { if (!initializeObject()) { return false; } if (!createReceiptData()) { finalizeObject(); return false; } if (!printData()) { finalizeObject(); return false; } return true; } private boolean initializeObject() { try { final SpnModelsItem spnModel = new SpnModelsItem("TM-T82 Series", Printer.TM_T82); final SpnModelsItem spnLang = new SpnModelsItem("ANK", Printer.MODEL_ANK); mPrinter = new Printer(spnModel.getModelConstant(), spnLang.getModelConstant(), this); } catch (Exception e) { Log.e("Printer", e.toString()); return false; } mPrinter.setReceiveEventListener(this); return true; } private boolean createReceiptData() { String method = ""; Bitmap logoData = BitmapFactory.decodeResource(getResources(), R.drawable.logo_saltnpepper); StringBuilder textData = new StringBuilder(); final int barcodeWidth = 2; final int barcodeHeight = 100; Date currentDate = new Date(); info.saltnpepper.ordersmart2.MenuItem currItem = null; double price = 0; double total = 0; int totalQty =0; if (mPrinter == null) { return false; } try { method = "addTextAlign"; mPrinter.addTextAlign(Printer.ALIGN_CENTER); method = "addImage"; mPrinter.addImage(logoData, 0, 0, logoData.getWidth(), logoData.getHeight(), Printer.COLOR_1, Printer.MODE_MONO, Printer.HALFTONE_DITHER, Printer.PARAM_DEFAULT, Printer.COMPRESS_AUTO); method = "addFeedLine"; mPrinter.addFeedLine(1); textData.append("SALT-N-PEPPER\n"); //textData.append("STORE DIRECTOR รขโ‚ฌ" John Smith\n"); textData.append("\n"); textData.append((new SimpleDateFormat("dd/MM/yy HH:mm:ss")).format(currentDate).toString() + "\n"); //textData.append("ST# 21 OP# 001 TE# 01 TR# 747\n"); textData.append("------------------------------\n"); method = "addText"; mPrinter.addText(textData.toString()); textData.delete(0, textData.length()); if(alFinalOrder != null) { for(int i=0; i < alFinalOrder.size(); i++) { currItem = alFinalOrder.get(i); textData.append(currItem.getName()+" "+currItem.getQty()+" "+currItem.getPrice()+"\n"); //calculate total quantity totalQty = totalQty + currItem.getQty(); //calculate price double dPrice = currItem.getQty()*Double.parseDouble(currItem.getPrice().substring(1)); total = total + dPrice; total = Math.round(total*100.0)/100.0; } } textData.append("------------------------------\n"); method = "addText"; mPrinter.addText(textData.toString()); textData.delete(0, textData.length()); textData.append("TOTAL "+"\n"); textData.append("TAX "+"\n"); method = "addText"; mPrinter.addText(textData.toString()); textData.delete(0, textData.length()); 

mPrinter.addFeedLine (2);

  method = "addBarcode"; mPrinter.addBarcode("01209457", Printer.BARCODE_CODE39, Printer.HRI_BELOW, Printer.FONT_A, barcodeWidth, barcodeHeight); method = "addCut"; mPrinter.addCut(Printer.CUT_FEED); } catch (Exception e) { //ShowMsg.showException(e, method, mContext); return false; } textData = null; return true; } private boolean printData() { if (mPrinter == null) { return false; } if (!connectPrinter()) { return false; } PrinterStatusInfo status = mPrinter.getStatus(); dispPrinterWarnings(status); if (!isPrintable(status)) { Log.e("Printer", "Is not printable"); try { mPrinter.disconnect(); } catch (Exception ex) { // Do nothing } return false; } try { mPrinter.sendData(Printer.PARAM_DEFAULT); } catch (Exception e) { Log.e("Printer", e.getMessage()); try { mPrinter.disconnect(); } catch (Exception ex) { // Do nothing } return false; } return true; } private boolean connectPrinter() { boolean isBeginTransaction = false; if (mPrinter == null) { return false; } try { mPrinter.connect("TCP:"+mIP, Printer.PARAM_DEFAULT); } catch (Epos2Exception e) { //ShowMsg.showException(e, "connect", this); if(e.getErrorStatus() == Epos2Exception.ERR_CONNECT) { Log.e("testing", "error connect"); } if(e.getErrorStatus() == Epos2Exception.ERR_ALREADY_OPENED) { Log.e("testing", "already open"); } if(e.getErrorStatus() == Epos2Exception.ERR_ALREADY_USED) { Log.e("testing", "already used"); } if(e.getErrorStatus() == Epos2Exception.ERR_BOX_CLIENT_OVER) { Log.e("testing", "box client over"); } if(e.getErrorStatus() == Epos2Exception.ERR_BOX_COUNT_OVER) { Log.e("testing", "count over"); } if(e.getErrorStatus() == Epos2Exception.ERR_DISCONNECT) { Log.e("testing", "disconnect"); } if(e.getErrorStatus() == Epos2Exception.ERR_FAILURE) { Log.e("testing", "failure"); } if(e.getErrorStatus() == Epos2Exception.ERR_ILLEGAL) { Log.e("testing", "illegal"); } if(e.getErrorStatus() == Epos2Exception.ERR_IN_USE) { Log.e("testing", "in use"); } if(e.getErrorStatus() == Epos2Exception.ERR_MEMORY) { Log.e("testing", "memory"); } return false; } try { mPrinter.beginTransaction(); isBeginTransaction = true; } catch (Exception e) { Log.e("Printer", e.toString ()); } if (isBeginTransaction == false) { try { mPrinter.disconnect(); } catch (Epos2Exception e) { // Do nothing return false; } } return true; } 

It always gives me an ERR_CONNECT exception on printer.connect inside the connectprinter function.

What am I doing wrong?

This code works great with a sample application. PS: I tried connecting this application before connecting the sample application to check if the sample application supports the connection and does not allow other applications to connect, but this is not the case. Epson Help cannot provide further assistance.

My AndroidManifest.xml

 <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="xyz" android:versionCode="1" android:versionName="1.0" > <uses-sdk android:minSdkVersion="21" android:targetSdkVersion="21" /> <application android:allowBackup="true" android:icon="@drawable/icon" android:label="@string/app_name" android:theme="@style/AppTheme" > <activity android:name=".MainActivity" android:label="@string/app_name" > <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> <activity android:name=".MenuActivity" > </activity> <activity android:name=".SaltnPepperActivity" android:label="@string/title_activity_saltn_pepper" > </activity> <activity android:name=".FinalOrder" ></activity> <activity android:name=".ZinVietActivity" > </activity> <activity android:name="com.epson.epos2_printer.DiscoverActivity" ></activity> </application> 

+6
source share
3 answers

It looks like you do not have the appropriate permissions in your manifest. Try putting them in your project under the manifest tag:

<uses-permission android:name="android.permission.BLUETOOTH"/>

<uses-permission android:name="android.permission.BLUETOOTH_ADMIN"/>

<uses-permission android:name="android.permission.INTERNET"/>

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>

They also have

<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/>

but I'm not sure you need it. I think the important things are Bluetooth and Internet permissions.

+1
source

As I suspect, there is an error connecting the printer. I used this SDK once to better follow the documentation correctly (meaning not to skip steps). Make sure you determine the resolution specified in the SDK.

 <uses-permission android:name="android.permission.BLUETOOTH"/> <uses-permission android:name="android.permission.BLUETOOTH_ADMIN"/> <uses-permission android:name="android.permission.INTERNET"/> <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/> <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/> <activity android:name=".MainActivity" android:label="@string/app_title" android:screenOrientation="portrait"> <intent-filter> <action android:name="android.hardware.usb.action.USB_DEVICE_ATTACHED"/> <action android:name="android.intent.action.MAIN"/> <category android:name="android.intent.category.LAUNCHER"/> </intent-filter> <meta-data android:name="android.hardware.usb.action.USB_DEVICE_ATTACHED" android:resource="@xml/device_filter"/> 

As I see, you did not indicate what type of connection you are doing this way, in this case there should be a problem when choosing target

Check out the function from the SDK:

Public void connect (String target, int timeout) throws an Epos2Exception;

enter image description here

You may be using the wrong target parameter.

Note. If you are using USB or some other mode, be sure to start the discovery service as described in the documents.

  Discovery.start(this, mFilterOption, mDiscoveryListener); 

He will return you the desired target name. And Iโ€™m sure that connection failure will not happen. Good luck \ o

+2
source

Status ERR_CONN basically shows if it is not possible to reach the device or connection failing with the device. This may be USB, LAN/NETWORK, Bluetooth Connection Failure Status.

If you are trying to connect the printer to Bluetooth, you should write below permissions:

 <uses-permission android:name="android.permission.BLUETOOTH"/> <uses-permission android:name="android.permission.BLUETOOTH_ADMIN"/> 

If you use LAN for network printers, then

 <uses-permission android:name="android.permission.INTERNET"/> 

To connect a USB printer Using:

 <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/> <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/> 

When you use the EPOS2 Sample Project , be sure to import the Jar file "EPOS2.jar". Click here to download the file.

+1
source

Source: https://habr.com/ru/post/1015278/


All Articles