串口编程问题

config_man 2010-03-11 02:14:15
程序运行总是报告如下异常:
javax.comm.PortInUseException: Port currently owned by Serial
at javax.comm.CommPortIdentifier.open(CommPortIdentifier.java:337)
at com.test.Test.<init>(Test.java:38)
at com.test.Test.main(Test.java:30)


Test.java类代码如下:

import java.io.*;
import java.util.*;
import javax.comm.*;

/**
* 读串口的例程
* @author zcj
*/

public class Test {
static CommPortIdentifier portId;
static Enumeration portList;// 枚举类
InputStream inputStream;
SerialPort serialPort;

public static void main(String[] args) {
//枚举出系统所有的RS232端口
portList = CommPortIdentifier.getPortIdentifiers();

while (portList.hasMoreElements()) {

portId = (CommPortIdentifier) portList.nextElement();
if (portId.getPortType() == CommPortIdentifier.PORT_SERIAL)
{
if (portId.getName().equals("COM1"))/* 找Windows下的第一个串口*/ {
//if (portId.getName().equals("/dev/term/a"))/* 找Unix-like系统下的第一个串口 */{
new Test().print();
}
}
}
}

public void print() {
try {
//获得串口对象
serialPort = (SerialPort) portId.open("TestApp", 2000);

// 获取端口的输入流对象
inputStream = serialPort.getInputStream();

//读取输入流
int ch;
StringBuffer sb = new StringBuffer();
while((ch=inputStream.read())>0){
sb.append((char)ch);
}
System.out.println("读取到的内容为:"+sb.toString());

}catch (Exception e) {
e.printStackTrace();
}
serialPort.close();
}
}
...全文
83 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
config_man 2010-03-11
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 liguang168 的回复:]
帮你测试过了。只要你把dll放入bin目录。把javax.comm.properties放入Lib目录。
把comm.jar放入ext目录就OK了。代码本身没有问题。
至于其它逻辑没看。如果有问题再提。
[/Quote]
呵呵,我的文件放的位置都是对的,你说的那些我之前都看到过的。呵呵。
不过现在问题已经解决了。是用ComTool这个软件工具测试的。
不知道电脑怎么回事,8005这个端口被占用了。
现在结贴,楼上的40分,1楼的10分。
liguang168 2010-03-11
  • 打赏
  • 举报
回复
帮你测试过了。只要你把dll放入bin目录。把javax.comm.properties放入Lib目录。
把comm.jar放入ext目录就OK了。代码本身没有问题。
至于其它逻辑没看。如果有问题再提。
liguang168 2010-03-11
  • 打赏
  • 举报
回复
你是一直都这样。还是现在才这样?
你的comm那些文件都放对地方了吗?我有一年多没有做Comm口项目了。
我以前也遇过很多类似问题。你先检查你的文件是否都放到对应的目录。
config_man 2010-03-11
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 pofate 的回复:]
异常的意思是 现在这个端口被占用了吧
头会遇到这类问题 帮顶
[/Quote]
嗯,是的。
异常是在下面这段代码处出现的:
serialPort = (SerialPort) portId.open("TestApp", 2000);

但是我不知道这地方有什么问题呢?
poFate 2010-03-11
  • 打赏
  • 举报
回复
异常的意思是 现在这个端口被占用了吧
头会遇到这类问题 帮顶

62,624

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧