1.導(dǎo)入支持java串口通信的jar包:
成都創(chuàng)新互聯(lián)公司是一家業(yè)務(wù)范圍包括IDC托管業(yè)務(wù),虛擬主機、主機租用、主機托管,四川、重慶、廣東電信服務(wù)器租用,西云機房,成都網(wǎng)通服務(wù)器托管,成都服務(wù)器租用,業(yè)務(wù)范圍遍及中國大陸、港澳臺以及歐美等多個國家及地區(qū)的互聯(lián)網(wǎng)數(shù)據(jù)服務(wù)公司。
在maven項目的pom.xml中添加RXTXcomm的依賴 或者 下載RXTXcomm.jar并導(dǎo)入到項目中。
支持Java串口通信操作的jar包,java.comm比較老,而且不支持64位系統(tǒng),推薦使用Rxtx這個jar包(32位/64位均支持)。
注意:運行過程中拋出 java.lang.UnsatisfiedLinkError 錯誤或 gnu.io 下的類找不到時,將rxtx解壓包中的 rxtxParallel.dll,rxtxSerial.dll 這兩個文件復(fù)制到 C:\Windows\System32 目錄下可解決該錯誤。
2.編寫代碼操作串口:
串口必要參數(shù)類:包含連接串口所必須的參數(shù),方便在調(diào)用串口時設(shè)置和傳遞串口參數(shù)。
CommPortIdentifier serialPortId = CommPortIdentifier.getPortIdentifier(“COM2”);
SerialPort port = (SerialPort) serialPortId.open(“Read”, 30); //打開COM2串口,其中30是打開串口的超時時間
port.setSerialPortParams(1200, 8, 1, 0); //設(shè)置COM2的波特率,數(shù)據(jù)位,停止位,校驗方式
//從串口中得到輸入輸出流了
OutputStream out = port.getOutputStream();
out .write(buffer);
out .flush();
InputStream in = port.getInputStream();
in.read(data); //data是一個byte[]
java沒有自帶的COM工具
需要導(dǎo)入外來的包來做
建議使用RXTX
具體可以自己baidu下
public static void process() {
try {
Enumeration portList = CommPortIdentifier.getPortIdentifiers();
while (portList.hasMoreElements())
{
CommPortIdentifier portId = (CommPortIdentifier) portList.nextElement();
if (portId.getPortType() == CommPortIdentifier.PORT_SERIAL)//如果端口類型是串口則判斷名稱
{
if(portId.getName().equals("COM1")){//如果是COM1端口則退出循環(huán)
break;
}else{
portId=null;
}
}
}
SerialPort serialPort = (SerialPort)portId.open("Serial_Communication", 1000);//打開串口的超時時間為1000ms
serialPort.setSerialPortParams(9600,SerialPort.DATABITS_8,SerialPort.STOPBITS_1,SerialPort.PARITY_NONE);//設(shè)置串口速率為9600,數(shù)據(jù)位8位,停止位1們,奇偶校驗無
InputStream in = serialPort.getInputStream();//得到輸入流
OutputStream out = serialPort.getOutputStream();//得到輸出流
//進(jìn)行輸入輸出操作
//操作結(jié)束后
in.close();
out.close();
serialPort.close();//關(guān)閉串口
} catch (PortInUseException e) {
e.printStackTrace();
} catch (UnsupportedCommOperationException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
串口本來是單向的,所以,讀的時候肯定寫不了(相反亦然)、一個程序(線程)寫了別的肯定寫不了。
所以,一個線程讀、另一線程寫。通過事件通知上層。 你懂。
讀取IC讀卡器分很多種,有種最簡單的是直接連電腦,使用串口助手軟件,選定特定的波特率,就可以接收IC卡號(有些是像RFIC的就需要對其解碼)
上面問題解決后,重點的是java如何做一個串口助手,眾所周知,java是運行在虛擬機上,也就是要運行在window的一個進(jìn)程上,如果要java讀寫串口的話,肯定需要對它進(jìn)行驅(qū)動編寫,而不僅僅是加載個jar包就能解決的。
幸運的是SUN公司已經(jīng)幫我們解決了這個問題,你可以到sun公司網(wǎng)站上下載javacomm20-win32.zip的壓縮包,里面就包含了串口的驅(qū)動(.dll文件)以及對應(yīng)的jar包,下載后把.dll文件放到你JDK路徑/bin,通過jar包提供的api你就可以操作串口相關(guān)的接口了。這里一遍關(guān)于java串口使用的文章,希望能提供給您:
本文標(biāo)題:java串口讀寫代碼,串口讀命令代碼
文章位置:http://www.muchs.cn/article28/hssecp.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供定制網(wǎng)站、搜索引擎優(yōu)化、自適應(yīng)網(wǎng)站、關(guān)鍵詞優(yōu)化、虛擬主機、微信小程序
聲明:本網(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)