1.導(dǎo)入支持java串口通信的jar包:
成都創(chuàng)新互聯(lián)公司是一家業(yè)務(wù)范圍包括IDC托管業(yè)務(wù),虛擬主機(jī)、主機(jī)租用、主機(jī)托管,四川、重慶、廣東電信服務(wù)器租用,西云機(jī)房,成都網(wǎng)通服務(wù)器托管,成都服務(wù)器租用,業(yè)務(wù)范圍遍及中國大陸、港澳臺(tái)以及歐美等多個(gè)國家及地區(qū)的互聯(lián)網(wǎng)數(shù)據(jù)服務(wù)公司。
在maven項(xiàng)目的pom.xml中添加RXTXcomm的依賴 或者 下載RXTXcomm.jar并導(dǎo)入到項(xiàng)目中。
支持Java串口通信操作的jar包,java.comm比較老,而且不支持64位系統(tǒng),推薦使用Rxtx這個(gè)jar包(32位/64位均支持)。
注意:運(yùn)行過程中拋出 java.lang.UnsatisfiedLinkError 錯(cuò)誤或 gnu.io 下的類找不到時(shí),將rxtx解壓包中的 rxtxParallel.dll,rxtxSerial.dll 這兩個(gè)文件復(fù)制到 C:\Windows\System32 目錄下可解決該錯(cuò)誤。
2.編寫代碼操作串口:
串口必要參數(shù)類:包含連接串口所必須的參數(shù),方便在調(diào)用串口時(shí)設(shè)置和傳遞串口參數(shù)。
CommPortIdentifier serialPortId = CommPortIdentifier.getPortIdentifier(“COM2”);
SerialPort port = (SerialPort) serialPortId.open(“Read”, 30); //打開COM2串口,其中30是打開串口的超時(shí)時(shí)間
port.setSerialPortParams(1200, 8, 1, 0); //設(shè)置COM2的波特率,數(shù)據(jù)位,停止位,校驗(yàn)方式
//從串口中得到輸入輸出流了
OutputStream out = port.getOutputStream();
out .write(buffer);
out .flush();
InputStream in = port.getInputStream();
in.read(data); //data是一個(gè)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);//打開串口的超時(shí)時(shí)間為1000ms
serialPort.setSerialPortParams(9600,SerialPort.DATABITS_8,SerialPort.STOPBITS_1,SerialPort.PARITY_NONE);//設(shè)置串口速率為9600,數(shù)據(jù)位8位,停止位1們,奇偶校驗(yàn)無
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();
}
}
串口本來是單向的,所以,讀的時(shí)候肯定寫不了(相反亦然)、一個(gè)程序(線程)寫了別的肯定寫不了。
所以,一個(gè)線程讀、另一線程寫。通過事件通知上層。 你懂。
讀取IC讀卡器分很多種,有種最簡單的是直接連電腦,使用串口助手軟件,選定特定的波特率,就可以接收IC卡號(hào)(有些是像RFIC的就需要對其解碼)
上面問題解決后,重點(diǎn)的是java如何做一個(gè)串口助手,眾所周知,java是運(yùn)行在虛擬機(jī)上,也就是要運(yùn)行在window的一個(gè)進(jìn)程上,如果要java讀寫串口的話,肯定需要對它進(jìn)行驅(qū)動(dòng)編寫,而不僅僅是加載個(gè)jar包就能解決的。
幸運(yùn)的是SUN公司已經(jīng)幫我們解決了這個(gè)問題,你可以到sun公司網(wǎng)站上下載javacomm20-win32.zip的壓縮包,里面就包含了串口的驅(qū)動(dòng)(.dll文件)以及對應(yīng)的jar包,下載后把.dll文件放到你JDK路徑/bin,通過jar包提供的api你就可以操作串口相關(guān)的接口了。這里一遍關(guān)于java串口使用的文章,希望能提供給您:
本文標(biāo)題:java串口讀寫代碼,串口讀命令代碼
文章位置:http://vcdvsql.cn/article28/hssecp.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供定制網(wǎng)站、搜索引擎優(yōu)化、自適應(yīng)網(wǎng)站、關(guān)鍵詞優(yōu)化、虛擬主機(jī)、微信小程序
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)