亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 學院 > 開發設計 > 正文

Palm J2ME串行通訊程序編寫與調試

2019-11-18 12:46:40
字體:
來源:轉載
供稿:網友

  Palm是3Com公司的產品,其操作系統PalmOS是一種32位的嵌入式操作系統。Palm硬件提供了標準串行通訊接口(RS232接口)和紅外線傳輸接口。利用它可以方便地與其它外部設備通訊、傳輸數據。目前3Com公司與Sun公司積極合作,已經提供了非常完善的嵌入式java(J2ME),并提供了CLDC1.03和Palm相應的配置?;赑almOS平臺的Java虛擬機為KVM,此虛擬機中已經提供了完善的對Palm串行通訊口讀寫的SDK程序開發包。利用該開發包可以方便地開發Palm與外圍設備的串行通訊的應用程序。
  
  串行通訊歷來是計算機軟件界經久不衰的應用與研究內容之一。計算機串行通訊系統因為利用的外圍硬件少,通常傳輸距離為15米,假如配合光電轉換器,可將傳輸距離延長至若干公里。假如通訊雙方使用Modem,再配合電話線,就可以使在任意位置的通訊雙方實現串行通訊。串行通訊被廣泛地應用在工業數據采集、IC卡讀寫等領域。由于Palm程序的編寫與調試步驟與臺式PC機不同,所以一些與Palm串行通訊的設備必須拿到室外才能正常使用。如GPS的接收機、GPS的全球定位系統、GPS的接收設備等,它們必須在室外,并且必須在較開闊的位置才能接收到足夠的衛星數目,GPS接收機才能解算出當前的位置。然后,需要通過GPS接收機的串行通訊口將解算出的結果按照NMEA0183協議將數據發送出去,并實現定位。這就使得Palm串行通訊程序調試起來非常復雜。
  
  筆者從事J2ME嵌入式程序開發1年有余,找到了一套較高效的編寫和調試Palm J2ME嵌入式程序的方法,以下將具體介紹。
  
  Palm串行通訊應用程序的開發步驟
  
  通常Palm應用程序的開發是利用臺式PC編寫,編寫后編譯成Palm應用程序,然后將其導入到臺式PC的Palm模擬器中運行調試。程序調試完成后,通過臺式PC與Palm的同步軟件(HotSync)導入到真正的Palm硬件,從而實現應用程序在Palm硬件上的運行(見圖1)。
   Palm J2ME串行通訊程序編寫與調試(圖一)
  圖1 Palm應用程序開發步驟UML活動圖
  
  Palm串行通訊的硬件環境
  
  由于Palm串行通訊涉及到對硬件的操作,所以單純地利用Palm模擬器無法調試Palm串行通訊程序,必須采用軟件與硬件相結合的方法才可以。方法如下:
  
  首先將Palm模擬器的串行通訊口映射到臺式PC的物理串行通訊口。具體操作為鼠標右擊Palm模擬器,選擇Setting,然后選擇PRoperties,再選擇Serial Port,最后選擇Com1。注重此串行通訊口設備必須未被其它設備使用。隨后使用9針的D型串行通訊接口將PC物理通訊端口與Palm相通訊的設備連接一起。
  
  當在同一臺PC上完成Palm模擬器與PC串行通訊時,需要制作一根Null Modem串行通訊電纜,具體制作可參照相關串行通訊資料。
  
  串行通訊輔助調試軟件
  
  終端仿真程序是Windows 9x/NT/2000自帶的應用軟件,是功能強大的串行通訊輔助調試軟件,利用它可以方便地完成PC計算機之間的串行通訊。我們在此介紹終端仿真程序,并不是單純地為了介紹Windows系統自帶的軟件,而主要是為了調試串行通訊程序。
  
  終端仿真程序位于Windows工具“開始-程序-附件-通訊-超級終端”。假如系統中尚未安裝超級終端程序,請選擇“控制面板-添加刪除程序”,選擇Windows,選擇通訊,選中超級終端復選項,然后按照提示插入Windows 9x/NT/2000系統安裝光盤,完成終端仿真程序的安裝。
  
  啟動超級終端程序Hpertrm.exe,選定串行通訊端口(Com1或Com2),然后設定好通訊速率與校驗位。例如串行通訊速率為9600波特,數據位為8位,無奇偶校驗,停止位為1位(見圖2、圖3)。
   Palm J2ME串行通訊程序編寫與調試(圖二)
  圖2 超級終端串行通訊端口設定
   Palm J2ME串行通訊程序編寫與調試(圖三)
  圖3 超級終端串行通訊速率設定
  Palm J2ME串行通訊程序設計舉例
  
  一般來說,串行通訊的雙方都必須遵守相同的通訊數據格式,編寫各自的通訊程序。由于通訊程序的編寫涉及到通訊的雙方,所以任意一方通訊程序的錯誤都將導致通訊的失敗,也將給編寫和調試通訊帶來許多困難。筆者通過反復試驗發現,利用Windows終端仿真通訊程序模擬通訊雙方中一方,然后調試通訊雙方中另一方與Windows終端仿真通訊,當通訊兩方都與Windows終端仿真調試成功后,即可實現它們之間的串行通訊了。這樣可以最大限度地減少串行通訊程序的調試工作量,提高程序開發速度(見圖4)。假設目前要設計兩個串行通訊系統,分別是PC機顯示Palm數據系統和Palm顯示PC端數據系統,它們的具體實現如下:
   Palm J2ME串行通訊程序編寫與調試(圖四)
  圖4 串行通訊UML關系圖
  
  PC機顯示Palm數據系統
  
  將Palm的數據庫內容通過串行通訊,按照串行通訊9600波特速率、數據位為8位、無奇偶校驗、停止位為1位傳送到PC計算機,并顯示。此系統涉及到Palm端程序和PC計算機端程序。
  
  1. Palm端程序(見圖5)
   Palm J2ME串行通訊程序編寫與調試(圖五)
  圖5 Palm端程序UML狀態圖
  
  Palm端程序主要分三步:
  
  (1)打開Palm內部數據庫,設Palm內部的數據庫的標識為:
  
  dBType=gPSD,creatorID=6657;
  static int dbType = 0x67707364; // gpsd
  static int dbCreator = 0x36363537; // '6657'
  Database db = new Database(dbType, dbCreator, Database.READONLY);
  ......
  
  由于不涉及到對數據庫的寫操作,所以這里以只讀的方式打開Palm內部數據庫。
  
 ?。?)打開Palm串行通訊端口,構造serialPort對象,使用serialPort.open方法打開串口。
  
  Protocol serialPort = new Protocol();
  serialPort.open("0;baudrate=9600;bitsperchar=8;stopbits=1;parity=none;autorts=off;autocts=off;blocking=off",1, true);......
  
  (3)發送數據,通過serialPort對象的openOutputStream()方法,獲取OutputStream數據流,并賦給os對象,代碼為OutputStream os = serialPort.openOutputStream()。然后,讀取Palm內部數據庫gpsd的每條記錄內容,將內容按字節通過串行通訊傳送到PC,并通過os.write(),將數據寫入串口。主要代碼為:
  
  byte [] rnl={13,10};
  for (int i=0;i   {
   Graphics.getGraphics().drawString("send record No."+i,30,100);
   os.write(db.getRecord(i));
   os.write(rnl);
   }
  os.flush();
  ......
  
  假如串行通訊數據傳輸完畢,關閉串行通訊端口和Palm內部數據庫。代碼如下:
  
  System.out.println("Send finished!");
  os.close();
  System.out.println("connection closed.");
  ......
  
  將此程序編譯、安全校驗、封裝成Palm格式的Prc應用程序,然后傳送到Palm模擬器上。將Palm模擬器的串行通訊端口映射為PC的Com1通訊端口,使用Windows自帶的終端仿真程序模擬PC來完成串行通信。啟動Windows自帶的終端仿真程序,設置其使用端口為Com2,設定串行通訊速率為9600波特、數據位為8位、無奇偶校驗、停止位為1位,然后使用Null Modem串行通訊電纜將PC的Com1和Com2端口物理連接。
  運行上述Palm程序可以發現,Palm模擬器通過串行通訊將內部數據傳送到Windows自帶的終端仿真程序的對話窗口中了。由于該對話窗口只能保存500行的對話內容,所以假如大于500行,可以選擇Windows超級終端的“傳送”菜單,選擇捕捉文本,將對話內容直接保存到一個標準的文本文件中。
  
  2. PC端串行程序(見圖6)
  Palm J2ME串行通訊程序編寫與調試(圖六)
  圖6 PC斷程序UML狀態圖
  
  可以將PC端串行程序看為類似超級終端的應用程序。PC端串行程序完成的工作主要有,按照設定的傳輸速率(必須與Palm端的串行通訊參數一致)打開串行通訊端口,然后啟動線程,并且監聽串行通訊端口數據。接收到數據后,將數據顯示。具體程序步驟如下:
  
 ?。?)安裝好Sun Java 串行通訊SDK類庫,在程序中引入相應的類,代碼為import javax.comm.*。然后采用循環枚舉的方法,判定讀取PC機上的串行通訊口的狀態(此處通訊口是Com2),代碼如下:
  
  static Enumeration portList;
  portList = CommPortIdentifier .getPortIdentifiers();
  while (portList.hasMoreElements()) {
   portId = (CommPortIdentifier) portList.nextElement();
   if (portId.getPortType() == CommPortIdentifier.PORT_SERIAL) {
   if (portId.getName().equals("COM2")) {
  Reader reader = new Reader();
   }
  .....
  
 ?。?)打開串口,獲取串行通訊數據流,代碼如下:
  
  public Reader() {
   try {
   serialPort = (SerialPort) portId.open("Li", 2000);
   } catch (PortInUseException e) {}
   try {
   inputStream = serialPort.getInputStream();
   } catch (IOException e) {}
  
  (3)在serialPortEventListener事件中,判定是否串口有數據到來,假如有就將數據顯示出來,代碼如下:
  
  public void serialEvent(SerialPortEvent event) {
   switch(event.getEventType()) {
   case SerialPortEvent.BI:
   case SerialPortEvent.OE:
   case SerialPortEvent.FE:
   case SerialPortEvent.PE:
   case SerialPortEvent.CD:
   case SerialPo

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
亚洲精品中文字幕有码专区| 日韩免费观看av| 精品久久香蕉国产线看观看亚洲| 欧美成人免费小视频| 久久精品免费播放| 国产欧美 在线欧美| 日韩一级裸体免费视频| 日韩中文字幕亚洲| 日本久久久久久久久| 欧美做受高潮电影o| 欧美在线视频免费观看| 亚洲国产精品电影| 欧美日韩国产va另类| 久久福利视频网| 亚洲自拍另类欧美丝袜| 国产精品丝袜久久久久久高清| 欧美高跟鞋交xxxxxhd| 日韩精品极品在线观看播放免费视频| 欧美日韩国产区| 91久久在线视频| 亚洲欧美三级在线| 日韩一区二区三区xxxx| 成人激情视频在线| 亚洲精品国精品久久99热| 日韩欧美在线免费观看| 欧美极品美女视频网站在线观看免费| 国产成人一区二区三区小说| 热久久美女精品天天吊色| 日本成人精品在线| 国产一区二区丝袜高跟鞋图片| 久久久久久国产精品| 欧美国产日韩中文字幕在线| 久久久久久久久久亚洲| 亚洲一区美女视频在线观看免费| 九九综合九九综合| 欧美日韩另类在线| 秋霞av国产精品一区| 久久久久国产一区二区三区| 日韩欧美在线观看视频| 欧美高清在线播放| 日韩欧美成人区| 亚洲人成电影网| 亚洲最新在线视频| 精品中文字幕视频| 久久久久成人精品| 亚洲一区二区三区香蕉| 日韩在线视频二区| 亚洲视频一区二区三区| 欧洲一区二区视频| 色偷偷偷综合中文字幕;dd| 欧美亚洲激情在线| 国产精品aaa| 久久精品国产99国产精品澳门| 精品亚洲一区二区三区四区五区| 乱亲女秽乱长久久久| 亚洲精品mp4| 成人精品久久一区二区三区| 国模私拍一区二区三区| 亚洲综合在线播放| 久久91超碰青草是什么| 精品欧美激情精品一区| 欧美性xxxx极品高清hd直播| 久久久国产精品一区| 国产91成人在在线播放| 国产91成人video| 日韩欧美在线第一页| 91av在线免费观看| 91国产精品视频在线| 成人在线免费观看视视频| 亚洲精品综合久久中文字幕| 欧美亚洲成人xxx| 亚洲欧美国内爽妇网| 日韩一区二区三区在线播放| 日韩精品亚洲视频| 91精品久久久久久久久中文字幕| 日韩精品视频在线观看免费| 欧美性一区二区三区| 成人免费视频xnxx.com| 91热福利电影| 日韩在线免费视频| 日韩av一区二区在线观看| 日韩av电影手机在线| 亚洲国内精品在线| 亚洲国产日韩欧美在线图片| 国产精品私拍pans大尺度在线| 国产精品视频资源| 日韩高清中文字幕| 69久久夜色精品国产69乱青草| 精品欧美aⅴ在线网站| 亚洲激情久久久| 久久国产精品偷| 国产精品久久久久影院日本| 乱亲女秽乱长久久久| 成人久久一区二区三区| 国产亚洲欧美另类中文| 国产亚洲视频中文字幕视频| 精品国产一区av| 97国产真实伦对白精彩视频8| 亚洲欧洲免费视频| 久久久久久久国产精品视频| 亚洲人成网站在线播| 亚洲91精品在线| 国产午夜精品视频| 伊人亚洲福利一区二区三区| 亚洲人成网站999久久久综合| 欧美片一区二区三区| 亚洲永久在线观看| 精品久久久国产精品999| 欧美性高潮床叫视频| 欧美高清在线视频观看不卡| 欧美国产极速在线| 国产成人精品在线| 性色av一区二区三区免费| 亚洲在线第一页| 成人免费直播live| 91高清免费在线观看| 日韩av综合网站| 亚洲美女性视频| 午夜精品一区二区三区在线| 久久精品国产96久久久香蕉| 亚洲精品久久久久久久久久久久| 5566成人精品视频免费| 亚洲国产精品推荐| 精品久久久久久亚洲国产300| 日韩av电影在线播放| 日韩一区二区福利| www.精品av.com| 成人精品久久av网站| 欧美最猛性xxxxx(亚洲精品)| 欧美做爰性生交视频| 欧美一级高清免费| 成人性教育视频在线观看| 国产在线不卡精品| 青草成人免费视频| 欧美精品videos| 性日韩欧美在线视频| 久久久久久久久久久免费精品| 欧美福利视频在线| 日本精品免费一区二区三区| 欧美日韩国产在线看| 国产激情久久久| 国产精品久久久久久久app| 亚洲影院色在线观看免费| 国产精品高潮呻吟久久av无限| 精品视频在线观看日韩| 欧美夫妻性视频| 亚洲一区二区中文字幕| 欧美激情亚洲综合一区| 欧美日韩午夜视频在线观看| 日韩经典中文字幕在线观看| 亚洲日韩中文字幕| 成人综合网网址| 黄色成人av在线| 日韩久久精品成人| 欧美日韩爱爱视频| 亚洲精品国产精品国自产在线| 欧美性黄网官网| 亚洲电影第1页| 亚洲老头老太hd| 日韩av在线看| 欧美激情a∨在线视频播放| 免费av一区二区| 亚洲第一中文字幕| 欧美成人一二三|