資源描述:
《串口做成插件嵌入網(wǎng)頁(yè)》由會(huì)員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在行業(yè)資料-天天文庫(kù)。
1、串口做成Applet嵌入網(wǎng)頁(yè)的方法由于公司要在車間實(shí)現(xiàn)無(wú)圖化生產(chǎn),車間安裝觸摸屏進(jìn)行電子查圖。登陸界面想通過(guò)讀卡器直接讀卡號(hào),讀卡器通過(guò)串口通信,所以要用到串口的讀取。另外由于公司內(nèi)網(wǎng)還是很老的asp網(wǎng)頁(yè),要嵌入網(wǎng)頁(yè)只能通過(guò)插件,于是用java來(lái)做的話只能通過(guò)B/S模式的Applet來(lái)實(shí)現(xiàn)。如果網(wǎng)站是java環(huán)境,建議還是用serverlet來(lái)做,或者SSH等。第一步,用java實(shí)現(xiàn)讀串口:這里用到j(luò)ava的Comm.jar包,這是一個(gè)標(biāo)準(zhǔn)包的擴(kuò)展。將Comm.jar下載下來(lái)后win32com.dll文件放到j(luò)re的b
2、in下面,系統(tǒng)的System32下面(之所以放到System32下面是應(yīng)為為了Applet能調(diào)用);javax.comm.properties文件放到j(luò)re的lib下面;comm.jar文件放到j(luò)re的libext下面Comm.jar的類簡(jiǎn)介首先,簡(jiǎn)述一下Comm.jar包的關(guān)鍵類:Comm.jar包的類分三層,頂層,底層和驅(qū)動(dòng)層。頂層用來(lái)管理端口或所有端口的抽象類,屬于不和具體物理對(duì)象掛鉤的一類。比如:CommPortIdentifier,CommPort。底層實(shí)現(xiàn)了實(shí)際物理端口,比如:SerialPort,Par
3、allelPortComm.jar讀串口的實(shí)現(xiàn)然后,講解下具體的使用方式,這是重點(diǎn):1、應(yīng)用CommPortIdentifier類獲得所有的串口數(shù)據(jù),這里CommPortIdentifier將與驅(qū)動(dòng)通信,得到所有可用端口。程序中直接調(diào)用靜態(tài)方法getPortIdentifiers()。將返回一個(gè)枚舉對(duì)象。2、應(yīng)用CommPortIdentifier對(duì)象,打開(kāi)一個(gè)端口。程序中用open方法,返回CommPort對(duì)象或者其子類對(duì)象(比如SerialPort,ParallelPort)3、通過(guò)底層的SerialPort,Pa
4、rallelPort類設(shè)置相應(yīng)的參數(shù),程序中應(yīng)用setSerialPortParams方法。該方法中有4各參數(shù),分別是波特率,數(shù)據(jù)位,停止位,奇偶檢驗(yàn)。4、設(shè)置事件監(jiān)聽(tīng),先介紹下這里的事件監(jiān)聽(tīng)。監(jiān)聽(tīng)需要一個(gè)listener對(duì)象來(lái)進(jìn)行監(jiān)聽(tīng)(屬于EventListener類,擁有相關(guān)的底層子類,如SerialPortEventListener),通過(guò)實(shí)現(xiàn)抽象方法serialEvent(SerialPortEventev)來(lái)經(jīng)行監(jiān)聽(tīng)。該類中自帶了很多事件,如這里要用到的DATA_AVAILABLE事件。另外,每個(gè)串口只允許一
5、個(gè)listener。serialEvent的調(diào)用,該方法是通過(guò)notifyOnxxx方法進(jìn)行自動(dòng)調(diào)用的。比如notifyOnDataAvailable(BooleanisAvaliable)。最后事件監(jiān)聽(tīng)過(guò)程需要屬于listener對(duì)象的一個(gè)線程的支持。按照以上所述寫(xiě)程序即可。5、數(shù)據(jù)的讀出,需要用到SerialPort,ParallelPort類中的getInputStream方法得到輸入流。值得注意的是,port打開(kāi)后,直到關(guān)閉前getInputStream方法將返回同一個(gè)輸入流對(duì)象。第二步,實(shí)現(xiàn)Applet(難點(diǎn)
6、所在)Applet簡(jiǎn)介先介紹下Applet。Applet有五個(gè)函數(shù):publicvoidinit(){},publicvoidstart(){},publicvoidstop(){},publicvoiddestroy(){},publicvoidrun(){},publicvoidpaint(Graphicsg){}。第一次打開(kāi)網(wǎng)頁(yè)的時(shí)候,將自動(dòng)調(diào)用init()方法(init可做一些初始化操作),init()調(diào)用后將自動(dòng)調(diào)用start()方法和paint(Graphicsg)方法,刷新時(shí)也將自動(dòng)重新調(diào)用paint()
7、方法,當(dāng)最小化等不顯示Applet時(shí),將自動(dòng)調(diào)用stop()方法。當(dāng)關(guān)閉網(wǎng)頁(yè)時(shí)將調(diào)用destroy()方法,該方法將自動(dòng)調(diào)用stop()方法。要連續(xù)進(jìn)行Applet的操作,需要有線程的支持。通過(guò)安全監(jiān)測(cè)寫(xiě)完Applet后,接下來(lái)就是將Applet嵌入網(wǎng)頁(yè)(難點(diǎn)所在)。由于是B/S模式,所以安全性是被首先考慮的,因此要想辦法通過(guò)安全檢測(cè)。這里用到數(shù)字簽名的方法。將相應(yīng)的程序打包成jar包后,在當(dāng)前目錄下通過(guò)cmd運(yùn)行以下語(yǔ)句keytool-genkey-dname"cn=BeanSoftStudio,ou=JavaSof
8、tware,o=BeanSoftStudio,c=China"-aliasbeansoft-keypassbeansoft-storepassbeansoft-validity365-keystore.beansoft其中-alias是指定數(shù)字簽名名稱的命令,-keypass是設(shè)定密碼的命令,-storepass是設(shè)置store