OMG,到底在尋找什么..................
          (構(gòu)造一個完美的J2EE系統(tǒng)所需要的完整知識體系)
          posts - 198,  comments - 37,  trackbacks - 0
          java串口通信

           ??Java提供了?CommunicationAPI(包含于javax.comm包中)用于通過與機器無關(guān)的方式,控制各種外部設(shè)備。Communications?API,是標準的Java的擴展部分,它在JavaAPI中是沒有附帶的。因此,必須先在SUN公司網(wǎng)站的Java站點(www.java.sun.com)上下載這個擴展類庫。

            1.1Communications?API?簡介

          ?Communications?API?的核心是抽象的CommPort類及其兩個子類:SerialPort類和ParallePort類。其中,SerialPort類是用于串口通信的類,ParallePort類是用于并行口通信的類。CommPort類還提供了常規(guī)的通信模式和方法,例如:getInputStream(?)方法和getOutputStream(?)方法,專用于與端口上的設(shè)備進行通信。

            然而,這些類的構(gòu)造方法都被有意的設(shè)置為非公有的(non-public)。所以,不能直接構(gòu)造對象,而是先通過靜態(tài)的CommPortIdentifer.getPortIdentifiers()獲得端口列表;再從這個端口列表中選擇所需要的端口,并調(diào)用CommPortIdentifer對象的Open(?)方法,這樣,就能得到一個CommPort對象。當然,還要將這個CommPort對象的類型轉(zhuǎn)換為某個非抽象的子類,表明是特定的通訊設(shè)備。該子類可以是SerialPort類和ParallePort類中的一個。下面將分別對CommPort類,CommPortIdentifier類,串口類SerialPort進行詳細的介紹。

            1.2?CommPortIdentifier類

            CommPortIdentifier類的方法如下:

          方法?說明
          addPortName(String,?int,?CommDriver)?添加端口名到端口列表里
          addPortOwnershipListener(CommPortOwnershipListener)?添加端口擁有的監(jiān)聽器
          removePortOwnershipListener(CommPortOwnershipListener)?移除端口擁有的監(jiān)聽器
          getCurrentOwner()?得到當前占有端口的對象或應(yīng)用程序
          getName()?得到端口名稱
          getPortIdentifier(CommPort)?得到參數(shù)打開的端口的CommPortIdentifier類型對象
          getPortIdentifier(String)?得到以參數(shù)命名的端口的CommPortIdentifier類型對象
          getPortIdentifiers()?得到系統(tǒng)中的端口列表
          getPortType()?得到端口的類型
          isCurrentlyOwned()?判斷當前端口是否被占用
          open(FileDescriptor)?用文件描述的類型打開端口
          open(String,?int)?打開端口,兩個參數(shù):程序名稱,延遲時間(毫秒數(shù))

            1.3?SerialPort類

          SerialPort關(guān)于串口參數(shù)的靜態(tài)成員變量
          成員變量?說明?成員變量?說明?成員變量?說明
          DATABITS_5?數(shù)據(jù)位為5?STOPBITS_2?停止位為2?PARITY_ODD?奇檢驗
          DATABITS_6?數(shù)據(jù)位為6?STOPBITS_1?停止位為1?PARITY_MARK?標記檢驗
          DATABITS_7?數(shù)據(jù)位為7?STOPBITS_1_5?停止為1.5?PARITY_NONE?空格檢驗
          DATABITS_8?數(shù)據(jù)位為8?PARITY_EVEN?偶檢驗?PARITY_SPACE?無檢驗
          SerialPort對象的關(guān)于串口參數(shù)的函數(shù)
          方法?說明?方法?說明
          getBaudRate()?得到波特率?getParity()?得到檢驗類型
          getDataBits()?得到數(shù)據(jù)位數(shù)?getStopBits()?得到停止位數(shù)
          setSerialPortParams(int,?int,?int,?int)?設(shè)置串口參數(shù)依次為(波特率,數(shù)據(jù)位,停止位,奇偶檢驗)
          SerialPort關(guān)于事件的靜態(tài)成員變量
          成員變量?說明?成員變量?說明
          BI?Break?interrupt中斷?FE?Framing?error錯誤
          CD?Carrier?detect載波偵聽?OE?Overrun?error錯誤
          CTS?Clear?to?send清除以傳送?PE?Parity?error奇偶檢驗錯誤
          DSR?Data?set?ready數(shù)據(jù)備妥?RI?Ring?indicator響鈴偵測
          DATA_AVAILABLE?串口中的可用數(shù)據(jù)?OUTPUT_BUFFER_EMPTY?輸出緩沖區(qū)空
          SerialPort中關(guān)于事件的方法
          方法?說明?方法?說明?方法?說明
          isCD()?是否有載波?isCTS()?是否清除以傳送?isDSR()?數(shù)據(jù)是否備妥
          isDTR()?是否數(shù)據(jù)端備妥?isRI()?是否響鈴偵測?isRTS()??是否要求傳送
          addEventListener(SerialPortEventListener)???向SerialPort對象中添加串口事件監(jiān)聽器
          removeEventListener()?移除SerialPort對象中的串口事件監(jiān)聽器
          notifyOnBreakInterrupt(boolean)?設(shè)置中斷事件true有效,false無效
          notifyOnCarrierDetect(boolean)?設(shè)置載波監(jiān)聽事件true有效,false無效
          notifyOnCTS(boolean)?設(shè)置清除發(fā)送事件true有效,false無效
          notifyOnDataAvailable(boolean)?設(shè)置串口有數(shù)據(jù)的事件true有效,false無效
          notifyOnDSR(boolean)?設(shè)置數(shù)據(jù)備妥事件true有效,false無效
          notifyOnFramingError(boolean)?設(shè)置發(fā)生錯誤事件true有效,false無效
          notifyOnOutputEmpty(boolean)?設(shè)置發(fā)送緩沖區(qū)為空事件true有效,false無效
          notifyOnParityError(boolean)?設(shè)置發(fā)生奇偶檢驗錯誤事件true有效,false無效
          notifyOnRingIndicator(boolean)?設(shè)置響鈴偵測事件true有效,false無效
          getEventType()?得到發(fā)生的事件類型返回值為int型
          sendBreak(int)?設(shè)置中斷過程的時間,參數(shù)為毫秒值
          setRTS(boolean)?設(shè)置或清除RTS位
          setDTR(boolean)?設(shè)置或清除DTR位
          SerialPort中的其他常用方法
          方法?說明
          close()?關(guān)閉串口
          getOutputStream()?得到OutputStream類型的輸出流
          getInputStream()?得到InputStream類型的輸入流
          posted on 2007-02-01 14:39 OMG 閱讀(1792) 評論(0)  編輯  收藏 所屬分類: JavaX

          <2007年2月>
          28293031123
          45678910
          11121314151617
          18192021222324
          25262728123
          45678910

          常用鏈接

          留言簿(1)

          隨筆分類

          隨筆檔案

          IT風云人物

          文檔

          朋友

          相冊

          經(jīng)典網(wǎng)站

          搜索

          •  

          最新評論

          閱讀排行榜

          評論排行榜

          主站蜘蛛池模板: 岳普湖县| 新河县| 秭归县| 若羌县| 清丰县| 拜泉县| 上思县| 如东县| 郸城县| 台南市| 龙井市| 中卫市| 镇巴县| 彰化市| 长顺县| 余庆县| 扎囊县| 聂拉木县| 小金县| 长汀县| 南陵县| 大厂| 荣昌县| 东乌珠穆沁旗| 民县| 辽阳县| 武功县| 穆棱市| 乌兰县| 江源县| 左贡县| 镇赉县| 宁陵县| 武强县| 界首市| 台前县| 惠水县| 兴文县| 楚雄市| 固原市| 临夏县|