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