zoukankan      html  css  js  c++  java
  • Android开发中通过AIDL文件中的方法打开钱箱,显示LCD屏幕

    下载相关 资源文件 ,在项目中新建如下层级的文件夹,将源文件中的AIDL文件放入其中。

    ICallback:打印服务执行结果的回调

    ITax:打印服务执行结果的回调

    ILcdCallback:顾显反馈结果

    根据需求选择aidl文件,IWoyouService是必须的。一般开钱箱使用IWoyouService和ICallback文件即可。 

     引入AIDL文件

    1.找到需要导入工程的aidl文件.通过文本打开,找到文件中的具体包名

      package woyou.aidlservice.jiuiv5;

    2.依次创建跟之前找到的包名一样的文件夹,我这里是:woyou、aidlservice、jiuiv5。

      把对应的aidl文件拷贝到创建的最后一层文件夹里

    3.如下文件,依次修改属性。右键属性→生成操作→修改为AndroidInterfaceDescription 

      修改完后重新生成,生成成功后在obj/Debug文件下找到aidl文件说明引入AIDL文件成功

    创建一个公共类(减少重复代码),也可以不创建直接写在需要调用的地方

    using Woyou.Aidlservice.Jiuiv5;
    
    public class ServiceConnection : Java.Lang.Object, IServiceConnection
        {
            public IWoyouService woyouService { get; private set; }
    
            public void OnServiceConnected(ComponentName name, IBinder service)
            {
                woyouService = IWoyouServiceStub.AsInterface(service);
            }
    
            public void OnServiceDisconnected(ComponentName name)
            {
                woyouService = null;
            }
    
            //public void connectPrinterService(Context con)
            //{
            //    Context context = con;
            //    Intent intent = new Intent();
            //    ServiceConnection  conn = new ServiceConnection();
            //    intent.SetPackage("woyou.aidlservice.jiuiv5");
            //    intent.SetAction("woyou.aidlservice.jiuiv5.IWoyouService");
            //    context.StartService(intent);
            //    context.BindService(intent, conn, Bind.AutoCreate);
            //}
        }

     调用,全局方法

    private ServiceConnection conn;
    
    //连接服务
    public void connectPrinterService()
            {
                Context context = this.ApplicationContext;
                Intent intent = new Intent();
                conn = new ServiceConnection();
                intent.SetPackage("woyou.aidlservice.jiuiv5");
                intent.SetAction("woyou.aidlservice.jiuiv5.IWoyouService");
                context.StartService(intent);
                context.BindService(intent, conn, Bind.AutoCreate);
            }
     private void BtnPosOpenBox_Click(object sender, EventArgs e)
            {
               //通过ES/POS指令的方式开钱箱
                byte[] aa = new byte[5];
    
                aa[0] = 0x10;
                aa[1] = 0x14;
                aa[2] = 0x00;
                aa[3] = 0x00;
                aa[4] = 0x00;
    
                try
                {
                    if (conn.woyouService == null)
                    {
                        connectPrinterService();
                    }
    
                    if (conn.woyouService != null)
                    {
                //打开钱箱,也可以直接使用conn.woyouService.OpenDrawer(null)方法开钱箱
                        conn.woyouService.SendRAWData(aa, null);
                        return;
                    }
    
                    Message.Show(MessageText.MSG_OPEN_ERROR_PLEASE_RETRY, this);
    
                }
                catch (RemoteException e1)
                {
                    e1.PrintStackTrace();
                }
       
            }
    开钱箱

     注意LCD屏幕和第二屏是不一样的,是两种不同的东西

    private void Btn_Click(object sender, EventArgs e)
            {
                try
                {
                    if (woyouService == null)
                    {
                        connectPrinterService();
                    }
    
                    if (woyouService != null)
                    {
                        //1 初始化 2 唤醒LCD 3休眠LCD 4清屏
                        woyouService.SendLCDCommand(1);//设置状态
                        woyouService.SendLCDCommand(2);
                        woyouService.SendLCDString("小杨!", null);//设置显示内容
                        //conn.woyouService.SendLCDDoubleString("金额:", "800", null) ;
                        return;
                    }
    
                    Message.Show("打开失败,请重试!", this);
    
                }
                catch (RemoteException e1)
                {
                    e1.PrintStackTrace();
                }
            }
    显示LCD屏幕
  • 相关阅读:
    从零入门 Serverless | 教你 7 步快速构建 GitLab 持续集成环境
    4 个场景揭秘,如何低成本让容器化应用 Serverless 化?
    如何无缝迁移 SpringCloud/Dubbo 应用到 Serverless 架构
    精准容量、秒级弹性,压测工具 + SAE 方案如何完美突破传统大促难关?
    golang 实现最小二乘法拟合直线
    golang 实现两数组对应元素相除
    js 算数组平均值、最大值、最小值、偏差、标准差、中位数、数组从小打大排序、上四分位数、下四分位数
    ajax传数组后台GO语言接收
    python 画图中文显示问题
    python stats画正态分布、指数分布、对数正态分布的QQ图
  • 原文地址:https://www.cnblogs.com/Swaggy-yyq/p/14069559.html
Copyright © 2011-2022 走看看