摘要:隨著社會(huì)的發(fā)展,二維碼技術(shù)作為一種全新的自動(dòng)實(shí)別技術(shù),被應(yīng)用于生活的各個(gè)方面。本文主要討論二維碼技術(shù)在物理隔絕的內(nèi)網(wǎng)和外網(wǎng)之間如何進(jìn)行數(shù)據(jù)傳輸。對(duì)于物理隔離的內(nèi)網(wǎng)和互聯(lián)網(wǎng),對(duì)內(nèi)網(wǎng)中的信息通過(guò)二維碼技術(shù)和短信網(wǎng)關(guān)發(fā)送到指定移動(dòng)終端上的過(guò)程進(jìn)行了闡述,對(duì)系統(tǒng)的使用場(chǎng)景、設(shè)計(jì)和實(shí)現(xiàn)方法進(jìn)行了說(shuō)明。
關(guān)鍵詞:二維碼技術(shù);數(shù)據(jù)傳輸;短信網(wǎng)關(guān);即時(shí)提醒
中圖分類號(hào):TP322+.3 文獻(xiàn)標(biāo)識(shí)碼:A 文章編號(hào):1007-9599 (2012) 20-0000-02
1 引言
隨著社會(huì)的發(fā)展,二維碼技術(shù)作為一種全新的自動(dòng)實(shí)別技術(shù),被應(yīng)用于生活的各個(gè)方面。目前,二維碼技術(shù)在表單、安全保密、追蹤、證照、存貨盤點(diǎn)、資料備援等方面得到廣泛的應(yīng)用。針對(duì)二維碼的特點(diǎn),本文主要描述了如何將二維碼掃描技術(shù)應(yīng)用于物理隔絕的內(nèi)網(wǎng)和外網(wǎng)系統(tǒng)中,將內(nèi)網(wǎng)中的辦公提示信息通過(guò)二維碼技術(shù)和短信網(wǎng)關(guān)將指定的信息發(fā)送到用戶的移動(dòng)終端上。
2 二維碼技術(shù)簡(jiǎn)介
二維碼作為一種新的信息存儲(chǔ)和傳遞技術(shù),經(jīng)過(guò)多年的努力,在各個(gè)領(lǐng)域得到了廣泛的使用,它能夠在橫向和縱向兩個(gè)方位同時(shí)表達(dá)信息。一維條碼相比,它具有面積小、存儲(chǔ)信息量大、編碼范圍廣、容錯(cuò)能力強(qiáng)、譯碼可靠性高、成本低等優(yōu)點(diǎn)。
3 應(yīng)用背景
本應(yīng)用為某事業(yè)單位辦公系統(tǒng)的一部分,該應(yīng)用的網(wǎng)絡(luò)拓?fù)浣Y(jié)構(gòu)如圖1所示:
從在圖1中可以看出,該單位的辦公內(nèi)網(wǎng)和互聯(lián)網(wǎng)是物理隔離的,辦公內(nèi)網(wǎng)和互聯(lián)網(wǎng)的數(shù)據(jù)推送是通過(guò)網(wǎng)閘來(lái)進(jìn)行控制的,在實(shí)際的應(yīng)用上,數(shù)據(jù)推送并非實(shí)時(shí)開(kāi)啟。在內(nèi)網(wǎng)的辦公系統(tǒng)中,項(xiàng)目執(zhí)行過(guò)程中需要提示項(xiàng)目的負(fù)責(zé)人項(xiàng)目進(jìn)展情況,如:待辦事宜提醒、項(xiàng)目即將超限的黃牌提醒、項(xiàng)目已經(jīng)超限的紅牌提醒等。由于內(nèi)網(wǎng)中的業(yè)務(wù)系統(tǒng)不能夠連接互聯(lián)網(wǎng),這使得用短信進(jìn)行提示實(shí)現(xiàn)有一定的困難。
為了保證項(xiàng)目負(fù)責(zé)人能實(shí)時(shí)準(zhǔn)確的獲得提示信息,通過(guò)二維碼技術(shù),在內(nèi)容平臺(tái)上生成二維碼圖片,將需要發(fā)送的信息保存到二維碼中,通過(guò)二維碼掃描設(shè)備,使用計(jì)算機(jī)屏幕將信息讀取并保存到互聯(lián)網(wǎng)部署的系統(tǒng)中,通過(guò)SP提供的短信網(wǎng)關(guān),向項(xiàng)目負(fù)責(zé)人的移動(dòng)終端上發(fā)送短信息,起到提示的作用。
4 設(shè)計(jì)與實(shí)現(xiàn)
4.1 二維碼生成
在內(nèi)網(wǎng)辦公系統(tǒng)中生成二維碼的流程如圖2所示:
用戶登錄到內(nèi)網(wǎng)系統(tǒng),根據(jù)業(yè)務(wù)規(guī)則,獲取所需要的數(shù)據(jù),組合成字符串。將組合的字符串轉(zhuǎn)換為Unicode字符并生成二維碼圖片。在界面上,以列表的形式展示。
二維碼生成代碼如下所示:
1.轉(zhuǎn)化為Unicode字符
public static String toUnicode(String str) {
char[] arChar = str.toCharArray();
int iValue = 0;
String uStr = \"\";
for (int i = 0; i < arChar.length; i++) {
iValue = str.charAt(i);
if (iValue <= 256) {
uStr+=\"\\u00\"+ Integer.toHexString(iValue);
} else {uStr += \"\\u\" + Integer.toHexString(iValue);}}
return uStr;}
2.生成二維碼圖片
public static void create_image(String sms_info,String name)throws Exception{
try{
Qrcode testQrcode =new Qrcode();
testQrcode.setQrcodeErrorCorrect('M');
testQrcode.setQrcodeEncodeMode('B');
testQrcode.setQrcodeVersion(20);//20-40
String testString = sms_info;
testString = Cn2Un.toUnicode(testString);
byte[] d = testString.getBytes();
BufferedImage bi = new BufferedImage(200, 200, BufferedImage.TYPE_BYTE_BINARY);
Graphics2D g = bi.createGraphics();
g.setBackground(Color.WHITE);
g.clearRect(0, 0, 200, 200);//200-300
g.setColor(Color.BLACK);
// 限制最大字節(jié)數(shù)為120
if (d.length>0 d.length <10000){
boolean[][] s = testQrcode.calQrcode(d);
for (int i=0;i for (int j=0;j if (s[j][i]) {g.fillRect(j*2+3,i*2+3,2,2);}}}} g.dispose(); bi.flush(); File f = new File(\"D:\\QRCodeTest\\\"+name+\".jpg\"); if(!f.exists()){f.createNewFile();} //創(chuàng)建圖片 ImageIO.write(bi, \"jpg\", f); } catch (Exception e) {e.printStackTrace();}} 4.2 二維碼信息提取 在互聯(lián)網(wǎng)系統(tǒng)中,讀取二維碼信息的流程如圖3所示,通過(guò)掃描槍通過(guò)顯示器屏幕掃描在內(nèi)網(wǎng)中生成的二維碼圖片,將讀取的二維碼信息由Unicode信息轉(zhuǎn)化為漢字,并進(jìn)行拆分,保存到數(shù)據(jù)庫(kù)中。 二維碼讀取的代碼如下所示 public void readCode(String scode) throws Exception { String message=Cn2Un.toChinese(scode); if(!message.contains(\";\")){ String [] arr=message.split(\",\"); Project pro=new Project(); if(!arr[0].equals(\"0\")){pro.setName(arr[0]);}if(!arr[1].equals(\"0\")){pro.setProjectName(arr[1]);} if(!arr[2].equals(\"0\")){…………} ………… if(!arr[8].equals(\"0\")){ pro.setStep(arr[8]);} pro.setIssend(\"2\"); pro.setSmtime(new Date()); pro.setDetails(\"\"); projectDao.saveObject(pro);}} 4.3 即時(shí)短信發(fā)送 即是短信發(fā)送流程如圖4所示 在項(xiàng)目列表中,可以對(duì)項(xiàng)目信息進(jìn)行單條或批量發(fā)送,根據(jù)即時(shí)短信提醒數(shù)據(jù)庫(kù)中人員信息進(jìn)行數(shù)據(jù)匹配。己發(fā)送信息不顯示在項(xiàng)目列表中,顯示在己發(fā)送短信列表中。顯示短信發(fā)送報(bào)告,即該短信負(fù)責(zé)人是否收到。 結(jié)束語(yǔ) 本文闡述了二維碼掃描技術(shù)的一種使用場(chǎng)景,即物理隔絕的內(nèi)網(wǎng)和互聯(lián)網(wǎng)之間的數(shù)據(jù)傳輸方式和方法。解決了通過(guò)短信網(wǎng)關(guān)進(jìn)行即時(shí)短信發(fā)送的問(wèn)題,對(duì)數(shù)據(jù)量不大的數(shù)據(jù)傳輸方式,提供了一種解決方法。 參考文獻(xiàn): [1]阮李英.如何應(yīng)用二維碼[J].中國(guó)質(zhì)量技術(shù)監(jiān)督,2009(05). [2]蘇景玲.二維條碼國(guó)家標(biāo)準(zhǔn)《漢信碼》發(fā)布[J].中國(guó)品牌與防偽,2007(11). [作者簡(jiǎn)介]張海建(1978-),男,北京市,講師,碩士,從事數(shù)據(jù)庫(kù)系統(tǒng)設(shè)計(jì)、應(yīng)用軟件開(kāi)發(fā)的研究。孫丹(1978-),女,北京市,講師,碩士,從事web設(shè)計(jì)標(biāo)準(zhǔn)、應(yīng)用軟件開(kāi)發(fā)的研究。