概述
Java在传统上感觉和硬件打交道的比较少,这部分工作用C语言的比较多。
但并不是说Java不具备这样的能力。
Sun就发布了Java和串口以及并口的开发包。但是在正常的搜索中只能找到Linux和Solaris版本的类库。
下面这个链接是Win32平台下的包,找了很久才找到。
http://javashoplm.sun.com/ECom/docs/Welcome.jsp?StoreId=22&PartDetailId=7235-javacomm-2.0-spec-oth-JSpec&SiteId=JSC&TransactionId=noreg
。
下面简单说一下使用的步骤。
1. 把下载包中的win32com.dll放到windowssystem32目录下,文档中说是放在jdk的bin目录下,但是会报错,我后来放在system32目录下解决此问题
2. 把comm.jar和javax.comm.properties这两个文件放在类路径中,注意要放在一起。文档上是要求放在jdk的lib目录中。
如果缺少javax.comm.properties文件,就找不到任何一个串口和并口
但并不是说Java不具备这样的能力。
Sun就发布了Java和串口以及并口的开发包。但是在正常的搜索中只能找到Linux和Solaris版本的类库。
下面这个链接是Win32平台下的包,找了很久才找到。
http://javashoplm.sun.com/ECom/docs/Welcome.jsp?StoreId=22&PartDetailId=7235-javacomm-2.0-spec-oth-JSpec&SiteId=JSC&TransactionId=noreg
。
下面简单说一下使用的步骤。
1. 把下载包中的win32com.dll放到windowssystem32目录下,文档中说是放在jdk的bin目录下,但是会报错,我后来放在system32目录下解决此问题
2. 把comm.jar和javax.comm.properties这两个文件放在类路径中,注意要放在一起。文档上是要求放在jdk的lib目录中。
如果缺少javax.comm.properties文件,就找不到任何一个串口和并口
portList = CommPortIdentifier.getPortIdentifiers();
/*不带参数的getPortIdentifiers方法获得一个枚举对象,该对象又包含了系统中管理每个端口的CommPortIdentifier对象。注意这里的端口不仅仅是指串口,也包括并口。这个方法还可以带参数。getPortIdentifiers(CommPort)获得与已经被应用程序打开的端口相对应的CommPortIdentifier对象。 getPortIdentifier(String portName)获取指定端口名(比如“COM1”)的CommPortIdentifier对象。*/
while (portList.hasMoreElements()) {
portId = (CommPortIdentifier) portList.nextElement();
if (portId.getPortType() == CommPortIdentifier.PORT_SERIAL)/*getPortType方法返回端口类型*/ {
if (portId.getName().equals("COM1"))/* 找Windows下的第一个串口*/ {
SimpleRead reader = new SimpleRead();
}
}
}
while (portList.hasMoreElements()) {
portId = (CommPortIdentifier) portList.nextElement();
if (portId.getPortType() == CommPortIdentifier.PORT_SERIAL)/*getPortType方法返回端口类型*/ {
if (portId.getName().equals("COM1"))/* 找Windows下的第一个串口*/ {
SimpleRead reader = new SimpleRead();
}
}
}
最后向大家推荐一个工具:Virtual Serial Port Driver XP4
这个工具可以在机器上虚拟一对相连接的串口。
这样在一台机器上不需要其他设备,就可以进行串口程序的测试、调试工作了。
评论
# re: Java串口并口程序编写 回复 更多评论
2007-05-18 21:25 by Long
win32com.dll 和 javax.comm.properties 是放在 jre 的 lib 下,而不是 jdk 的 lib 下,所以博主运行程序的时候会报错,另外,comm.jar和javax.comm.properties不必放在一起。
# re: Java串口并口程序编写 回复 更多评论
2007-05-19 10:28 by kamhung
javax.comm 3.0u1 早就出来了
http://www.sun.com/download/products.xml?id=43208d3d
http://www.sun.com/download/products.xml?id=43208d3d
# re: Java串口并口程序编写 回复 更多评论
2007-05-19 10:30 by 云自无心水自闲
@kamhung
3.0U1是for Linux 和 Solaris的
3.0U1是for Linux 和 Solaris的
# re: Java串口并口程序编写 回复 更多评论
2007-05-19 21:02 by Matthew Chen
推荐rxtx包,可以完美替代javax.comm,目前javax.comm在windows下的开发维护已经停止了,rxtx的旧版本支持在javax.comm-win32-2.0基础上的扩展,rxtx新版本支持对javax.comm的覆盖式支持,也就是说原来用javax.comm的把所有import javax.comm.*改成import gnu.io.*就可以正常使用了,其他只须相关的dll文件,不用properties文件,支持的端口类型也明显多了很多,请看:
http://rxtx.org/
两个库都可以在Eclipse下随项目跑,相信在纯项目中也可以做到。
看我的blog,里面有相关介绍 http://blog.csdn.net/djsl6071/category/296859.aspx
两个库都可以在Eclipse下随项目跑,相信在纯项目中也可以做到。
看我的blog,里面有相关介绍 http://blog.csdn.net/djsl6071/category/296859.aspx
# re: Java串口并口程序编写 回复 更多评论
2007-05-19 21:40 by 云自无心水自闲
@Matthew Chen
多谢!
多谢!
# re: Java串口并口程序编写 回复 更多评论
2007-07-05 14:21 by getmywish
大家好,现在使用jdk1.6和jdk1,2的目录格式不同(所以按照comm.jar帮助文件会报错nosuchportexception),我在两台win2000,p4 2.0 845 ,p3 1.2 815 上测试成功,win32com.dll jdk1.6.0bin
comm.jar: jdk1.6jrelibext 如果jcreator编程classpath:
c:program filesjavajdk1.6jrelibextcomm.jar
javax.comm.properties jdk1.6jrelib 我换了别的路径都不好用
而且不用配置路径。
comm.jar: jdk1.6jrelibext 如果jcreator编程classpath:
c:program filesjavajdk1.6jrelibextcomm.jar
javax.comm.properties jdk1.6jrelib 我换了别的路径都不好用
而且不用配置路径。
# re: Java串口并口程序编写[未登录] 回复 更多评论
2007-12-04 19:41 by benjamin
请问我在eclipse中按照如上配置运行成功,但是export jar文件后就出现exception:
Exception in thread "main" java.lang.NoClassDefFoundError: javax/comm/SerialPort
EventListener
at java.lang.ClassLoader.defineClass1(Native Method)
at java.lang.ClassLoader.defineClass(Unknown Source)
…………
应该是找不到那个dll。
现在我已经将dll都放到system32中了,但是还是出现如上的exception,请问这个如何解决呢?
请email联系我,benjamin9@126.com多谢了.
Exception in thread "main" java.lang.NoClassDefFoundError: javax/comm/SerialPort
EventListener
at java.lang.ClassLoader.defineClass1(Native Method)
at java.lang.ClassLoader.defineClass(Unknown Source)
…………
应该是找不到那个dll。
现在我已经将dll都放到system32中了,但是还是出现如上的exception,请问这个如何解决呢?
请email联系我,benjamin9@126.com多谢了.
# re: Java串口并口程序编写 回复 更多评论
2007-12-05 21:42 by usherlight
你在export的时候,复选了包括comm.jar的目录了吗?
# re: Java串口并口程序编写 回复 更多评论
2008-01-30 14:49 by 谭军
那个win32com.dll,comm.jar和javax.comm.properties 到底放在那里?
# re: Java串口并口程序编写 回复 更多评论
2008-01-31 10:11 by 谭军
大家好!版主!
我的javax.comm.* 始终报错!!
怎么办呀!!
我留下个QQ请!!多多指教
113800597
我的javax.comm.* 始终报错!!
怎么办呀!!
我留下个QQ请!!多多指教
113800597
# re: Java串口并口程序编写[未登录] 回复 更多评论
2008-02-01 19:40 by 云自无心水自闲
@谭军
1、win32com.dll应该放在jre的bin目录下,在我的机器上就是:D:Program FilesJavajre1.6.0_02bin
2、javax.comm.properties应该放在jre的lib目录下,在我的机器上就是
D:Program FilesJavajre1.6.0_02lib
3、comm.jar放在jre的libext目录下,在我的机器上就是D:Program FilesJavajre1.6.0_02libext
最后,你能贴一下,错误的详细信息吗?
1、win32com.dll应该放在jre的bin目录下,在我的机器上就是:D:Program FilesJavajre1.6.0_02bin
2、javax.comm.properties应该放在jre的lib目录下,在我的机器上就是
D:Program FilesJavajre1.6.0_02lib
3、comm.jar放在jre的libext目录下,在我的机器上就是D:Program FilesJavajre1.6.0_02libext
最后,你能贴一下,错误的详细信息吗?
# re: Java串口并口程序编写 回复 更多评论
2008-02-18 15:39 by plin.zhang
Hi 博主,我按照上述方法将win32com.dll和comm.jar,及javax.comm.properties放在相应的地方,可是Eclipse中的程序还是提示"javax.comm can't be resolved"。
用的Eclipse是 3.1.0版本,JDK是1.6.0
能帮忙解决下吗? 实在感谢。
plin134@163.com
谢谢!
用的Eclipse是 3.1.0版本,JDK是1.6.0
能帮忙解决下吗? 实在感谢。
plin134@163.com
谢谢!
# re: Java串口并口程序编写 回复 更多评论
2008-02-19 08:46 by usherlight
如果你是在eclipse里开发程序的话,需要把comm.jar添加到类路径中。项目属性->Java Build Path->Library->Add External Jar
# re: Java串口并口程序编写 回复 更多评论
2012-05-25 08:42 by 米谷
博主你好,我最近在做java串口调试,遇到了问题,读取串口数据时会乱码,出现小方框,而且按发送按钮发送数据要按N多次之后接收框才接收数据,而且是接收你N次发送的数据。这是怎么回事。我请教了以为前辈,可是他说java做不了硬件通讯的,只能做做串口软件界面兼调用底层C语言。
我想向博主确认一下,
1、是否真的不可以用java做串口调试,要辅以C语言嵌套才可以??
2、如果java可以做串口调试通讯部分,那,如何解决我上述的问题?
麻烦了。
留下我的邮箱:dongnamigu@126.com。
我想向博主确认一下,
1、是否真的不可以用java做串口调试,要辅以C语言嵌套才可以??
2、如果java可以做串口调试通讯部分,那,如何解决我上述的问题?
麻烦了。
留下我的邮箱:dongnamigu@126.com。
最后
以上就是粗心自行车为你收集整理的Java 串口问题的全部内容,希望文章能够帮你解决Java 串口问题所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复