資源簡介
Java 串口(rxtx)demo(包含發送、接收、以及連接數據庫和連接實際的串口硬件的代碼和工具類)

代碼片段和文件信息
package?com.example.demo.rxtx3;
import?com.example.demo.rxtx3.util.DBHelper;
import?gnu.io.*;
import?java.io.IOException;
import?java.io.InputStream;
import?java.sql.PreparedStatement;
import?java.util.TooManyListenersException;
?//寫好之后,就是讀串口類,要保存至數據庫的話就是在讀出數據后保存,此處無保存至數據庫的代碼:
public?class?EventListener?implements?SerialPortEventListener?{
????//1.定義變量
????SerialPort?serialPort?=?null;
????InputStream?inputStream?=?null;//輸入流
????Thread?readThread?=?null;
?????java.sql.Connection?conn?=?null;
?????PreparedStatement?stmt?=?null;
????//2.構造函數:
????//實現初始化動作:獲取串口COM21、打開串口、獲取串口輸入流對象、為串口添加事件監聽對象
????public?EventListener()?throws?NoSuchPortException?PortInUseException?{
????????try?{
????????????//獲取串口、打開窗串口、獲取串口的輸入流。
????????????serialPort?=?SerialTool.openPort(“COM3“?9600);
????????????inputStream?=?serialPort.getInputStream();
????????????//向串口添加事件監聽對象。
????????????serialPort.addEventListener(this);
????????????//設置當端口有可用數據時觸發事件,此設置必不可少。
????????????serialPort.notifyondataavailable(true);
????????}?catch?(IOException?e)?{
????????????e.printStackTrace();
????????}?catch?(TooManyListenersException?e)?{
????????????//?TODO?Auto-generated?catch?block
????????????e.printStackTrace();
????????}finally?{
????????????//??SerialTool.closePort(serialPort);
????????}
????}
????//重寫繼承的監聽器方法
????@Override
????public?void?serialEvent(SerialPortEvent?event)?{
????????//定義用于緩存讀入數據的數組
????????byte[]?cache?=?new?byte[1024];
????????//記錄已經到達串口COM21且未被讀取的數據的字節(Byte)數。
????????int?availableBytes?=?0;
????????//如果是數據可用的時間發送,則進行數據的讀寫
????????if(event.getEventType()?==?SerialPortEvent.DATA_AVAILABLE){
????????????try?{
????????????????availableBytes?=?inputStream.available();
????????????????while(availableBytes?>?0){
????????????????????inputStream.read(cache);
????????????????????for(int?i?=?0;?i?????????????????????????//解碼并輸出數據
????????????????????????System.out.print((char)cache[i]);
????????????????????????//存儲到數據庫中
????????????????????????//使用的sql語句
????????????????????????String?sql?=?“insert?into?entity_test?(idstr)?values(1)“;
????????????????????????//獲得數據庫連接‘“+(char)cache[i]+“‘
????????????????????????try?{
????????????????????????????conn?=?DBHelper.getConnection();
????????????????????????????stmt?=?conn.prepareStatement(sql);
????????????????????????????stmt.executeUpdate();
????????????????????????}?catch?(Exception?e)?{
????????????????????????????e.printStackTrace();
????????????????????????}
????????????????????}
????????????????????availableBytes?=?inputStream.available();
????????????????}
????????????????System.out.println();
????????????}?catch?(IOException?e)?{
????????????????e.printStackTrace();
????????????}
????????}
????}
????public?static?void?main(String[]?args)?throws?NoSuchPortException?PortInUseException?{
????????new?EventListener();
????}
????/*
?????如果是自己虛擬的兩個端口,則運行讀串口類,再運行寫串口類,則能看到接收到的數據。
?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????目錄???????????0??2018-05-21?17:45??rxtx3\
?????文件????????3689??2018-05-21?16:16??rxtx3\EventListener.java
?????文件????????6710??2018-05-18?14:26??rxtx3\SerialTool.java
?????目錄???????????0??2018-05-21?17:45??rxtx3\util\
?????文件????????1475??2018-05-21?09:37??rxtx3\util\DBHelper.java
?????文件????????1231??2018-05-21?17:23??rxtx3\util\HexUtil.java
?????文件?????????777??2018-05-21?17:44??rxtx3\Write.java
- 上一篇:java銀聯多渠道ISO8583
- 下一篇:mysql數據導出pdf格式
評論
共有 條評論