自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

基于JavaFX開發(fā)的查找客戶端可用串口列表

開發(fā) 后端
最近看到很多關(guān)于JavaFX開發(fā)的文章,覺得JavaFX開發(fā)中針對以前開發(fā)客戶端程序的不便的確有些提高,所以自己也試著開發(fā)個小應(yīng)用,看看javafx是否能在以后的工作中使用。

一、開發(fā)目的

基于B/S結(jié)構(gòu),在客戶端查找可用的串口列表。

二、開發(fā)環(huán)境

NetBeans IDE 6.5 for JavaFX 1.0,tomcat5,rxtx 2.1-7r2

三、相關(guān)資源

1、java串口操作框架,下載 rxtx 2.1-7r2。

2、了解串口操作,參考http://rxtx.qbang.org/wiki/index.php/Examples

3、開發(fā)工具,下載 NetBeans IDE 6.5 for JavaFX 1.0

4、了解JavaFX,參考http://developers.sun.com.cn/JavaFX/docs/tutorials/

其他資源略

四、編碼

1、首先開發(fā)串口操作程序DiscoveringAvailablePorts.java

  1. public static List getAvailableSerialPortsName() {   
  2. List result = new ArrayList();   
  3. Enumeration thePorts = CommPortIdentifier.getPortIdentifiers();   
  4. while (thePorts.hasMoreElements()) {   
  5. CommPortIdentifier com = (CommPortIdentifier) thePorts.nextElement();   
  6. switch (com.getPortType()) {   
  7. case CommPortIdentifier.PORT_SERIAL:   
  8. try {   
  9. CommPort thePort = com.open("CommUtil", 50);   
  10. thePort.close();   
  11. result.add(com.getName());   
  12. } catch (PortInUseException e) {   
  13. System.out.println("Port, " + com.getName() + ", is in use.");   
  14. } catch (Exception e) {   
  15. System.err.println("Failed to open port " + com.getName());   
  16. e.printStackTrace();   
  17. }   
  18. }   
  19. }   
  20. return result;   
  21. }  

注:RXTXcomm.jar 拷貝到: %JAVA_HOME%"jre"lib"ext
rxtxSerial.dll 拷貝到: %JAVA_HOME%"jre"bin

并在開發(fā)的工程中引入RXTXcomm.jar

2、然后開發(fā)界面程序SerialConfig.fx

  1. var portNames =   
  2. new DiscoveringAvailablePorts().getAvailableSerialPortsName();   
  3.  
  4. var label = SwingLabel{text: "serial port: "};   
  5.  
  6. var combobox = SwingComboBox{   
  7. width: 100   
  8. items:[   
  9. SwingComboBoxItem{   
  10. text: "Please select" },   
  11. for (idx in portNames) {   
  12. SwingComboBoxItem{   
  13. text:idx.toString()}   
  14. }   
  15. ]   
  16. selectedIndex: 0};   
  17.  
  18. var button = SwingButton{text: "Save"};   
  19.  
  20. Stage {   
  21. title: "Components"   
  22. width: 344   
  23. height: 240   
  24. visible: true   
  25. scene: Scene{   
  26. fill: Color.CORNSILK   
  27. content: VBox{   
  28. translateX: 10   
  29. translateY: 30   
  30. spacing: 20   
  31. content:[   
  32. HBox{   
  33. spacing: 10   
  34. content:[label,combobox,HBox{ translateX:40 content:[button]}]   
  35. }   
  36. ]   
  37. }   
  38. }   
  39. }  

注:開發(fā)上面的程序時候,在NB中建立JavaFX項目,名稱JavaFXTutorial。


3、***建立一個最簡單的web工程,并編寫頁面程序index.jsp。

  1. <body>   
  2. This is my JSP page. <br>   
  3. <script src="http://dl.JavaFX.com/dtfx.js"></script>   
  4. <script>   
  5. JavaFX(   
  6. {   
  7. archive: "<%=path%>/JavaFXTutorial.jar",   
  8. width: 400,   
  9. height: 200,   
  10. code: "com.howelltech.SerialConfig",   
  11. name: "JavaFXTutorial"   
  12. }   
  13. );   
  14. </script>   
  15. </body>  

五、部署

1、NB項目屬性中,在Run配置中選擇Run in Browser;在Application配置中選擇Self Signed Jar,其他可選。

2、 NB項目目錄中,在dist目錄中,存在JavaFXTutorial.html、JavaFXTutorial.jar、 JavaFXTutorial_browser.jnlp三個文件和lib目錄包括RXTXcomm.jar一個文件。把此目錄中所有文件拷貝到剛才建立好的web工程中,與index.jsp同路徑。

六、測試

1、在服務(wù)器端,如果不啟動tomcat可以直接執(zhí)行JavaFXTutorial.html既能看到效果。如果啟動tomcat,那么必須修改JavaFXTutorial_browser.jnlp中的端口號,要與tomcat使用的一致。

2、在客戶端,必須拷貝rxtxSerial.dll到 %JRE_HOME%"bin下,然后直接訪問服務(wù)器鏈接就可以。

開發(fā)完成后,總體感覺JavaFX比applet要方便,無論是編碼還是部署。但是開發(fā)JavaFX的時候也有很多不方便的地方,比如目前的IDE不支持圖形化開發(fā),雖然支持一些控件的托拽,但終歸是代碼不夠直觀;另外,JavaFX程序發(fā)布后在客戶端運行得還是有些慢。終歸是個新技術(shù),還需要慢慢適應(yīng)啊。

另外,遺留下來兩個問題,看看大家有什么好辦法。

1、關(guān)于客戶端需要拷貝rxtxSerial.dll問題,有沒有更加方便的方法。

2、JavaFX項目打包問題,有沒有更好的方法,比如打個包,其他頁面就可以直接調(diào)用。

【編輯推薦】

  1. 主流RIA技術(shù)JavaFX、Flex和SilverLight、AJAX比較
  2. 使用JavaFx創(chuàng)建可拖動的Applet示例
  3. JavaFX和Java之間的互操作性
  4. JavaFX對Java開發(fā)者到底意味著什么
  5. RIA之爭 JavaFX是否能后來居上?
責(zé)任編輯:彭凡 來源: javaeye
相關(guān)推薦

2025-01-07 08:10:00

CefSharpWinformWindows

2009-06-12 19:18:08

REST客戶端框架JavaScript

2011-08-15 14:09:59

JavaHBase

2011-04-22 10:34:09

SimpleFrame

2012-09-19 14:27:16

Worklight

2009-10-20 14:47:13

Google Wave

2009-03-18 14:44:34

LinuxqTwitterTwitter

2018-03-28 09:04:25

Oracle Java技術(shù)

2012-08-20 09:57:11

JavaiQQ開源QQ

2021-09-22 15:46:29

虛擬桌面瘦客戶端胖客戶端

2009-12-25 15:12:01

WPF平臺

2013-07-22 14:29:35

iOS開發(fā)ASIHTTPRequ

2024-01-17 19:05:44

mget優(yōu)化數(shù)據(jù)庫

2011-08-17 10:10:59

2011-03-21 14:53:36

Nagios監(jiān)控Linux

2011-04-06 14:24:20

Nagios監(jiān)控Linux

2023-02-16 08:00:00

數(shù)據(jù)流客戶端開發(fā)數(shù)據(jù)集

2010-05-31 10:11:32

瘦客戶端

2011-10-26 13:17:05

2013-07-04 10:01:04

點贊
收藏

51CTO技術(shù)棧公眾號