『壹』 如何在java中實現串口讀寫數據
實現Java串口讀寫數據,可以藉助rxtx庫的功能。在開始之前,需要確保計算機環境已正確配置,以避免執行過程中出現錯誤。配置環境相對簡單,只需將rxtxSerial.dell和rxtxParallel.dell這兩個擴展文件復制到C盤的System32文件夾中即可。
接下來,為了實現Java串口讀寫功能,可以利用RXTXComm的類庫,包括SerialPort類進行串口通信操作。在進行串口讀取操作時,首先需要創建一個SerialPort對象,並初始化該對象的屬性,如波特率、數據位、停止位等。然後,調用該對象的read方法進行數據讀取操作。
在實現串口寫入數據時,同樣需要創建SerialPort對象,並初始化其屬性。之後,通過調用write方法將數據發送至串口。在發送數據前,務必確保串口已正確打開。否則,發送操作將失敗。
在代碼實現過程中,還需要注意對異常情況的處理。例如,當串口無法打開或讀取數據失敗時,應該拋出相應的異常並進行錯誤處理,以確保程序的穩定運行。
此外,為了提高串口通信的效率和可靠性,可以採用多線程的方式進行數據的並發讀寫操作。通過創建多個線程,分別負責串口的讀取和寫入任務,可以有效提升程序的響應速度和處理能力。
最後,編寫完串口讀寫功能的代碼後,不要忘記在程序的最後進行資源釋放,包括關閉串口連接等操作,以避免資源泄漏問題。在進行串口讀寫數據時,遵循以上步驟和注意事項,可以實現Java中串口數據的有效讀寫。
『貳』 Springboot+RXTX for JAVA 實現串口通信
下載RXTX可以從官網或者Fizzed網站,官網沒有64位的支持,但在Fizzed中可以找到2.2版的64位和32位的Windows和linux版本。
1. Windows下的串口調試
將rxtxParallel.dll和rxtxSerial.dll復制到%JAVA_HOME%安裝目錄的bin目錄下,同時也要復制到%JAVA_HOME%安裝目錄的jre/bin目錄下(在eclipse開發時調用,減少麻煩)。然後將RXTXcomm.jar復制到%JAVA_HOME%\jre\lib\ext\RXTXcomm.jar(開發時直接導入)。
2. Linux下的串口調試
首先確定Linux處理器型號,然後選擇對應的RXTX的Linux版本。
例如,如果處理器是i386,則將Linux i686版本中的兩個os文件復制到系統%JAVA_HOME%/jre/lib/i386(即JDK目錄中的系統文件夾)。將RXTXcomm.jar復制到%JAVA_HOME%/jre/lib/ext文件夾。代碼不變,即可運行使用。
在實際開發中,由於使用樹莓派測試,樹莓派使用Raspbian系統(使用uname -a命令可查看系統內核信息)。Linux raspberrypi 3.12.28+ #709 PREEMPT Mon Sep 8 15:28:00 BST 2014 armv6l GNU/Linux。處理器型號為armv6l,在下載的RXTX工具包中並沒有這種系統版本,實際測試中,找到的RXTX工具包都不能使程序運行,均報出系統位數不符。
又找到另一種處理方法,可以直接在系統中make編譯RXTX源碼安裝。
最新的RXTX穩定版本是rxtx 2.1-7r2。首先用wget獲取源碼包並解壓。
如果直接MAKE編譯安裝,可能會遇到以下兩種錯誤:
錯誤1:/tmp/rxtx-2.1-7r2/./src/I2CImp.c:135: error: 『UTS_RELEASE』 undeclared (first use in this function)
這是由於version.h中缺少』UTS_RELEASE』信息,需要手工添加。先獲取當前系統的版本信息,然後在/usr/include/Linux/version.h中添加。
3.10.24+為上一步中獲得的版本號
錯誤2:libtool: install: armv6l-unknown-linux-gnu/librxtxRS485.la is not a directory
這個錯誤會出現在JDK1.6及以上的運行環境下,需要對configure文件進行修改。在configure文件中找到這一行,在後邊添加上當前JDK的版本號即可,如
完成以上兩項修改後,就可以正常編譯安裝了。如果看到 Libraries have been installed in:/usr/lib/jvm/jdk-7-Oracle-armhf/jre/lib/arm 則說明RXTX安裝已經成功。之後執行
注意:可能會有許可權不足的情況,需要chmod 777 test.c操作
至此使用RXTX框架的串口編程代碼就可以在樹莓派使用了。
(這里需要注意的是,在Linux系統中,大部分的串口名稱為/dev/ttyS*,但在特殊環境下如本次使用的raspberrypi,使用RXTX方法獲得串口集合是不成功的,原因是RXTX本身源碼問題,找了好久的原因,終於在RXTX官網上找到了解釋:
即RXTX本身支持的Linux串口搜索只限制為/dev/ttyS*等,其他名稱的並不能支持,而raspberrypi中的串口名稱為/dev/ttyAMA*,故無法找到系統串口。這種情況下有兩種解決方案:
1.修改源碼:參考官網故障排除 rxtx.qbang.org/wiki/ind...
源碼RXTXCommDriver.java文件中518行開始,為Linux系統環境下的串口名稱查找,添加所需串口名即可(如ttyAMA)(此種方法需要重新編譯安裝)
2.將串口文件進行映射,即使用命令 ln -s /dev/ttyAMA0 /dev/ttyS0,即可找到/dev/ttyS0映射串口,也就對應了/dev/ttyAMA0實際串口。
『叄』 java實現串口通信代碼
在Java中實現串口通信涉及一系列步驟。首先,獲取可用的串口列表,通過調用CommPortIdentifier.getPortIdentifiers()方法獲取所有可用埠。接下來,遍歷這些埠,檢查每個埠的類型是否為串口。這里我們關注的是名為"COM1"的串口,因此如果發現此埠,將立即退出循環。對於其他串口,將忽略它們,設置portId為null。
一旦找到並確認了正確的串口,使用portId.open("Serial_Communication", 1000)方法以1000毫秒的超時時間打開串口。接著,通過調用setSerialPortParams方法,設置串口參數。具體參數包括波特率為9600,數據位為8位,停止位為1位,以及無奇偶校驗。
打開串口後,可以通過serialPort.getInputStream()和serialPort.getOutputStream()分別獲取串口的輸入流和輸出流。接下來,可以在此輸入輸出流上執行數據的讀取和發送操作。
當通信操作完成後,需要關閉這些流和串口。具體操作包括關閉輸入流in.close(),關閉輸出流out.close(),以及最後關閉串口serialPort.close()。整個過程中,異常處理也非常重要,通過try-catch塊來捕捉並處理可能出現的PortInUseException、和IOException等異常。
為了確保程序的健壯性和可靠性,合理地設置和處理這些異常是至關重要的。通過以上步驟,Java程序可以成功實現與串口設備的通信,從而進行數據的讀取和發送。
『肆』 在java的web程序中怎麼使用串口通訊
最近在做java串口通訊,主要是用個人電腦通過串口從RS485讀取數據,並通過crc循環冗餘校驗,把接收正確的數據解析,插入資料庫mysql,並用SSH技術把資料庫數據以表格以及圖表形式顯示 x0dx0a 思路: x0dx0a1.為了從RS485讀取數據,由於暫時沒有硬體設備,系統是win7,故採用Virtual Serial Port Drive(VSPD)這塊虛擬串口軟體代替。並下載sscom32.exe模擬串口通信軟體。 x0dx0ax0dx0a2. 要想實現串口通信,用Java實現串口通信(windows系統下),需要用到sun提供的明散串javacomm20-win32.zip。其中要用到三個文件,配置如下: x0dx0acomm.jar放置虛段到 JAVA_HOME/jre/lib/ext; x0dx0awin32com.dll放置到 JAVA_HOME/bin; x0dx0ajavax.comm.properties 兩個地方都要放 x0dx0ajre/lib(也就是在JAVA文件夾下的jre),JAVA_HOME/jre/lib下 x0dx0a這個配置在我電腦上測試成功,也許不需要這樣麻煩。注意的是,如果你使用myeclipse,因為它自帶jre,你需要在它所在的jre相應位置放dll以及properties文件。激譽氏 x0dx0ax0dx0a是不是感覺這個很麻煩,還有windows的限制。後來我們下載rxtx這款開源包代替了剛才的comm。不僅windows下可以,linux下也可以。使用方法很簡單,配置如下: x0dx0ax0dx0aRXTXcomm.jar放到JAVA_HOME/jre/lib/ext x0dx0arxtxSerial.dll放到JAVA_HOME/bin x0dx0a如果你使用myeclipse工具,你需要把rxtxSerial.dll放到它自帶的jre里。 x0dx0ax0dx0a3.新建eclipse工程,添加comm.jar或者RXTXcomm.jar包。因為javacomm20-win32.zip包里有樣例SimpleRead.java,可以通過這個例子測試串口是否正確 x0dx0ax0dx0a4.接收數據正確後,根據傳送接收雙方的協議,採用CRC循環校驗,根據傳輸的一方的校驗函數判定是否是正確傳輸 x0dx0ax0dx0a5.把正確結束的數據解析,查看自己指定的通訊規則,然後解析 x0dx0ax0dx0a6.插入資料庫,jdbc插入 x0dx0ax0dx0a7.數據統計,定時統計每小時,每天,每月,每年的平均值,採用quartz服務來實現。 x0dx0ax0dx0a8.建立web工程,採用hibernate3,spring3,dwr技術把資料庫數據動態顯示,圖表採用jfreechart,以及AJAX的運用
『伍』 java實現串口通信代碼
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埠則退出循環
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);//設置串口速率為9600,數據位8位,停止位1們,奇偶校驗無
InputStream in = serialPort.getInputStream();//得到輸入流
OutputStream out = serialPort.getOutputStream();//得到輸出流
//進行輸入輸出操作
//操作結束後
in.close();
out.close();
serialPort.close();//關閉串口
} catch (PortInUseException e) {
e.printStackTrace();
} catch ( e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
『陸』 在java的web程序中怎麼使用串口通訊
方法如下:
新建eclipse工程,添加comm.jar或者RXTXcomm.jar包。因為javacomm20-win32.zip包里有樣例SimpleRead.java,可以通過這個例子測試串口是否正確。
接收數據正確後,根據傳送接收雙方的協議,採用CRC循環校驗,根據傳輸的一方的校驗函數判定是否是正確傳輸。
把正確結束的數據解析,查看自己指定的通訊規則,然後解析。
插入資料庫,jdbc插入。
數據統計,定時統計每小時,每天,每月,每年的平均值,採用quartz服務來實現。
建立web工程,採用hibernate3,spring3,dwr技術把資料庫數據動態顯示,圖表採用jfreechart,以及AJAX的運用