歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux編程 >> Linux編程 >> 關於Java串口通信

關於Java串口通信

日期:2017/3/1 10:14:53   编辑:Linux編程

之前在搞關於Java串口通信的東西,雖然最後因為硬件的原因沒有試驗成功,但在這裡分享一下經驗,簡單記錄一下。
普及一下串口通信:

串口通信(Serial Communication), 是指外設和計算機間,通過數據信號線 、地線、控制線等,按位進行傳輸數據的一種通訊方式。這種通信方式使用的數據線少,在遠距離通信中可以節約通信成本,但其傳輸速度比並行傳輸低。
通俗的說,就是利用電腦上的串口來實現打電話或者發短信等等。

首先要下載一個javacomm20-win32.zip 。解壓之後會有好多文件,以及他的一些samples,選擇其中的三個,javax.comm.properties,win32com.dll,comm.jar。
然後:
1.把javax.comm.properties文件拷貝到Java運行時環境的lib目錄中,即:
%JAVA_HOME%\lib\javax.comm.properties
%JAVA_HOME%\jre\lib\javax.comm.properties
2.把win32com.dll拷貝到C:\windows\system32\ 和 %JAVA_HOME%\jre\bin\下
3.把comm.jar放到Java運行時環境的lib目錄中,即%JAVA_HOME%\lib\comm.jar
4.在"環境變量"的CLASSPATH中添加comm.jar,如:%JAVA_HOME%\lib\comm.jar;

至於第二步的拷貝到system32下邊,這個可以根據實際情況來看,我電腦上沒有拷貝,一樣能夠成功,同樣第四步也一樣,如果運行不通過,那就是找不到,就要添加classpath了,如果能通過,就不需要麻煩了。

以上配置工作弄好之後,就可以寫程序了,在Eclipse裡導入comm.jar,剩下的就是程序問題了,下邊列出一個簡單的小程序。

列出電腦上所有可用串口小程序:

Enumeration en = CommPortIdentifier.getPortIdentifiers();
CommPortIdentifier portId;
while (en.hasMoreElements())
{
portId = (CommPortIdentifier) en.nextElement();
if (portId.getPortType() == CommPortIdentifier.PORT_SERIAL)
{
System.out.println(portId.getName());
}
}

以上代碼可以列出電腦上所有的可用串口,前提是電腦上是有串口的,如果沒有的話,會出現異常,配置就會出錯,但是有的時候上邊這些也會異常,之前也是弄了好久沒有解決掉,後來試驗了很多次才發現是因為需要驅動程序,但有的電腦需要,有的不需要,視情況而定。

CommDriver cd=(CommDriver)Class.forName( "com.sun.comm.Win32Driver" ).newInstance();
cd.initialize();

這是驅動程序,但必須針對的是windows系統,然後加這個程序在串口程序前邊,就可以正常運行了。
如果能正常列出串口,那麼編寫串口程序就指日可待了。

這只是一個初步了解的貼,如果想詳細了解的話,可以去網上詳細查看一下,也可以找我來討論,我寫了一個串口之間發送數據的程序,利用串口監聽工具能夠監聽到數據了,但是還沒有兩個機器測試。由於代碼比較長,這裡就不往上面粘貼了,如果誰有興趣,可以來我這拷貝一下。

這個是簡單了解一下,如果有時間了我會寫一個比較詳細的文檔,與大家分享一下,如果誰有比較好的建議,也可以提出來。

Copyright © Linux教程網 All Rights Reserved