如何通过Android应用程序将数据发送到蓝牙打印机?

2024-05-16

我正在开发一个应用程序,它将通过蓝牙将数据发送到打印机进行打印(收据热敏打印机)。我已按照此链接中的代码进行操作。

http://pastie.org/6203514 http://pastie.org/6203514这个链接也http://pastie.org/6203516 http://pastie.org/6203516

当我将数据发送到打印机时(打印机上的 LED 指示灯停止闪烁并变为标准状态,即打印机已与我的 Android 手机连接),我能够看到设备及其 MAC 地址和名称,但是当我发送它没有打印数据,也没有给出任何错误。我用谷歌搜索了很多,找到了很多代码并尝试了所有代码集,但无法打印。

请任何人都可以帮助我离开这里。我听说用 Intents 可以很容易地完成,但用 Intents 却无法得到准确的解决方案。

任何帮助,将不胜感激 提前致谢

Ganesh


最后我自己解决了这个问题,问题是我发送到打印机的标头字节是真正的罪魁祸首。实际上我正在发送 170,1 (其中 170 是打印机必须接收的第一个字节,第二个字节是打印机 ID,我的意思是某个 com 端口,这两个值由打印机控制卡设计者给出)。实际上我必须发送 170,2,其中 2 是打印机 ID,以便它提供正确的打印,并且对于每台打印机,通常根据其控制卡发送数据。

非常感谢朋友,这是我的代码,您可以将这些代码用于所有类型的打印机(POS 热敏打印机)

public void IntentPrint(String txtvalue)
{
    byte[] buffer = txtvalue.getBytes();
    byte[] PrintHeader = { (byte) 0xAA, 0x55,2,0 };
    PrintHeader[3]=(byte) buffer.length;
    InitPrinter();
    if(PrintHeader.length>128)
    {
        value+="\nValue is more than 128 size\n";
        txtLogin.setText(value);
    }
    else
    {
        try
        {
            for(int i=0;i<=PrintHeader.length-1;i++)
            {
                mmOutputStream.write(PrintHeader[i]);
            }
            for(int i=0;i<=buffer.length-1;i++)
            {
                mmOutputStream.write(buffer[i]);
            }
            mmOutputStream.close();
            mmSocket.close();
        }
        catch(Exception ex)
        {
            value+=ex.toString()+ "\n" +"Excep IntentPrint \n";
            txtLogin.setText(value);
        }
    }
} 

其余代码如下:

public void InitPrinter()
{
    try
    {
        if(!bluetoothAdapter.isEnabled())
        {
           Intent enableBluetooth = new Intent(BluetoothAdapter.ACTION_REQUEST_ENABLE);
           startActivityForResult(enableBluetooth, 0);
        }

        Set<BluetoothDevice> pairedDevices = bluetoothAdapter.getBondedDevices();

        if(pairedDevices.size() > 0)
        {
            for(BluetoothDevice device : pairedDevices)
            {
                if(device.getName().equals("Your Device Name")) //Note, you will need to change this to match the name of your device
                {
                    mmDevice = device;
                    break;
                }
            }

            UUID uuid = UUID.fromString("00001101-0000-1000-8000-00805F9B34FB"); //Standard SerialPortService ID
            //Method m = mmDevice.getClass().getMethod("createRfcommSocket", new Class[] { int.class });
            //mmSocket = (BluetoothSocket) m.invoke(mmDevice, uuid);
            mmSocket = mmDevice.createRfcommSocketToServiceRecord(uuid);
            bluetoothAdapter.cancelDiscovery();
            if(mmDevice.getBondState()==2)
            {
                mmSocket.connect();
                mmOutputStream = mmSocket.getOutputStream();
            }
            else
            {
                value+="Device not connected";
                txtLogin.setText(value);
            }
        }
        else
        {
            value+="No Devices found";
            txtLogin.setText(value);
            return;
        }
    }
    catch(Exception ex)
    {
        value+=ex.toString()+ "\n" +" InitPrinter \n";
        txtLogin.setText(value);
    }
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何通过Android应用程序将数据发送到蓝牙打印机? 的相关文章

随机推荐

  • 您可以在 Cucumber 的 Give、When 和 Then 步骤定义期间定义实例变量吗

    我知道使用 Cucumber 您可以在给定步骤定义期间定义实例变量 该实例变量成为World范围 然后 您可以在 When 和 Then 的步骤定义期间访问此实例变量 您是否也可以在 When 和 Then 步骤定义期间定义实例变量 并在后
  • 如何在 iOS 中将 Firebase 对象持久保存到磁盘?

    看起来Firebase http www firebase comiOS 实现不支持客户端模型的离线缓存 这在实践中意味着 对于需要身份验证的 Firebase 应用程序 您需要首先进行身份验证并等待 Firebase 完成登录 检查用户身
  • 如何使QTableView类的restoreState()和saveState()正常工作?

    首先 我想说 我的问题已经在这里讨论过 并且这里是 https stackoverflow com questions 1163030 qt qtableview and horizontalheader restorestate 但答案并
  • 使用 BitBlt 捕获程序窗口始终返回相同的图像

    我编写了以下代码 C Win32 来捕获游戏窗口屏幕并从图像中获取像素颜色数组 函数 autoB 完成这项工作 然后我将结果数组绘制到窗口中以直观地检查我得到的结果 问题是 这个程序在我启动计算机后只工作一次 在第一次 缓存 从游戏中获取的
  • 控制缓存过期

    通过 Google 网站管理员工具的 PageSpeed 分析器运行我的网页后 它向我报告我的资源没有被缓存 下面是我的 htaccess 文件中直接取自 H5BP 的代码 我是否正确地假设以下过期时间设置正确 但我的实现中出现了问题 或者
  • axios post请求react-native中出现网络错误

    这是我通过 axios post 请求检查身份验证的方法 CheckAuth let obj username email protected cdn cgi l email protection password zzxxz oauth
  • 我的 Powershell GUI 界面在打开网格视图时不断调整大小

    我目前正在构建一个复制到剪贴板工具 其中显示存储在文件夹中的 txt 文件列表 并且我使用 out gridview 来允许用户更好地选择和过滤列表 我已附上图片以供参考 单击加载 out gridview 的按钮后如何停止调整大小 Too
  • Spring Thymeleaf - 调用服务方法布尔值来显示 HTML 项目

    在我的标题 HTML 中 我显示一个 UL LI 菜单 其中 LI 项目之一的可见性取决于服务方法调用 我试过这个 家庭控制器 Controller public class HomeController private static fi
  • (Tcl/Expect) 退出后清屏

    我想在退出我的 半 交互式期望脚本后清除屏幕 在本地计算机上 我可以在脚本中做到这一点吗 这是我尝试过的 但失败了 usr bin expect f set env TERM vt100 spawn ssh Y username domai
  • Jquery $(window).width() 不包括滚动条宽度?

    我有一个页面使用 javascript 设置了很多 css 属性 并使用 window width 来确定页面宽度 除此之外 它还使用该方法将一些 div 宽度设置为页面的完整宽度 A 这样做是因为很多其他计算都是在 javascript
  • 如何检查带有通配符的模拟调用?

    我正在编写单元测试 并且想要检查具有函数对象的调用 如下所示 call u mock u foobar
  • 如何在 Rails 4 中使用 params.require

    我有一个像这样的私有方法 用于有四个字段的注册表单 firstname email password and confirm password 我不知道如何检查password confirmation def user params pa
  • Godaddy 托管上的 CakePHP 控制台

    我一直在努力让我的 CakePHP 网站在 Godaddy 网格托管 帐户上运行 我的蛋糕应用程序设置是从帐户的子目录托管的 并且可以通过子域访问 我必须调整我的 htaccess 文件才能使其正常工作 现在我需要让 CakePHP 控制台
  • 如何从连接矩阵绘制图像?

    我想编写一个脚本来从连接矩阵创建图像 基本上 只要矩阵中有 1 我就希望该区域在图像中被着色 对于例如 我使用 Photoshop 创建了这张图像 但我有一个很大的数据集 所以我必须自动化这个过程 如果有人能指出我正确的方向 那将非常有帮助
  • 解析日期不正确

    My code DateFormat format new SimpleDateFormat dd MM YYYY Date Today format parse today Date Date format parse date diff
  • 创建 AoT 兼容的服务工厂

    我正在尝试为缓存服务创建一个服务工厂 主要要求是每次可以使用不同的字符串实例化单个服务 最终的结果会有多个cache每个服务都由唯一定义databaseName 每个缓存可以有一个或多个stores也由唯一定义storeName 其他服务将
  • caffe reshape / 上采样全连接层

    假设我们有一个像这样的层 layer name fully connected type InnerProduct bottom bottom top top inner product param num output 1 输出是batc
  • ES2015 中 `export { foo as default }` 有效吗?

    我收到了GitHub 上的问题 https github com benmosher eslint plugin import issues 54关于我的 ES2015 模块导入 导出验证插件 ESLint 无法识别default使用以下语
  • 左值引用和右值引用之间的重载解析

    include
  • 如何通过Android应用程序将数据发送到蓝牙打印机?

    我正在开发一个应用程序 它将通过蓝牙将数据发送到打印机进行打印 收据热敏打印机 我已按照此链接中的代码进行操作 http pastie org 6203514 http pastie org 6203514这个链接也http pastie