关于Java串口通信


之前在搞关于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系统,然后加这个程序在串口程序前边,就可以正常运行了。
如果能正常列出串口,那么编写串口程序就指日可待了。

这只是一个初步了解的贴,如果想详细了解的话,可以去网上详细查看一下,也可以找我来讨论,我写了一个串口之间发送数据的程序,利用串口监听工具能够监听到数据了,但是还没有两个机器测试。由于代码比较长,这里就不往上面粘贴了,如果谁有兴趣,可以来我这拷贝一下。

这个是简单了解一下,如果有时间了我会写一个比较详细的文档,与大家分享一下,如果谁有比较好的建议,也可以提出来。

相关内容