Java Html嵌入applet 來讀取客戶端串口

寫在前面,之前沒搞過html嵌入applet來讀取本地客戶端串口,就直接使用RXTXcom.jar  來直接讀取本機串口,這個是沒問題的如下:

RXTX 有三個文件  有針對操作系統64 還有32的
1.RXTXcomm.jar  導入項目中
2.rxtxParallel.dll/rxtxSerial.dll兩個dll放到jdk\jre\bin目錄下。
防止運行過程中拋出 java.lang.UnsatisfiedLinkError 錯誤或 gnu.io 下的類找不到,請將rxtx解壓包中的 rxtxParallel.dll,rxtxSerial.dll 這兩個文件複製到 C:\Windows\System32 目錄下即可解決該錯誤。

可以通過html調用java類來操作,直到有一次把服務端部署到另外一臺設備上,在本地打開頁面時發現不能讀 。。。

欠考慮

html 可以通過嵌入applet來調用客戶端的串口。

首先自己可以寫一個applet類,如下:

public class HelloWorld extends JApplet  {

 public void paint(Graphics g) {
             g.drawString("Hello Applet!", 5, 30);//繪製文本
             g.drawArc(80,50,40,40,20,360);//繪製一個圓形
        }

}

html頁面寫

 <applet name="helloWorld"  code="HelloWorld.class" codebase="."  width="500" height="300">
    </applet>

code:是你的類所在的位置:包名+類

codebase=“.” 這種寫法就是 該類和html是在一個路徑下如果不在一起這寫你的類所放置的位置。

你可以把他們放到tomcat的ROOT目錄下運行後,是這樣子的。

你可以創建一個工程 ,直接運行該applet類,首先要保證該applet類是能運行的。

好了說重點了,網上都是說沒問題,但是怎麼配置都不暴露。

首先博主使用的jdk1.8 64位安裝版,安裝後需要到控制面板中找到Java 然後在安全裏面把訪問地址:如http://localhost:8080加入到例外站點。如圖

博主使用的是chrome瀏覽器,注意 chrome瀏覽器的版本在大於42之後就不在支持applet了。所以要下載chrome42瀏覽器。網上有,就不在公佈連接了。

chrome瀏覽器還要設置NPAPI插件 開啓

地址欄輸入:

chrome://flags/#enable-npapi

設置後是

然後 在安裝java8目錄下找到 安裝的jre 找到C:\Program Files\Java\jre1.8.0_221\lib\security  java.policy

在grant中加入 permission java.security.AllPermission;

到此 你打開你的html頁面時 你應該就能看到該applet 圖形了。

-----------------------------------------------------分割線------------------------------------------------------------、

jar的調用  首先把你的類打成jar包,博主使用的是myeclipse  可以直接右鍵導出時選擇jar

如你設置證書、簽名則使用如下步驟:cmd進入你的jdk安裝目錄 的jdk的bin目錄下

1使用keytool工具生成密匙庫 :

\jdk1.7.0_13\bin>keytool -genkey -keystore ScaleApplet.store -alias sa


2使用keytool工具導出簽名時用到的證書 :
\jdk1.7.0_13\bin>keytool -export -keystore RXTXSerial.store -alias sa -file RXTXSerial.cert
輸入密鑰庫口令:
存儲在文件 <RXTXSerial.cert> 中的證書


3使用jarsigner工具簽名jar壓縮文檔
\jdk1.7.0_13\bin>jarsigner -keystore RXTXSerial.store RXTXSerial.jar sa
輸入密鑰庫的密碼短語:

警告:
簽名者證書將在六個月內過期。

jar包處理完畢後可以把該jar放到你的工程webroot文件夾下

頁面調用是這樣的:

<script type="text/javascript">
function getCard(){
 var weight = document.helloWorld.getCardNo();//獲取applet類裏面的方法
        if(weight!=null&&weight!=''){
            document.getElementById("weightSpan").innerHTML=weight;
        }
}
</script>
  </head>
  <body >
    <applet name="helloWorld"  code="rxtx.RXTXSerial.class" codebase="./rxtx/" 
         ARCHIVE="RXTXSerial.jar,RXTXcomm.jar" width="500" height="300">
    </applet>
    <span id="weightSpan"></span>
    <button οnclick="getCard();">讀卡</button>
  </body>
</html>

至此Html頁面調用applet流程完畢。本文是博主自己實測有效的流程,如對您有幫助,您可參考,無幫助勿噴。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章