2016年,我用PDA(WINCE)开发了潍柴汽车物料仓库收货程序,实现物料扫描数据直连SAP服务器。记得当时PDA扫描一维码时很快,扫描二维码时,明显就要慢一些。

潍汽ERP系统PDA终端直连解决方案

2017年,胡总的需求使用终端直连SAP,实现验证总装工位上的BOM准确性,为LES配送纠正数据,我用UNITY开发了一个安卓APP。记得当时使用手机扫描一维码时是比较慢的,我的华为P7手机扫描一下VIN码大概要2~3秒钟,还总是扫不到。

潍汽ERP系统安卓终端直连解决方案

今天突然想到,这几年微信扫描支付很便捷,可谓所见即所得,扫描的速度非常快,难道是手机硬件提高后情况改变了?打开UNITY,写了一个APP,用手机测试了一下,果然和微信的扫描速度一样的秒扫。那手机硬件如此强大的今天,选择条码获取的终端设备,还需要什么PDA啊?手机应该足够了。

做个笔记详细记录一下:

1、安装UNITY 2021

登录官网下载UNITY HUB,安装选择UNITY2021正式版本,安装时把安卓的SDK和NDK一起安装,很方便打一个勾就行,再不需要提前去安装android studio了。

2、新建一个UNITY2D项目

在海尔啊骑里面,Main Camera主摄像机中添加一个Canvas桌布:

Canvas桌布的空间属性中,选择"Camera摄像机“,2D平面即桌布就是摄像机的视野。

注意红色的箭头,需要把摄像机拖到这里,就和桌布建立了关系。

在game视图中设定分辨率,竖屏:

我们再在桌布上放上RawImage,button,Text三个控件。

RawImage用来显示手机摄像头,button按一下就识别一下条码,Text用来显示条码的文本内容。

3、程序脚本

在桌布控件上,新建一个C#脚本,每一个物体都可以挂载脚本,我们这里给桌布挂一个就好。

使用脚本之前,还需要导入一个ZXING开源的条码扫描库”zxing.unity.dll“看这名字就知道zxing专门为unity提供的:

我的网盘下载 zxing.unity.dll   版本是16.6

链接:https://pan.baidu.com/s/1wAcXdRcjloD6MWFouA0YCA 
提取码:bkjs

全部代码如下:

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
using ZXing;
using ZXing.QrCode;public class NewBehaviourScript : MonoBehaviour
{public RawImage m_RawImage;public Text m_Text;    private WebCamTexture m_webCameraTexture;    // Start is called before the first frame updatevoid Start(){WebCamDevice[] tDevices = WebCamTexture.devices;    //获取所有摄像头string tDeviceName = tDevices[0].name;  //获取第一个摄像头,用第一个摄像头的画面生成图片信息        m_webCameraTexture = new WebCamTexture(tDeviceName, (int)m_RawImage.rectTransform.rect.width, (int)m_RawImage.rectTransform.rect.height);//名字,宽,高m_webCameraTexture.Play();  //开始实时显示m_RawImage.texture = m_webCameraTexture;   //赋值图片信息 }public void CheckQRCode(){m_Text.text = "Scan......";Color32[] m_colorData = m_webCameraTexture.GetPixels32(); //存储摄像头画面的颜色数组  BarcodeReader m_barcodeRender = new BarcodeReader();  //二维码的变量   var s = m_barcodeRender.Decode(m_colorData, m_webCameraTexture.width, m_webCameraTexture.height);//将画面中的二维码信息检索出来m_Text.text = s.Text;}// Update is called once per framevoid Update(){        }
}

脚本中出现了public全局变量后,在桌布的属性节目中,找到脚本界面属性,发现全局变量还需要和UI控件关联上,方法也是把控件拖上去,就和UI上的控件关联上了:

4、解决一个 UNITY zxing 竖屏扫描摄像头画面都是旋转了90度的问题:

网上的例子,大都在问这个问题,我已经解决了,把RawImage控件,旋转属性中,设置-90度即可:

5、编译UNITY APP

打开手机的USB调试模式,用USB数据线连接电脑与手机,UNITY中切换平台至android,直接编译运行即可:

------------2021.7.8-----扫码上传服务器---------------

手机上扫到条码数据后,我还可以上传到自己的web服务器上:

一、UNITY增加上传服务器的全部代码:

使用HTTP GET把条码数据传给服务器

using System.Collections;
using System.Collections.Generic;
using System.IO;
using System.Net;
using System.Text;
using UnityEngine;
using UnityEngine.UI;using ZXing;
using ZXing.QrCode;public class NewBehaviourScript : MonoBehaviour
{public RawImage m_RawImage;public Text m_Text;private WebCamTexture m_webCameraTexture;// Start is called before the first frame updatevoid Start(){WebCamDevice[] tDevices = WebCamTexture.devices;    //获取所有摄像头string tDeviceName = tDevices[0].name;  //获取第一个摄像头,用第一个摄像头的画面生成图片信息        m_webCameraTexture = new WebCamTexture(tDeviceName, (int)m_RawImage.rectTransform.rect.width, (int)m_RawImage.rectTransform.rect.height);//名字,宽,高m_webCameraTexture.Play();  //开始实时显示m_RawImage.texture = m_webCameraTexture;   //赋值图片信息}// Update is called once per framevoid Update(){        }public void OnMyClickButton(){m_Text.text = "Scan......";Color32[] m_colorData = m_webCameraTexture.GetPixels32(); //存储摄像头画面的颜色数组  BarcodeReader m_barcodeRender = new BarcodeReader();  //二维码的变量   var s = m_barcodeRender.Decode(m_colorData, m_webCameraTexture.width, m_webCameraTexture.height);//将画面中的二维码信息检索出来m_Text.text = s.Text;string url = "http://esb.baonengmotor.com/GetClientPost.aspx";string postDataStr = "username=liuxin&password=123456&ordno="+ s.Text;string result = HttpGet(url, postDataStr);      }//用于http get请求public static string HttpGet(string Url, string postDataStr){HttpWebRequest request = (HttpWebRequest)WebRequest.Create(Url + (postDataStr == "" ? "" : "?") + postDataStr);request.Method = "GET";request.ContentType = "text/html;charset=UTF-8";HttpWebResponse response = (HttpWebResponse)request.GetResponse();Stream myResponseStream = response.GetResponseStream();StreamReader myStreamReader = new StreamReader(myResponseStream, Encoding.UTF8);string retString = myStreamReader.ReadToEnd();myStreamReader.Close();myResponseStream.Close();return retString;}}

二、web服务器接收的全部.net代码:

当然,web这还是使用了EF6和FineUI框架,

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;namespace WMS
{public partial class GetClientPost : System.Web.UI.Page{protected void Page_Load(object sender, EventArgs e){//http://esb.baonengmotor.com/GetClientPost.aspx?username=liuxin&password=123456&ordno=fdafgagfdagafd789078906fadgdafg6598//http://localhost:12345/GetClientPost.aspx?username=liuxin&password=123456&ordno=fdafgagfdagafd789078906fadgdafg6598string username = Request["username"];string password = Request["password"];string ordno    = Request["ordno"];var someone = (from t in po.db.BA_USERwhere(t.ZUSER.Equals(username) &&t.PASSWORD.Equals(password))select t).FirstOrDefault();if (someone == null) { Response.Write("user or pass error."); return; }JK_MOM_MileStoneReport one = new JK_MOM_MileStoneReport();one.OSBID = username; one.SERNO = username;one.ORDNO = ordno;one.ZPASS_S = DateTime.Now.Date;one.ZPASS_T = DateTime.Now.TimeOfDay;po.pdadb.JK_MOM_MileStoneReport.Add(one);po.pdadb.SaveChanges();Response.Write("DataSaved.");/*var some = from w in po.db.RE_USER_ROLEfrom t in po.db.RE_ROLE_TCODEwhere(w.ZUSER.Equals(username) &&                    w.ROLE.Equals(t.ROLE)               )select new{    t.TCODE};foreach (var one in some){ Response.Write(one.TCODE+",");}*/}}
}

UNITY2021 开发安卓app 扫描一维二维条码相关推荐

  1. 安卓app,iOS二维码下载链接FIR

    企业APP开发出来以后,需要放到互联网上面推广. 现推荐一个比较好用的企业APP管理网站http://fir.im/. 1.先去http://fir.im/官网上面注册一个账号. 2.上传你的安卓ap ...

  2. 小程序实现一维二维条码

    扫码之后的样式:点击图标实现扫码功能,将信息返回给前端进行展示 wxml <view style="width:90%;margin:5% 0 5% 5%"> < ...

  3. 一码多用:扫描一个二维码自动跳转支付宝/微信小程序、安卓/iosAPP

    随着支付宝,微信小程序的慢慢崛起,现在很多公司同一款程序都开发了四个版本.支付宝/微信小程序.安卓/iosAPP.但是随着程序的增加,引导用户使用就成了问题.比如,一家店门口如何贴一张二维码.实现用户 ...

  4. 【Android App】人脸识别中扫描识别二维码实战解析(附源码和演示 超详细)

    需要源码请点赞关注收藏后评论区留言私信~~~ 一.扫描识别二维码 不仅可以利用zxing库生成二维码,同样利用zxing库可以扫描二维码并解析得到原始文本,此时除了给build.gradle添加如下一 ...

  5. 安卓app和苹果app共用一个二维码

    应项目要求,现在安卓app和苹果app共用一个二维码,对外提供下载: <html><head><meta http-equiv="Content-Type&qu ...

  6. 想用二维码推广应用,如何保证 Andriod 用户和 iOS 用户扫描同一个二维码后获得相应的 App ?

    想用二维码推广应用,如何保证 Andriod 用户和 iOS 用户扫描同一个二维码后获得相应的 App ? 这个问题纠结了好些天,后来想到的办法是:把桥页地址生成二维码,扫描后跳到桥页,在桥页判断平台 ...

  7. 浅析IM即时通讯开发之扫码登录二维码

    二维码技术使用起来很简单,本系列的前三篇文章也专门针对IM扫码登录这个功能做了详细的分享,但本着学习技术不留死角的习惯,我认为有必要单独学习一下到底什么是二维码(说不定哪天被个刚入行的程序员轻轻一句& ...

  8. python能开发安卓app吗_如何Python写一个安卓APP

    前言:用Python写安卓APP肯定不是最好的选择,但是肯定是一个很偷懒的选择,而且实在不想学习Java,再者,就编程而言已经会的就Python与Golang(注:Python,Golang水平都一般 ...

  9. python安卓应用程序开发,python怎么开发安卓app

    python可以写软件么怎么写? 22点24分准时推送,第一时间送达编辑:技术君 | 来源:youerning上一篇:正文前言用 Python 写安卓 APP 肯定不是最好的选择,目前用Java和 k ...

  10. php 冒泡排序数组,php一维二维数组键之冒泡排序

    php一维二维数组键之冒泡排序 功能:对数组进行重新排序. 说明:冒泡排序 (一维数组)(二维数组某个健排序) 两两比较待排序数据元素的大小,发现两个数据元素的次序相反时即进行交换,直到没有反序的数据 ...

最新文章

  1. linux主机密钥管理,管理ssh主机和私钥的最佳方法
  2. 【RecyclerView】 三、RecyclerView 布局 ( 线性布局管理器 LinearLayoutManager )
  3. Skpi List跳表
  4. 用JavaScript玩转计算机图形学(一)光线追踪入门
  5. php输出多维json,json多维数组怎么利用php进行构造
  6. 岗位推荐 | 蚂蚁金服招聘机器学习、自然语言处理算法工程师
  7. mysql创建表格1warning_MySQL:创建、修改和删除表
  8. gb50243-2016通风与空调工程施工质量验收规范_【规范】现行建筑标准规范集合:(六)专业工程...
  9. 云服务器磁盘挂载_实战记录阿里云服务器不关机扩展系统盘容量/磁盘扩容
  10. ionic3 图片(轮播)预览 ionic-gallary-modal组件使用方法
  11. 惯量比多少合适_详解】伺服电机负载惯量比的合理取值汇总
  12. 580刷590bios_AMD rx470/480/570/580/590高端技术公版/非公强刷BIOS教程教学-没差老师出品...
  13. 汽车超人:从电商到汽后新零售的华丽转身
  14. MATLIB从excel表中读取数据并画出函数图像
  15. 泰克Tektronix示波器软件TDS520|TDS1001|TDS1002上位机软件NS-Scope
  16. 对象的高级使用-插入图片对象(转)
  17. 移动硬盘坏点测试软件,移动硬盘坏道检测工具
  18. easyExcel的一些操作
  19. 1110 - 好像事情没我想的那么糟
  20. 笔记本计算机的功率一般多少钱,笔记本功率一般是多少瓦

热门文章

  1. 简单了解oop编程思想和常见的几种设计模式
  2. 通达信主力强势上涨预警副图指标公式(源码)
  3. RS485电路设计原理图
  4. zte机顶盒怎么投屏_中兴iptv机顶盒可以投屏吗?
  5. 普中51开发板,用XPT2046芯片实现AD数模转换。protues仿真用ADC0808实现AD数模转化
  6. 2023计算机考研资料分享
  7. Da黄蜂vep云课堂6.05录屏截屏提取为mp4教程
  8. 关于eclipse adt更新的问题
  9. PDG转PDF全攻略
  10. oracle数据库论文参考文献,ORACLE数据库管理研究