1。先搞清楚要在哪種類型的程序中調(diào)用掃描儀

創(chuàng)新互聯(lián)于2013年成立,是專業(yè)互聯(lián)網(wǎng)技術(shù)服務(wù)公司,擁有項目成都做網(wǎng)站、成都網(wǎng)站制作網(wǎng)站策劃,項目實施與項目整合能力。我們以讓每一個夢想脫穎而出為使命,1280元南樂做網(wǎng)站,已為上家服務(wù),為南樂各地企業(yè)和個人服務(wù),聯(lián)系電話:18982081108
如果開發(fā)的程序是java application或者基于 swing的程序,可以算作是單機(jī)或者 c/s架構(gòu)的程序,applet和java fx技術(shù)也可以這么算,因為都是直接通過java程序去操控掃描儀設(shè)備。
如果是基于瀏覽器的應(yīng)用,即b/s架構(gòu)的程序,掃描圖像的工作是在客戶端完成的,這種情況下Java程序其實是接收和保存掃描儀讀取的圖像結(jié)果,并不需要直接的控制掃描儀工作,這一點上和c/s架構(gòu)的程序有本質(zhì)的區(qū)別。
2。架構(gòu)與技術(shù)應(yīng)用
2.1 c/s架構(gòu)程序的掃描儀調(diào)用
c/s架構(gòu)需要通過java代碼直接操控掃描儀設(shè)備,java語言本身被設(shè)計為跨o/s平臺,對特定平臺的硬件操控能力有限,因此需要借助外部技術(shù)實現(xiàn)掃描儀控制調(diào)用,可以通過jni(java原生應(yīng)用程序接口) 技術(shù)去實現(xiàn)掃描儀調(diào)用,具體的細(xì)節(jié)實現(xiàn)就是jni中定義掃描儀操作方法,如scan()等方法,然后使用javah生成c語言的.h頭文件,然后使用vc等編程語言去實現(xiàn)jni接口方法。
在windows平臺和mac平臺上面,操作掃描儀都可以通過twain協(xié)議
總之c/s架構(gòu)的java程序調(diào)用掃描儀通過jni+twain編程既可完成。
2.2 b/s架構(gòu)程序的掃描儀調(diào)用
b/s架構(gòu)的掃描儀調(diào)用在前面已經(jīng)提到過,java程序?qū)崿F(xiàn)上做的事情是接收掃描結(jié)果圖像數(shù)據(jù) ,例如在struts2的 action中或者jsp/servlet等等程序中接收掃描儀圖像掃描結(jié)果,真實的客戶端掃描儀調(diào)用應(yīng)該借助客戶端技術(shù)去實現(xiàn)。
在Linux中的Mozilla瀏覽器中如何調(diào)用掃描儀掃描圖像呢?這個著實是個難題,需要做Mozilla的插件才可以,但是在windows平臺有ActiveX技術(shù)供程序員使用,因此瀏覽器是在windows平臺中的話借助Activex技術(shù)即可擴(kuò)展瀏覽器能力。
點擊設(shè)置面板(Ctrl+alt+S),選擇“Paths”,在classpath標(biāo)簽項中將你在global libraries中創(chuàng)建的項選中就可以啦。在Global Libraries創(chuàng)建的項如果不被選擇,是不會添加到項目中的。
1.得到局域網(wǎng)網(wǎng)段,可由自己機(jī)器的IP來確定 (也可以手動獲取主機(jī)IP-CMD-ipconfig /all)
2.根據(jù)IP類型,一次遍歷局域網(wǎng)內(nèi)IP地址
JAVA類,編譯之后直接運行便可以得到局域網(wǎng)內(nèi)所有IP,具體怎樣使用你自己編寫相應(yīng)代碼調(diào)用便可
代碼如下::
package bean;
import java.io.*;
import java.util.*;
public class Ip{
static public HashMap ping; //ping 后的結(jié)果集
public HashMap getPing(){ //用來得到ping后的結(jié)果集
return ping;
}
//當(dāng)前線程的數(shù)量, 防止過多線程摧毀電腦
static int threadCount = 0;
public Ip() {
ping = new HashMap();
}
public void Ping(String ip) throws Exception{
//最多30個線程
while(threadCount30)
Thread.sleep(50);
threadCount +=1;
PingIp p = new PingIp(ip);
p.start();
}
public void PingAll() throws Exception{
//首先得到本機(jī)的IP,得到網(wǎng)段
InetAddress host = InetAddress.getLocalHost();
String hostAddress = host.getHostAddress();
int k=0;
k=hostAddress.lastIndexOf(“.”);
String ss = hostAddress.substring(0,k+1);
for(int i=1;i =255;i++){ //對所有局域網(wǎng)Ip
String iip=ss+i;
Ping(iip);
}
//等著所有Ping結(jié)束
while(threadCount0)
Thread.sleep(50);
}
public static void main(String[] args) throws Exception{
Ip ip= new Ip();
ip.PingAll();
java.util.Set entries = ping.entrySet();
Iterator iter=entries.iterator();
String k;
while(iter.hasNext()){
Map.Entry entry=(Map.Entry)iter.next();
String key=(String)entry.getKey();
String value=(String)entry.getValue();
if(value.equals(“true”))
System.out.println(key+“--”+value);
}
}
class PingIp extends Thread{
public String ip; // IP
public PingIp(String ip){
this.ip=ip;
}
public void run(){
try{
Process p= Runtime.getRuntime()。exec (“ping ”+ip+ “ -w 300 -n 1”);
InputStreamReader ir = new InputStreamReader(p.getInputStream());
LineNumberReader input = new LineNumberReader (ir);
//讀取結(jié)果行
for (int i=1 ; i 7; i++)
input.readLine();
String line= input.readLine();
if (line.length() 17 || line.substring(8,17)。equals(“timed out”))
ping.put(ip,“false”);
else
ping.put(ip,“true”);
//線程結(jié)束
threadCount -= 1;
}catch (IOException e){}
}
}
}
準(zhǔn)備好環(huán)境,比如安裝好Eclipse,IDEA等你喜歡的集成開發(fā)環(huán)境
準(zhǔn)備好Maven環(huán)境
創(chuàng)建一個項目,把你要研究的開源項目pom引入進(jìn)來
使用maven把源代碼下載下來
寫一個簡單的例子使用開源代碼
分析從啟動開始,斷點調(diào)試,看看調(diào)用了哪些方法,每個方法是怎么實現(xiàn)的
所有方法都斷點了一遍,你在這個過程中實際上已經(jīng)了解了開源代碼是怎么實現(xiàn)具體功能的了
網(wǎng)頁標(biāo)題:java開源代碼掃描,源碼掃描工具代碼
地址分享:http://chinadenli.net/article6/hsjgig.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供商城網(wǎng)站、網(wǎng)站維護(hù)、全網(wǎng)營銷推廣、App開發(fā)、網(wǎng)站建設(shè)、ChatGPT
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)