《電子技術應用》
您所在的位置:首頁 > 嵌入式技術 > 設計應用 > 基于Java的串口通信應用編程
基于Java的串口通信應用編程
來源:微型機與應用2012年第13期
丁振凡1,王小明1,鄧建明2,周 斌2
(1.華東交通大學,江西 南昌 330013;2.南昌鐵路局,江西 南昌 330001)
摘要: 介紹了Java實現串口通信編程的技術處理。著重就串口通信的連接、數據緩沖區資源的多線程訪問控制以及數據讀取中的超時控制等問題進行了詳細討論,有效地實現了主機與下位單片機之間的數據傳遞。該通信方式已用于基于工控機的絕緣電阻檢測應用中。
Abstract:
Key words :

摘  要: 介紹了Java實現串口通信編程的技術處理。著重就串口通信的連接、數據緩沖區資源的多線程訪問控制以及數據讀取中的超時控制等問題進行了詳細討論,有效地實現了主機與下位單片機之間的數據傳遞。該通信方式已用于基于工控機的絕緣電阻檢測應用中。
關鍵詞: Java;串口通信;多線程;comm包

 嵌入式系統或傳感器網絡的很多應用都需要通過PC機與嵌入式設備或傳感器節點進行通信。其中,最常用的接口就是RS-232串口。串口通信可以是上位機與下位機之間的直接串口通信,也可以是在串口上連接無線通信模塊,通過串口進行無線通信。RS-232-C是在1970年由美國電子工業協會(EIA)聯合貝爾系統、調制解調器廠家及計算機終端生產廠家共同制定的用于串行通信的標準。RS-232是一個全雙工的通信協議,它可以同時進行數據接收和發送的工作。
 Java實現串口通信的編程方式通常采用SUN發布的串口通信API,它是以獨立jar包形式提供的一個標準擴展。其中包含3個文件:comm.jar提供了通信用的java API;win32com.dll提供了串口通信的本地驅動接口;javax.comm.properties是這個驅動的類配置文件。Java讀寫串口過程主要是調用javax.comm包中的API函數。在javax.comm包中,串口的讀寫操作是數據流形式,串口初始化后,通過CommPort類的getInputStream()和getOutputStream()方法即可分別取得端口的輸入流和輸出流。
 串口通信應用程序有兩種模式:一種是實現SerialPortEventListener接口,通過監聽串口事件并作相應處理;另一種就是建立一個獨立的接收線程負責數據的接收。本文采用的是后一種方式。
 本文的串口通信是上位工控機與下位單片機之間的通信。工控機通過觸摸屏方式來使用系統,下位單片機連接絕緣檢測筆實現絕緣電阻的檢測,并將檢測過程的結果發送給上位機。本文僅介紹主機方的Java串口通信編程處理技術,如圖1所示的虛線上方部分,包含消息接收線程、Swing事件驅動應用界面、消息緩沖區、消息分析處理程序。其中:①在圖形應用界面中通過用戶的操作來觸發事件實現與單片機的通信;②主機通過串口向單片機發送啟動檢測的消息;③單片機在收到消息后,將啟動檢測,并將傳感器獲取的數據通過串口發送給主機作為響應;④數據接收線程將收到的數據放到一個緩存中;⑤消息分析處理程序從緩存中獲取數據并進行分析處理。主機和單片機間每次通信傳送1 B。


1 串口緩沖區的控制
 串口緩沖區(SerialBuffer類)實現從串口接收到的一個完整消息的封裝,本系統的消息按協議設計為11 B,其中包含消息的起始標記、識別標識和數據字節。消息緩沖區是消息接收線程和消息分析處理Bean之間的橋梁,只有在接收到一條完整的消息后才可以進行消息的分析解析。串口緩沖區安排有3個重要屬性:
 (1)Content屬性:存放11 B的消息;
?。?)Available屬性:標識消息是否可用;
?。?)LengthNeeded屬性:統計收到的消息字節長度。
該類還定義了兩個重要方法:(1)public synchronized byte[] GetMsg():從緩沖區讀取消息;(2)public synchronized void putbyte(int c):寫一個字節到緩沖區。方法定義中均含有synchronized關鍵詞,也就是要使用這兩個方法必須取得緩沖區的對象鎖,從而實現對緩沖區這個共享資源的訪問互斥操作。
2 消息接收線程
 消息接收線程(ReadSerial類)循環從串口讀取數據并將其存放到消息緩沖區中,串口無數據或緩沖區滿時它將處于資源等待狀態。以下為線程的run方法代碼:
    public void run() {
        try  {
            while (true)  {
               int c = ComPort.read();      
//從串口讀1 B
               ComBuffer.putbyte(c);       
 //將數據放入消息緩沖區
            }
        } catch (IOException e) { }
    }
3 消息分析處理Bean
 消息分析處理Bean(SerialBean類)是Swing界面處理程序對串口進行操作訪問的調用接口。其中封裝有3個方法:Initialize方法實現串口的初始化;ReadPort()方法從消息緩沖區讀消息并進行分析;WritePort(byte[] Msg)方法寫消息到串口。串口初始化只執行1次,包括如下工作:
?。?)打開串口
portId=CommPortIdentifier.getPortIdentifier(串口名);
serialPort=(SerialPort)portId.open(“串口所有者名稱”,超時等待時間);
?。?)獲取串口的輸入/輸出流
in=serialPort.getInputStream();
out=serialPort.getOutputStream();
?。?)設置串口參數
serialPort.setSerialPortParams(9 600,SerialPort.
DATABITS_8,
SerialPort.STOPBITS_1,SerialPort.PARITY_NONE);
?。?)創建消息緩沖區對象
SB=new SerialBuffer();
?。?)創建并啟動消息接受線程
RT=new ReadSerial(SB, in);
RT.start();  
4 串口通信驅動程序的裝載
 串口驅動程序的裝載是實現串口初始化的前提,如果程序在Spring STS開發環境中運行,會從JDK的運行環境裝載驅動程序。這種情況下,必須事先將comm.jar拷貝到JDK安裝目錄的jre\lib\ext 目錄下,將win32com.dll 拷貝到JDK安裝目錄的jre\bin目錄下,將javax.comm.properties拷貝到JDK安裝目錄的jre\lib目錄[2]下。
 如果將開發的應用導出為獨立的可運行的JAR文件,則必須將以上的3個文件安排到應用工程的src所在目錄路徑下,并在程序中用如下程序代碼進行裝載。
Import javax.comm.CommDriver;
import javax.swing.JOptionPane;
public class CurrentStatus {
    public static SerialBean SB ;  //消息分析處理Bean
    public static void init(int n){   //n為串口編號
        String driverName=“com.sun.comm.Win32Driver”;
        CommDriver driver=null;
        try   {
            System.loadLibrary(“win32com”);  //裝載DLL
            driver=(CommDriver)Class.forName
            (driverName).newInstance();
        } 
        catch(Exception e1){ e1.printStackTrace();} 
        driver.initialize(); //驅動程序初始化
        SB=new SerialBean(n); 
        if (SB.Initialize()==-1)
            JOptionPane.showMessageDialog(null,”串口初始
化錯誤”);
    }
}
 這樣,在程序中可通過執行init方法實現具體串口的通信初始化。例如:
 CurrentStatus.init(1);  //初始化串口1
5 在圖形界面中實現通信調用
 在電氣設備的絕緣電阻檢測應用中,圖2為應用界面。當用戶點擊某個檢測項對應的按鈕時,通過注冊按鈕點擊事件觸發執行代碼,將通過消息分析處理Bean的WritePort方法給串口發送檢測命令,并利用循環等待讀取來自單片機的檢測結果。由于單片機在檢測過程中將發送系列檢測結果,因此,要循環讀取數據,直到超過一定時間無數據可讀或接收到結束標志的消息為止。具體工作過程如圖3所示。其中,數據庫的訪問處理采用Spring的JdbcTemplate類提供的功能實現。

 

 

 本文介紹了Java實現串口通信編程的典型編程處理要點,可有效地實現上位工控機與單片機之間的數據通信。系統通過多線程及對消息緩沖區資源的訪問控制、延時等待控制等措施,保證了上下位機之間通信的可靠傳遞。實際應用中要根據具體的消息格式來組織通信過程中數據的分析處理。
參考文獻
[1] 吳金鋒,劉偉平,黃紅斌.Java串口通信數據采控系統的設計與實現[J].微計算機信息,2010(10).
[2] 唐未香.Java程序與ZigBee串口通訊的實現[J].福建電腦,2010(5).

此內容為AET網站原創,未經授權禁止轉載。
热re99久久精品国产66热_欧美小视频在线观看_日韩成人激情影院_庆余年2免费日韩剧观看大牛_91久久久久久国产精品_国产原创欧美精品_美女999久久久精品视频_欧美大成色www永久网站婷_国产色婷婷国产综合在线理论片a_国产精品电影在线观看_日韩精品视频在线观看网址_97在线观看免费_性欧美亚洲xxxx乳在线观看_久久精品美女视频网站_777国产偷窥盗摄精品视频_在线日韩第一页
  • <strike id="ygamy"></strike>
  • 
    
      • <del id="ygamy"></del>
        <tfoot id="ygamy"></tfoot>
          <strike id="ygamy"></strike>
          亚洲乱码精品一二三四区日韩在线| 亚洲一二三区在线观看| 欧美日韩精品中文字幕| 一区免费观看视频| 136国产福利精品导航网址| 久久在线免费观看视频| 日韩一区二区高清| 欧美三级电影精品| 久久国产精品一区二区| 国产精品视频久久一区| 国产精品啊啊啊| 欧美日韩高清不卡| 在线一区二区三区做爰视频网站| 欧美精品色一区二区三区| 国产欧美日本| 亚洲综合色在线| 欧美日韩精品在线播放| 激情五月婷婷综合| 亚洲精品视频一区二区三区| 久久亚洲视频| 欧美激情女人20p| 国产亚洲日本欧美韩国| 久久五月激情| 99精品视频免费全部在线| 亚洲欧美另类国产| 国产一区av在线| 欧美日韩精品一区二区三区| 亚洲永久网站| 一本色道久久加勒比精品| 亚洲精品影视在线观看| 欧美日韩午夜| 久久理论片午夜琪琪电影网| 国内精品**久久毛片app| 1000部精品久久久久久久久| 99人久久精品视频最新地址| 夜夜嗨av一区二区三区网页| 久久免费精品视频| 亚洲国产成人高清精品| 欧美精品免费在线| 亚洲一区免费| 欧美国产日韩精品| 久久久久久夜精品精品免费| 国产精品久久久久婷婷| 亚洲欧美一区二区激情| 国产精品毛片高清在线完整版| 亚洲一区二区少妇| 亚洲国产二区| 国产毛片精品国产一区二区三区| 欧美精品一二三| 国产精品自拍在线| 国产精品美女久久久久久久| 蜜桃av久久久亚洲精品| 蜜臀av性久久久久蜜臀aⅴ| 日韩午夜黄色| 销魂美女一区二区三区视频在线| 久久夜色撩人精品| 欧美在线观看日本一区| 亚洲国产日日夜夜| 免费亚洲一区| 欧美破处大片在线视频| 国产欧美一区二区三区沐欲| 国产九九视频一区二区三区| 欧美一区二区精品| 国产精品天天摸av网| 欧美11—12娇小xxxx| 久久爱www.| 久久久久免费视频| 午夜欧美精品久久久久久久| 亚洲精品国产精品久久清纯直播| 激情成人在线视频| 艳女tv在线观看国产一区| 欧美性猛交一区二区三区精品| 亚洲电影专区| 欧美1区3d| 欧美色道久久88综合亚洲精品| 日韩午夜黄色| 国产欧美精品xxxx另类| 久久精品成人一区二区三区| 一区二区三区国产盗摄| 欧美日韩视频专区在线播放| 欧美日韩一区二区国产| 久热这里只精品99re8久| 欧美日韩不卡合集视频| 欧美国产激情二区三区| 欧美日韩伦理在线| 在线观看欧美激情| 亚洲最新视频在线| 国产欧美一区二区精品婷婷| 红桃视频亚洲| 午夜伦欧美伦电影理论片| 美国十次成人| 欧美日韩一区二区在线视频| 欧美激情视频一区二区三区不卡| 中日韩午夜理伦电影免费| 国产一区二区三区高清在线观看| 亚洲人成77777在线观看网| 尤物yw午夜国产精品视频| 午夜在线电影亚洲一区| 亚洲国产电影| 最新热久久免费视频| 欧美久久在线| 激情视频一区二区| 国产农村妇女毛片精品久久莱园子| 国产精品第2页| 99精品久久| 一本色道久久综合亚洲二区三区| 亚洲国产高清自拍| 欧美视频网址| 亚洲在线电影| 欧美日韩一区在线观看| 雨宫琴音一区二区在线| 欧美性猛交视频| 宅男精品视频| 一区二区三区国产盗摄| 午夜精品亚洲一区二区三区嫩草| 亚洲一区二区三区色| 亚洲尤物在线视频观看| 亚洲欧洲在线视频| 久久精品久久99精品久久| 亚洲深夜av| 久久国产成人| 欧美丝袜第一区| 亚洲第一黄网| 国产婷婷色一区二区三区在线| 午夜精品福利一区二区蜜股av| 亚洲日本成人女熟在线观看| 欧美日韩1区2区| 国产精品一二三四区| 欧美一区二区精品| 欧美日韩亚洲免费| 久久久久久久综合狠狠综合| 久久先锋影音| 99re热这里只有精品视频| 久久av最新网址| 9色国产精品| 亚洲人成网站精品片在线观看| 一本色道久久加勒比88综合| 今天的高清视频免费播放成人| 免费不卡在线观看| 亚洲国产精品久久人人爱蜜臀| 国产精品欧美在线| 欧美喷潮久久久xxxxx| 久久久久九九九九| 一区二区精品| 亚洲精品综合在线| 日韩亚洲欧美成人一区| 久久精品国产第一区二区三区| 国产精品家庭影院| 午夜精品免费| 国产精品白丝av嫩草影院| 日韩午夜激情| 国内免费精品永久在线视频| 国产精品一区二区欧美| 久久免费精品日本久久中文字幕| 一区二区三区高清视频在线观看| 国产精品自拍一区| 欧美日韩性生活视频| 韩国自拍一区| 亚洲素人一区二区| 久久男女视频| 国产麻豆9l精品三级站| 久久精品成人一区二区三区| 好吊色欧美一区二区三区视频| 亚洲国产日韩综合一区| 亚洲性感激情| 久久综合福利| 亚洲人被黑人高潮完整版| 欧美专区在线观看| 亚洲视频在线观看视频| 久久只精品国产| 午夜精品久久久久久久99樱桃| 在线综合+亚洲+欧美中文字幕| 在线观看91精品国产麻豆| 亚洲夜晚福利在线观看| 国产亚洲精品激情久久| 久久一日本道色综合久久| 尤物yw午夜国产精品视频明星| 亚洲亚洲精品三区日韩精品在线视频| 亚洲国产成人精品久久久国产成人一区| 亚洲精品一区二区三区不| 欧美在线欧美在线| 韩日成人在线| 欧美区一区二| 国产精品嫩草久久久久| 亚洲免费视频成人| 久久精品中文| 欧美亚洲自偷自偷| 亚洲黄色一区二区三区| 午夜精品一区二区三区在线视| 国产人久久人人人人爽| 欧美a级在线| 欧美视频专区一二在线观看| 在线观看一区二区精品视频| 欧美日韩在线综合| 欧美亚韩一区| 欧美性开放视频| 国产欧美va欧美va香蕉在| 欧美日韩国产精品一区| 欧美午夜www高清视频| 日韩视频一区| 亚洲精品九九| 亚洲素人在线| 国产精品女人网站| 国产色视频一区| 国产精品入口尤物| 裸体一区二区三区| 国产精品xnxxcom| 国产一区二区黄| 久久久国产91| 国产一区二区毛片| 欧美激情第9页| 亚洲欧洲视频在线| 亚洲日本一区二区三区| 亚洲大片一区二区三区| 夜夜嗨av一区二区三区四区| 国产视频久久| 一片黄亚洲嫩模| 久久久综合精品| 国产人成精品一区二区三| 欧美亚洲色图校园春色| 欧美日本三区| 欧美日韩精品一本二本三本| 午夜精品福利一区二区三区av| 亚洲一区三区视频在线观看| 亚洲一区免费视频| 国产精品hd| 亚洲国产婷婷综合在线精品| 激情综合色丁香一区二区| 欧美日韩在线免费视频| 亚洲国产精选| 国产欧美婷婷中文| 欧美在线免费| 一本色道久久综合狠狠躁篇的优点| 欧美天堂亚洲电影院在线观看| 国产人成精品一区二区三| 久热精品视频在线免费观看| 欧美成人精品在线| 亚洲国产岛国毛片在线| 一区二区91| 在线看片第一页欧美| 国产精品麻豆欧美日韩ww| 伊大人香蕉综合8在线视| 亚洲男同1069视频| 美女久久一区| 久久久久一本一区二区青青蜜月| 一本久道久久综合婷婷鲸鱼| 亚洲国产你懂的| 国产精品一区二区三区观看| 国产精品久久久久影院亚瑟| 欧美午夜精品久久久久久超碰| 精品成人乱色一区二区| 欧美激情视频一区二区三区在线播放| 一区二区三区无毛| 欧美丰满高潮xxxx喷水动漫| 欧美成年人视频网站欧美| 亚洲欧美另类久久久精品2019| 午夜在线视频一区二区区别| 99国产精品国产精品毛片| 欧美片在线观看| 欧美性淫爽ww久久久久无| 很黄很黄激情成人| 欧美精品一区二区三区很污很色的| 欧美色欧美亚洲另类七区| 久久99在线观看| 欧美日产在线观看| 国产精品婷婷午夜在线观看| 久久久久九九九九| 国产九色精品成人porny| 伊人伊人伊人久久| 国产视频精品网| 免费一级欧美在线大片| 欧美激情视频给我| 国产精品亚洲аv天堂网| 亚洲丰满在线| 欧美日韩精品免费观看| 国产一区二区在线观看免费播放| 午夜国产精品视频免费体验区| 日韩一级在线观看| 国内不卡一区二区三区| 伊人久久亚洲影院| 在线成人www免费观看视频| 亚洲激情在线播放| 在线亚洲欧美视频| 亚洲精品久久嫩草网站秘色| 欧美二区乱c少妇| 亚洲黄色小视频| 久久成人免费电影| 欧美在线观看日本一区| 国产欧美日韩专区发布| 久久中文精品| 麻豆精品国产91久久久久久| 欧美在线亚洲在线| 欧美高清视频一区| 欧美一区二区三区四区在线| 久久夜色精品| 亚洲午夜视频| 在线精品国产欧美| 久久国产精品色婷婷| 亚洲精品视频免费在线观看| 香蕉视频成人在线观看| 91久久国产自产拍夜夜嗨| 亚洲人成网站777色婷婷| 国产精品色一区二区三区| 国产精品一区久久久| 久久在精品线影院精品国产| 日韩一级黄色大片| 久久国产精品亚洲va麻豆| 欧美日韩 国产精品| 99xxxx成人网| 久久亚洲精品伦理| 亚洲自拍电影| 亚洲欧美激情视频在线观看一区二区三区| 久久亚洲国产精品日日av夜夜| 欧美日韩一视频区二区| 欧美在线视频一区二区| 国产欧美视频一区二区三区| 亚洲嫩草精品久久| 欧美亚洲综合在线| 亚洲激情国产精品| 亚洲精品中文字幕女同| 欧美日韩一区成人| 一本色道久久综合亚洲精品婷婷| 一区二区三区四区五区在线| 亚洲国内精品| 亚洲专区在线视频| 久久久精品国产免费观看同学| 亚洲国产精品成人一区二区| 亚洲免费精品|