二維碼掃描槍對(duì)接

前言
本博客介紹二維碼掃描槍對(duì)接声搁,本博客僅僅寫(xiě)寫(xiě)實(shí)現(xiàn)過(guò)程刽漂,僅僅是給學(xué)習(xí)者作為一個(gè)了解僻焚,二維碼掃描槍需要相關(guān)硬件廠家做好一些dll動(dòng)態(tài)鏈接庫(kù)芹枷,當(dāng)然也有一些不需要dll動(dòng)態(tài)鏈接庫(kù)衅疙,動(dòng)態(tài)鏈接庫(kù)的需要廠家提供,各有不同杖狼,所以本博客僅僅是作為學(xué)習(xí)參考炼蛤。

DLL動(dòng)態(tài)鏈接庫(kù)和ActiveX的相關(guān)概念

DLL是Dynamic Link Library的縮寫(xiě),意為動(dòng)態(tài)鏈接庫(kù)。DLL是一個(gè)包含可由多個(gè)程序同時(shí)使用的代碼和數(shù)據(jù)的庫(kù)焕毫。


ActiveX是Microsoft對(duì)于一系列策略性面向?qū)ο蟪绦蚣夹g(shù)和工具的稱(chēng)呼,其中主要的技術(shù)是組件對(duì)象模型(COM)室埋。在有目錄和其它支持的網(wǎng)絡(luò)中嗽上,COM變成了分布式COM(DCOM)次舌。

二維碼生成
現(xiàn)在要實(shí)現(xiàn)的功能是這樣的,網(wǎng)站打開(kāi)按鈕兽愤,就啟動(dòng)掃描槍?zhuān)瑨呙瓒S碼之后彼念,網(wǎng)站自動(dòng)跳轉(zhuǎn)一個(gè)頁(yè)面
頁(yè)面上,我們可以用jquery一些插件生成一個(gè)二維碼浅萧,二維碼里可以放一個(gè)查詢(xún)的id就好逐沙。

定義一個(gè)div,來(lái)放二維碼

<div name="tQrcode" id="tQrcode" style="margin-left: 100px;"></div>

引入jquery生成二維碼的插件jquery.qrcode.js洼畅,腳本實(shí)現(xiàn)

<script language="javascript">
    $(function(){
        $("div[name='tQrcode']").each(function(index,element){
            createtQrcode(element);
        })
    });
    
    //生成辦件二維碼
    function createtQrcode(obj){
        var qrcode = $(obj).qrcode({
            text: '${t.seq}',//加上統(tǒng)一查詢(xún)碼
            width: 100,
            height: 100,
            colorDark : '#000000',
            colorLight : '#ffffff',
            correctLevel:3
        });
        var canvas = $(obj).children("canvas");
        var img = canvas[0].toDataURL("image/png")
        $(obj).html("<img src='" + img + "'>")
    }
</script>

驅(qū)動(dòng)安裝和dll注冊(cè)
1.先確認(rèn)電腦是否有安裝過(guò)VC庫(kù)
若沒(méi)有吩案,需安裝

2、安裝udp_and_vcom_drv_x86x64V2.0.1.msi

3帝簇、注冊(cè)COM組件
根據(jù)電腦多少位將【掃描槍Dll注冊(cè).zip】的所有dll復(fù)制到
32位:C:\WINDOWS\system32或者64位:C:\ WINDOWS\SysWOW64
在CMD下運(yùn)行下面命令注冊(cè)COM組件 regsvr32 NLcpfw_Com.dll

regsvr32 NLcpfw_Com.dll或者regsvr32 C:\Windows\SysWOW64\NLcpfw_Com.dll

4徘郭、安裝驅(qū)動(dòng)【USB-COM-Driver-x32.msi 適用于32位操作系統(tǒng)】/【USB-COM-x64.msi 適用于64位操作系統(tǒng)】

5、把【approveUnit.txt】放C盤(pán)根目錄下丧肴,然后修改如下圖的三個(gè)位置的數(shù)字残揉,改為設(shè)備管理器里的端口號(hào)。端口號(hào)在設(shè)備管理器里能看到芋浮,右鍵“我的電腦”--管理--設(shè)備管理器抱环,

6、測(cè)試
若發(fā)現(xiàn)串口號(hào)是com4的話途样,則需繼續(xù)修改C盤(pán)目錄下的approveUnit文件
最后測(cè)試是否可以正確讀取二維碼信息江醇,若可以正確讀取,則在下面空白框中自動(dòng)顯示所讀取數(shù)據(jù)

注意問(wèn)題:
硬件對(duì)接的必須用ie瀏覽器何暇,先設(shè)為受信任站點(diǎn)陶夜,在進(jìn)去自定義級(jí)別設(shè)置支持ActiveX控件

這里寫(xiě)圖片描述

掃描槍對(duì)接
頁(yè)面加上這些代碼

<div style="display:none"><!-- 掃描搶 -->
    <object id="idtPort" classid="CLSID:xxx" codebase="com.cab#version=1,0,0,1"></object>
    </div>

觸發(fā)函數(shù),掃描槍掃二維碼后裆站,獲取的數(shù)據(jù)dataStr

<script language="javascript" event="ReadDataEvent(lParam)" for="idtPort"> 
    var len = idtPort.get_data_len();
    var arr = idtPort.get_data(len);    
    var vbarray = new VBArray(arr);

    var jsarray = vbarray.toArray();
    
    for(var i=0;i<jsarray.length;i++)
    {
        jsarray[i]=String.fromCharCode(jsarray[i]);
    }
    var dataStr = jsarray.join("");
    
   //掃描二維碼后直接跳到相應(yīng)的辦件頁(yè)面
    toApprovePageHZ(dataStr);
   

</script>

掃描槍的一些腳本


//關(guān)閉掃描槍端口
function ClosePort()
{
var ret = idtPort.close();
if(ret == 0)
 {                  
     //alert("關(guān)閉掃描槍成功");
    }else {
        //alert("關(guān)閉掃描槍失敗");
    }
}
//打開(kāi)掃描槍端口
function OpenPort()
{
    var PorNum = initByFile();
    var PortType = "com";
    if(PorNum==null || PorNum=="")
    {
        PorNum = "1";
    }
    //var newfilepath = PorNum+";baud=115200";
    var newfilepath = "com="+PorNum+";baud=000";
    
    var ret = idtPort.open(PortType,newfilepath);
    if(ret == 0)
    {                           
        alert("打開(kāi)掃描槍成功");
    }
    else
        {
            alert("二維碼掃描槍接口打開(kāi)失敗条辟,錯(cuò)誤碼"+ret);
    }
}
//把十進(jìn)制數(shù)換成相應(yīng)的16進(jìn)制
function d2x(x)
{
var temp = 0;
var ftable = new Array("0","1","2","3","4","5","6","7","8","9","A","B","C","D","E","F");
x = x.split(",");
for (var i = 0; i < x.length; i++)
{
 temp = parseInt(x[i]);
 x[i] = ftable[Math.floor(temp / 16)] + ftable[temp % 16];
}
return x.join("");
}
//讀C盤(pán)下的COM口配置文件
function initByFile(){
var filePath = "c:\\approveUnit.txt";
var sRet = "3";
try { 
 var fso=new ActiveXObject("Scripting.FileSystemObject"); 
 var reading=1; 
 var f=fso.OpenTextFile(filePath,reading); 
 f.ReadLine();
 f.ReadLine();
 f.ReadLine();
 sRet = f.ReadLine();
 f.close();
} catch(err) {
    sRet = "3";
 //alert("文件:"+filePath+"(第4行二維描描槍號(hào))不存在或讀取出錯(cuò)了!"+err);
}
return sRet;
}
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市宏胯,隨后出現(xiàn)的幾起案子羽嫡,更是在濱河造成了極大的恐慌,老刑警劉巖肩袍,帶你破解...
    沈念sama閱讀 218,546評(píng)論 6 507
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件杭棵,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)魂爪,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,224評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門(mén)先舷,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人滓侍,你說(shuō)我怎么就攤上這事蒋川。” “怎么了撩笆?”我有些...
    開(kāi)封第一講書(shū)人閱讀 164,911評(píng)論 0 354
  • 文/不壞的土叔 我叫張陵捺球,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我夕冲,道長(zhǎng)氮兵,這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,737評(píng)論 1 294
  • 正文 為了忘掉前任歹鱼,我火速辦了婚禮胆剧,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘醉冤。我一直安慰自己,他們只是感情好篙悯,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,753評(píng)論 6 392
  • 文/花漫 我一把揭開(kāi)白布蚁阳。 她就那樣靜靜地躺著,像睡著了一般鸽照。 火紅的嫁衣襯著肌膚如雪螺捐。 梳的紋絲不亂的頭發(fā)上,一...
    開(kāi)封第一講書(shū)人閱讀 51,598評(píng)論 1 305
  • 那天矮燎,我揣著相機(jī)與錄音定血,去河邊找鬼。 笑死诞外,一個(gè)胖子當(dāng)著我的面吹牛澜沟,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播峡谊,決...
    沈念sama閱讀 40,338評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼茫虽,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了既们?” 一聲冷哼從身側(cè)響起濒析,我...
    開(kāi)封第一講書(shū)人閱讀 39,249評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎啥纸,沒(méi)想到半個(gè)月后号杏,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,696評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡斯棒,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,888評(píng)論 3 336
  • 正文 我和宋清朗相戀三年盾致,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了主经。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 40,013評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡绰上,死狀恐怖旨怠,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情蜈块,我是刑警寧澤鉴腻,帶...
    沈念sama閱讀 35,731評(píng)論 5 346
  • 正文 年R本政府宣布,位于F島的核電站百揭,受9級(jí)特大地震影響爽哎,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜器一,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,348評(píng)論 3 330
  • 文/蒙蒙 一课锌、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧祈秕,春花似錦渺贤、人聲如沸。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 31,929評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至方仿,卻和暖如春固棚,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背仙蚜。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 33,048評(píng)論 1 270
  • 我被黑心中介騙來(lái)泰國(guó)打工此洲, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人委粉。 一個(gè)月前我還...
    沈念sama閱讀 48,203評(píng)論 3 370
  • 正文 我出身青樓呜师,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親艳丛。 傳聞我的和親對(duì)象是個(gè)殘疾皇子匣掸,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,960評(píng)論 2 355

推薦閱讀更多精彩內(nèi)容

  • 1、通過(guò)CocoaPods安裝項(xiàng)目名稱(chēng)項(xiàng)目信息 AFNetworking網(wǎng)絡(luò)請(qǐng)求組件 FMDB本地?cái)?shù)據(jù)庫(kù)組件 SD...
    陽(yáng)明先生_X自主閱讀 15,981評(píng)論 3 119
  • 元旦回來(lái)連上10天班后氮双,終于有了休息時(shí)間~可我的休息時(shí)間總是和二姐相錯(cuò)碰酝,他們回靈石的當(dāng)天我需要返校~還好戴差,貔恘考完...
    minnameng閱讀 252評(píng)論 0 2
  • 001 不輕易許諾 不管諾言的大小,如果許諾就一定得做到袭厂,不能讓孩子覺(jué)得諾言是輕易可以放棄墨吓。 002 不說(shuō)挖苦的話...
    婷婷姐_2019閱讀 287評(píng)論 0 2
  • 曾為你留下一眼緣 卻不曾想換來(lái)一顆心 該來(lái)的總會(huì)來(lái) 該走的留不住 我們?cè)S諾彼此相依 留下一世的年華去回味 不知此...
    新小伊閱讀 264評(píng)論 1 1
  • 釋清風(fēng)閱讀 184評(píng)論 0 1