Epson打印机连接失败状态ERR_CONN

2024-02-23

我有一台 Epson 打印机,我使用 SDK 提供的 epos2_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;
}

它总是在 connectprinter 函数内的 Printer.connect 上给我异常 ERR_CONNECT 。

我究竟做错了什么?

此代码与示例应用程序配合良好。 P.S:我曾尝试在连接示例应用程序之前连接此应用程序,以检查示例应用程序是否保持连接并且不允许其他应用程序连接,但事实并非如此。 Epson帮助无法提供任何进一步的帮助。

我的 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>

您的清单中似乎没有适当的权限。尝试将这些放在您的项目中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"/>

他们还拥有

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

许可,但我不确定你是否需要它。我认为最重要的是蓝牙和互联网权限。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Epson打印机连接失败状态ERR_CONN 的相关文章

  • Android上如何模拟后台Activity因内存不足而被系统杀死的过程?

    我正在处理 内存不足 不再有后台进程 问题 当这种情况发生时 我的活动处于后台并被杀死 我正在尝试保存并加载实例状态来解决它 但因为它并不是每次都会发生 在这种情况下我应该如何测试我的活动 Thanks 您可以通过 adb 强制进程终止 g
  • 如何在android中压缩和解压png图像

    您好 在我的应用程序中 当我单击 zip 按钮时 我需要压缩图像文件 当我单击解压缩按钮时 我需要解压缩文件 我尝试使用下面的代码来压缩图像 但我的问题是当我单击 zip 按钮时 正在创建 zip 文件 但之后在使用 winzip 软件的系
  • Android:我可以创建一个不是矩形的视图/画布吗?圆形的?

    我有一个圆形视图 悬停在主要内容上方 gt 从屏幕出来的 z 轴方向 当有人点击屏幕时 我希望选择主要内容或悬停在上方的视图 当它覆盖主视图时 到目前为止效果很好 我在透明画布上有一个圆形物品 这意味着您可以看到该圆圈之外的背景的所有内容
  • 更改卡片高度即更改 Jetpack 中与 Material 3 组合的卡片颜色

    我正在使用 Card 可组合项 我希望它的颜色为白色 但是当我向它添加一些高度时 它的颜色会更改为更像主要容器颜色 我看过文档 其中有一种称为高程覆盖的东西 但找不到说明如何使用它的示例 这是我的代码 Card modifier Modif
  • Google 地图删除标记路线上下文菜单

    我使用 Android Studio 的 Google 地图模板启动了一个新项目 并在地图上添加了一个标记 LatLng location new LatLng lat lng Marker marker mMap addMarker ne
  • 使用 Android Firebase 堆栈推送通知

    我开发了使用 Firebase 接收推送通知的 Android 应用程序 我的代码基于 Firebase Google 官方文档 https firebase google com docs cloud messaging android
  • 在选项卡上保存数据

    我有 3 个选项卡 每个选项卡都有一个单独的活动 我想在用户单击任一选项卡上的 保存 时保存数据 有几个选项可供选择 共享首选项 全局变量或将对象保存在上下文中 编辑 我必须保存图像和文本字段 Android 共享首选项 https sta
  • Android:使 Dialog 周围的所有内容都比默认值更暗

    我有一个具有以下样式的自定义对话框 它显示了一个无边框对话框 后面的任何内容都会 稍微 变暗 我的设计师希望背后的一切都比 Android 的默认设置更暗 但不是完全黑色 有这样的设置吗 我能想到的唯一解决方法是使用全屏活动而不是对话框 只
  • 来自相机的 MediaCodec 视频流方向和颜色错误

    我正在尝试流式传输视频捕获直接从相机适用于 Android 设备 到目前为止 我已经能够从 Android 相机捕获每一帧预览帧 byte data Camera camera 函数 对数据进行编码 然后成功解码数据并显示到表面 我用的是安
  • 如何从android中的外部存储中获取所选文件的文件路径?

    我在选择文件的文件路径时遇到问题 我搜索了整个堆栈溢出 但问题没有解决 从设备中选择文件的代码如下所示 Intent intent new Intent Intent ACTION GET CONTENT intent setType in
  • Android 纹理仅显示纯色

    我正在尝试在四边形上显示单个纹理 我有一个可用的 VertexObject 它可以很好地绘制一个正方形 或任何几何对象 现在我尝试扩展它来处理纹理 但纹理不起作用 我只看到一种纯色的四边形 坐标数据位于 arrayList 中 the ve
  • Android 时钟滴答数 [赫兹]

    关于 proc pid stat 中应用程序的总 CPU 使用率 https stackoverflow com questions 16726779 total cpu usage of an application from proc
  • 未解决的包含:“cocos2d.h” - Cocos2dx

    当我在 Eclipse 中导入 cocos2dx android 项目时 我的头文件上收到此警告 Unresolved inclusion cocos2d h 为什么是这样 它实际上困扰着我 该项目可以正确编译并运行 但我希望这种情况消失
  • 如何构建自定义摄像机应用程序?

    我正在尝试开发一个自定义摄像机录像机 当我的设备在 Activity 的 beginRecording 中执行 start MediaRecorder 方法时 应用程序崩溃 我不知道出了什么问题 因为我遵循谷歌API指南 http deve
  • Activity 类型中的方法 showDialog(int) 在 Android 中已被弃用?

    方法showDialog int 从类型Activity is 已弃用 什么原因 以及如何解决 什么原因 http developer android com reference android app Activity html show
  • Android AdMob:addView 在返回活动之前不会显示广告

    我正在尝试在游戏顶部添加横幅广告 我的活动使用带有自定义 SurfaceView 的relativelayout 我希望广告与 SurfaceView 重叠 广告会加载并可点击 但不会绘制到屏幕上 当我离开活动并返回时 会绘制广告 例如 通
  • 在 Android 手机中通过耳机插孔发送数据

    我目前正在处理一个新项目 我必须通过具有特定电压的耳机插孔发送数据 然后我可以在该电压上工作 所以这里我需要根据我的数据来编程具体电压 我是否可以在android中访问耳机的输出电压 然后创建一个应用程序来控制该电压 这是一篇讨论此问题的
  • 使用 DataBindingComponent 的 Inflate 方法

    当 Glide 成功渲染图像后 我在更新文本视图时看到此错误 致命异常 java lang IllegalStateException 必需 CustomBinding 类中的 DataBindingComponent 为 null 绑定适
  • Flash 对象未显示在phonegap android 中

    我已经在 android 手机间隙创建了一个应用程序 我有一个屏幕 我想显示一个静态 flash obj 所以我在屏幕 HTML 页面中放入了以下代码
  • 如何在布局编辑器中模拟沉浸式模式

    我想在布局编辑器中全屏查看我的布局 我正在使用 eclipse 插件 我已经通过选择隐藏了 ActionBar NoActionBar组合中的主题 但导航栏是一个不同的故事 AFAIK 它只能使用代码中的标志来隐藏 我需要在活动 xml 文

随机推荐

  • 如何在Python中安装gcp?

    许多 BigQuery 示例都以以下内容开头 import gcp bigquery as bq 但我得到ImportError No module named gcp bigquery每当我尝试运行这个时 我如何安装这个库 我正在使用 p
  • 在 MATLAB 中绕其中心旋转图像矩阵

    假设我有一个 2x2 矩阵 其中填充了代表平面的值 现在我想以 3D 方式在 z 方向 上围绕自身旋转平面 为了更好地理解 请参见下图 我想知道这是否可以通过简单的仿射矩阵实现 因此我创建了以下简单的脚本 Create a random v
  • Xamarin PCLCrypto SHA256 给出不同的哈希值

    我有一个 Xamarin Forms XAML 便携式项目 我需要从字符串中获取 SHA256 我使用 PCLCrypto 来查找哈希 因为 PCL 中不存在 System Security Cryptography 我从 API 获取 s
  • 如何使用`React.createElement`子参数(没有jsx)

    React createElement采用展开的 children 参数 var d React DOM React createElement LabeledElement label Foo d input value foo 但我找不
  • 如何为相机设置 android:screenOrientation="portrait"

    我正在使用 Samsung Galaxy Note 运行phonegap 应用程序 当我拍照时 我可以看到屏幕在进入相机之前旋转 我怎样才能禁用这个功能 我尝试在主线程和相机活动上强制纵向 但那些似乎不起作用
  • 无法声明只有一个参数的匿名对象

    有这样的代码 class SomeClass public SomeClass SomeClass SomeClass b SomeClass SomeClass b SomeClass c int main SomeClass a Som
  • Python MySql 插入不起作用

    我正在使用 python MySQL API 从 python 程序连接到 Mysql 数据库 我几天来面临一个问题 我无法将记录插入数据库 不知道原因是什么 这是我连接并将记录插入数据库的方式 db MySQLdb connect loc
  • sklearn 中估计器管道的参数 clf 无效

    有人可以检查以下代码的问题吗 我在构建模型的过程中是否有任何错误 我已经在参数中添加了两个 clf clf RandomForestClassifier pca PCA pca clf make pipeline pca clf kfold
  • XSLT定义一个变量并检查它是否存在

    我正在尝试转换 XML 文档 首先 我定义一个全局变量
  • 使用 dask 合并大型数据集

    我有两个数据集 一个约为 45GB 包含 1 年的日常交易 第二个数据集为 3 6GB 包含客户 ID 和详细信息 我想将两者合并到一个公共列上以创建一个数据集 这超出了服务器的内存 因为每个客户可能有多个交易 我正在开发一个具有 16 个
  • 可变结构体字段

    我知道可变字段在 0 6 中被删除了 我使用此代码收到以下错误 C Users mflamer Dropbox Rust Tests gmap rs 23 8 23 18 错误 分配给不可变字段 C Users mflamer Dropbo
  • 寻找 .NET 的命令行参数解析器 [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • 什么时候应该使用 Localize 控件而不是 Literal?

    我最近意识到System Web UI WebControls Localize http msdn microsoft com en us library system web ui webcontrols localize aspxAS
  • 在 .net、winforms 中显示用户控件后,我可以捕获的最后一个可能的事件是什么?

    正如标题所示 我正在寻找一个在用户控件显示后捕获的事件 目前 我必须设置一个 do once 变量并捕获 Invalidated 事件 关于什么可见变化 http msdn microsoft com en us library syste
  • 无法删除 Android Studio 中的目录

    今天我将 Android Studio 更新到 2 0 当我运行我的项目时出现此错误 Error Execution failed for task app clean gt Unable to delete directory media
  • 删除 MongoDB 数据库中的所有内容

    我正在 MongoDB 上进行开发 出于完全非邪恶的目的 我有时想清除数据库中的所有内容 即删除每个集合以及周围可能存在的任何其他内容 然后从头开始 是否有一行代码可以让我做到这一点 提供 MongoDB 控制台方法和 MongoDB Ru
  • 使用 jQuery 从输入值中删除给定的字符串

    我有一个包含三个整数值的隐藏字段 例如
  • 在 Microsoft Edge 中打开跨源窗口时忽略 window.open() 参数

    在 Microsoft Edge 中 以下代码片段将忽略传递给的选项window open when url与当前域的来源不同 但它在 Chrome 和 Firefox 中运行良好 并且当域是同源时 const popupWindow wi
  • libavformat/ffmpeg 与 x264 和 RTP 同步时出现问题

    我一直在开发一些实时直播的流媒体软件 来自各种摄像机和网络流使用 H 264 为了实现这一点 我直接使用 x264 编码器 使用 零延迟 预设 并提供 NAL 因为它们可用于 libavformat 打包到 RTP 最终是 RTSP 中 理
  • Epson打印机连接失败状态ERR_CONN

    我有一台 Epson 打印机 我使用 SDK 提供的 epos2 printer 示例项目 代码与我的应用程序集成 我复制了相同的代码 但它似乎永远不起作用 但是 当我将示例项目连接到打印机时 效果相同 private boolean ru