諾塔斯L9-E-POE智能卡讀寫器全兼容瀏覽器支持HTTPS協議
- 2020-04-28 13:31:00
- 諾塔斯智能科技 原創
- 3672
自從諾塔斯智能科技發布L6-E智能卡讀寫器以來,我們在用戶反饋的功能需求中,了解到客戶在web瀏覽器上對智能卡讀寫器進行二次開發需要支持https協議,首先我們來回顧一下L6-E智能卡讀寫器功能,它是一款支持TCP/IP通信可以通過USB接口進行自定義IP地址,內置了websocket組件的智能卡讀寫器。隨著越來越多的web應用比較重視安全性,大多數web應用已經升級到https協議了。因此,我們需要將內置的websocket組件功能進行升級,從而更好的配合客戶在web瀏覽器應用。
首先,我們來了解一下,什么是WebSocket協議,它是html5的一種通信協議,該協議兼容我們常用的瀏覽器。例如Chrome、 Firefox、IE等。它可以使客戶端和服務端雙向數據傳輸更加簡單快捷,并且在TCP連接進行一次握手后,就可以持久性連接,同時允許服務端對客戶端推送數據。外加傳統模式的協議一般HTTP請求可能會包含較長的頭部,但真正有效的可能只有小部分,從而就占用了很多資源和帶寬。因此WebSocket協議不僅可以實時通訊,支持擴展;也可以壓縮節省服務器資源和帶寬。 WS協議和WSS協議兩個均是WebSocket協議的SCHEM,兩者一個是非安全的,一個是安全的。也是統一的資源標志符。就好比HTTP協議和HTTPS協議的差別。非安全的沒有證書,安全的需要SSL證書。(SSL是Netscape所研發,用來保障網絡中數據傳輸的安全性,主要是運用數據加密的技術,能夠避免數據在傳輸過程被不被竊取或者監聽。)其中WSS表示在TLS之上的WebSocket。WS一般默認是80端口,而WSS默認是443端口,大多數網站用的就是80和433端口。WS和WSS的體現形式分別是TCP+WS AS WS ,TCP+TLS+WS AS WS。服務器網址就是 URL。最后再說下WebSocket協議的特點:建立在 TCP 協議之上,服務端實現容易;與 HTTP 協議有良好的兼容性,握手時不容易被屏蔽,可以通過各種 HTTP 代理服務器;數據輕量,實時通訊;可以發送文本和二進制數據。不限制同源,客戶端可以與任意服務器端進行通訊。因此WebSocket協議的出現,為很多人解決了關于擴展以及兼容性協議的煩惱問題。
說一千道一萬,目的就是解決瀏覽器兼容問題。于是,諾塔斯L9-E-POE智能卡讀寫器一款瀏覽器全兼容智能卡讀寫器誕生了。它滿足了智能卡讀寫器二次開發支持https協議 客戶的需求,采用標準POE交換機供電,無需其它外部供電設備,從而有效的解決了既要部署網絡傳輸線纜,又要額外增加電源適配器的麻煩。設備可以自定義IP地址,區別于傳統智能卡讀寫器通過USB、RS232等接口通信,不會受到上位機硬件接口數量限制,用戶可以根據自己需求靈活的進行網絡擴展。
諾塔斯L9-E-POE智能卡讀寫器配置如下:
電氣特征
外殼尺寸 |
105 mm (長) x 70 mm (寬) x 12.8 mm (高) |
||
產品重量 |
80.0 g |
||
硬件接口 |
RJ45標準網絡接口 |
||
通訊協議 |
TCP/IP、UDP |
||
讀卡距離 |
50mm—70mm(視標簽類型和尺寸而定) |
||
工作電壓 |
額定電壓 5V USB供電 、可定制內置鋰電池或POE供電 |
||
工作電流 |
200 mA (工作); 50 mA (待機); 100 mA (常規) |
||
工作溫度 |
0-50°C |
||
工作頻率 |
13.56 MHz |
||
防沖突機制 |
內建防沖突特性(任何時候都只能訪問1張標簽) |
||
人機互動 |
雙色LED指示燈、蜂鳴器 |
||
與智能卡通信協議 |
ü ISO 14443-4 A和B類 非接觸式智能卡符合 PBOC2.0 ü Mifare 系列 ü NFC (ISO/IEC 18092)標簽 |
||
操作系統 |
? Win98, Win ME, Win NT 4.0, Win 2000, Win 2003, Win 2003 R2, Win XP, Win Vista, Win 2008, Win 7, Win 8 ,Win10等 ? Win 2003 x64, Win 2003 R2 x64, Win XP x64, Win Vista x64, Win 2008 x64, Win 2008 R2 x64, Win 7 x64, Win 8 x 64, Win 2012 x64 ? Win CE 5.0 and 6.0 ? Linux? ? Android? 3.1 及以上版本 ? STM32、ARM等單片機系統等 |
||
開發語言 |
ü VB、VB6、 PB9、doNet ü VC、C++、C# ü Dephi、JAVA 、JavaScript、QT ü Android開發語言、Linux開發語言等 |
||
支持瀏覽器 |
谷歌Chrome瀏覽器、IE瀏覽器、360瀏覽器、QQ瀏覽器、搜狗瀏覽器、火狐瀏覽器、遨游瀏覽器、Opera瀏覽器、Safari瀏覽器等,此處不一一列舉。 |
||
典型應用 |
電子錢包 |
會員支付 |
積分系統 |
身份驗證 |
智能海報 |
自動售貨機 |
|
智慧醫療 |
充電樁計費 |
智能收費 |
諾塔斯L9-E-POE智能卡讀寫器瀏覽器開發部分范例代碼
function ConnectServer(){ var protocolStr = document.location.protocol; document.getElementById('log').innerHTML = '<li><b>'+ protocolStr +'</b></li>' + document.getElementById('log').innerHTML; try { nCommandIndex = 0; strIp = document.getElementById('strLotusCardDeviceIp').value; strPort = document.getElementById('strLotusCardDevicePort').value; if(protocolStr == "https:") { wsUrl = 'wss://'+ strIp +':'+ strPort; } else { wsUrl = 'ws://'+ strIp +':'+ strPort; } socket = new WebSocket(wsUrl); } catch (evt) { document.getElementById('log').innerHTML = '<li><b>'+getNowFormatDate()+'#new WebSocket error:'+ evt.data+'</b></li>' + document.getElementById('log').innerHTML; socket = null; if (typeof(connCb) != "undefined" && connCb != null) connCb("-1", "connect error!"); return; } socket.onopen = function () { document.getElementById('log').innerHTML = '<li><b>'+getNowFormatDate()+'#連接服務器成功</b></li>' + document.getElementById('log').innerHTML; document.getElementById('status').innerHTML = 'Socket Open'; document.getElementById('status').className = 'online'; }; socket.onclose = function(event) { document.getElementById('log').innerHTML = '<li><b>'+getNowFormatDate()+'#斷開連接:' + event.wasClean + '</b></li>' + document.getElementById('log').innerHTML; document.getElementById('status').innerHTML = 'Socket Closed'; document.getElementById('status').className = 'offline'; };
<table width="100%"> <tr style="width:100px; height:40px;"> <td> 讀卡器IP: </td> <td> <input type="text" value="wss.lotussmart.cc" id="strLotusCardDeviceIp" style="width:150px; height:30px;" /> </td> </tr> <tr style="width:100px; height:40px;"> <td> 讀卡器PORT: </td> <td> <input type="text" value="31213" id="strLotusCardDevicePort" style="width:150px; height:30px;" /> </td> </tr> <tr style="width:100px; height:40px;"> <td> 狀態 </td> <td> <p id="status"></p> </td> </tr> <tr style="width:100px; height:40px;"> <td colspan="2"> <h3>通信函數:1、連接服務器 2、執行字符串函數并解析結果 3、斷開連接</h3> </td> </tr> <tr style="width:100px; height:40px;"> <td> 連接服務器: </td> <td> <INPUT id = "ConnectServer" type=button value="ConnectServer" onclick="javascript:ConnectServer();" style="width:150px; height:30px;"/> </td> </tr> <tr style="width:100px; height:40px;"> <td> 關閉連接: </td> <td> <INPUT id = "CloseConnection" type=button value="CloseConnection" onclick="javascript:socket.close();" style="width:150px; height:30px;"/> </td> </tr> <tr style="width:100px; height:40px;"> <td> 獲取連接狀態: </td> <td> <INPUT id = "ConnectionStatus" type=button value="ConnectionStatus" onclick="javascript:document.getElementById('log').innerHTML = '<li><b>#status:' + GetSocketStatus() + '</b></li>' + document.getElementById('log').innerHTML;" style="width:150px; height:30px;"/> </td> </tr> <tr style="width:100px; height:40px;"> <td> 獲取MCU序列號: </td> <td> <INPUT id = "OpenDevice" type=button value="GetMcuSerailNo" onclick="javascript:ExecStringCommand('GetMcuSerailNo')" style="width:150px; height:30px;"/> </td> </tr> <tr style="width:100px; height:40px;"> <td> 蜂鳴: </td> <td> <INPUT id = "Beep" type=button value="Beep" onclick="javascript:ExecStringCommand('Beep,10');" style="width:150px; height:30px;"/> </td> </tr> <tr style="width:100px; height:40px;"> <td> 獲取M1卡號: </td> <td> <INPUT id = "GetCardNo" type=button value="GetCardNo" onclick="javascript:ExecStringCommand('GetCardNo,38');" style="width:150px; height:30px;"/> </td> </tr> <tr style="width:100px; height:40px;"> <td> 裝載密碼: </td> <td> <INPUT id = "LoadKey" type=button value="LoadKey" onclick="javascript:ExecStringCommand('LoadKey,96,0,FFFFFFFFFFFF');" style="width:150px; height:30px;"/> </td> </tr> <tr style="width:100px; height:40px;"> <td> 驗證密碼: </td> <td> <INPUT id = "Authentication" type=button value="Authentication" onclick="javascript:ExecStringCommand('Authentication,96,0');" style="width:150px; height:30px;"/> </td> </tr> <tr style="width:100px; height:40px;"> <td> 讀數據扇區0塊1: </td> <td> <INPUT id = "M1Read" type=button value="M1Read" onclick="javascript:ExecStringCommand('Read,1');" style="width:150px; height:30px;"/> </td> </tr> <tr style="width:100px; height:40px;"> <td> 寫數據扇區0塊1: </td> <td> <INPUT id = "M1Write" type=button value="M1Write" onclick="javascript:ExecStringCommand('Write,1,0123456789abcdef0123456789abcdef');" style="width:150px; height:30px;"/> </td> </tr> <tr style="width:100px; height:40px;"> <td> 讀數據扇區0塊1: </td> <td> <INPUT id = "NtagRead" type=button value="NTAGRead" onclick="javascript:ExecStringCommand('Read,4');" style="width:150px; height:30px;"/> </td> </tr> <tr style="width:100px; height:40px;"> <td> 寫數據NTAG4PAGE: </td> <td> <INPUT id = "NtagWrite" type=button value="NtagWrite" onclick="javascript:ExecStringCommand('NtagWrite,4,012345678');" style="width:150px; height:30px;"/> </td> </tr> <tr style="width:100px; height:40px;"> <td> 中止M1卡片: </td> <td> <INPUT id = "M1Halt" type=button value="M1Halt" onclick="javascript:ExecStringCommand('Halt');" style="width:150px; height:30px;"/> </td> </tr> <tr style="width:100px; height:40px;"> <td> 清除日志: </td> <td> <INPUT id = "ClearLog" type=button value="ClearLog" onclick="javascript:document.getElementById('log').innerHTML = '';" style="width:150px; height:30px;"/> </td> </tr> <tr> <td colspan="2"> <h3>日志</h3> </td> </tr> <tr> <td colspan="2"> <ul id="log" style="overflow: auto; list-style: none; padding:0; background:#ffffff; font-size:small; border-style:solid; border-color:#c0c0c0"></ul> </td> </tr> </table>產品完整測試頁面請點擊這里,諾塔斯智能科技網絡版智能卡讀寫器LotusCard WEB Socket 演示頁面
聯系人: | 張經理 |
---|---|
電話: | 400-023-6659 |
傳真: | 023-68798110 |
Email: | 843718693@qq.com |
QQ: | 843718693 |
微信: | Lotus-Smart |
微博: | lotusreader |
旺旺: | 諾塔斯智能科技有限公司 |
地址: | 重慶市江北區宏帆路36號宏帆天地1棟6樓 |