首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > JAVA > Java Web开发 >

java串口通信

2013-01-20 
求教: java串口通信在用java进行串口通信操作时遇到下面问题Error loading SolarisSerial: java.lang.Unsa

求教: java串口通信
在用java进行串口通信操作时遇到下面问题
Error loading SolarisSerial: java.lang.UnsatisfiedLinkError: no SolarisSerialParallel in java.library.path
Caught java.lang.UnsatisfiedLinkError: com.sun.comm.SolarisDriver.readRegistrySerial(Ljava/util/Vector;Ljava/lang/String;)I while loading driver com.sun.comm.SolarisDriver
Error loading SolarisSerial: java.lang.UnsatisfiedLinkError: no SolarisSerialParallel in java.library.path
Caught java.lang.UnsatisfiedLinkError: com.sun.comm.SolarisDriver.readRegistrySerial(Ljava/util/Vector;Ljava/lang/String;)I while loading driver com.sun.comm.SolarisDriver
 
怎么解决?这三个文件怎么配置(win32com.dll    comm.jar   javax.comm.properties)
我java的安装路径D:\Program Files\Java   Java下有两个文件夹java串口通信

我的环境变量 
 CLASSPATH=.;%JAVA_HOME%\lib;%JAVA_HOME%\lib\tools.jar;%tomcat_home%\lib\servlet-api.jar;%JAVA_HOME%\jre\lib\ext\comm.jar
JAVA_HOME=D:\Program Files\Java\jdk1.6.0_10
PATH=%JAVA_HOME%\bin;%JAVA_HOME%\jre\bin;
[解决办法]
读串口的例程
import java.io.*;
import java.util.*;
import javax.comm.*;

public class SimpleRead implements Runnable, SerialPortEventListener {

    static CommPortIdentifier portId;
    static Enumeration portList;//枚举类

    InputStream inputStream;
    SerialPort serialPort;
    Thread readThread;

    public static void main(String[] args) {

        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下的第一个串口*/ {
                if (portId.getName().equals("/dev/term/a"))/*找Unix-like系统下的第一个串口*/ {
                    SimpleRead reader = new SimpleRead();
                }
            }
        }
    }

    public SimpleRead() {
        try {
            serialPort = (SerialPort) portId.open("SimpleReadApp", 2000);/* open方法打开通讯端口,获得一个CommPort对象。它使程序独占端口。如果端口正被其他应用程序占用,将使用CommPortOwnershipListener事件机制,传递一个PORT_OWNERSHIP_REQUESTED事件。每个端口都关联一个InputStream 何一个OutputStream。如果端口是用open方法打开的,那么任何的getInputStream都将返回相同的数据流对象,除非有close被调用。有两个参数,第一个为应用程序名;第二个参数是在端口打开时阻塞等待的毫秒数。*/


        } catch (PortInUseException e) {}
        try {
            inputStream = serialPort.getInputStream();/*获取端口的输入流对象*/
        } catch (IOException e) {}
    try {
            serialPort.addEventListener(this);/*注册一个SerialPortEventListener事件来监听串口事件*/
    } catch (TooManyListenersException e) {}

        serialPort.notifyOnDataAvailable(true);/*数据可用*/

        try {
            serialPort.setSerialPortParams(9600,
                SerialPort.DATABITS_8,
                SerialPort.STOPBITS_1,
                SerialPort.PARITY_NONE);/*设置串口初始化参数,依次是波特率,数据位,停止位和校验*/
        } catch (UnsupportedCommOperationException e) {}

        readThread = new Thread(this);
        readThread.start();
    }

    public void run() {
        try {
            Thread.sleep(20000);
        } catch (InterruptedException e) {}
    }

[解决办法]
java串口通信我以前搞过,建议你不要用comm,使用RXTXcomm.jar比较好。这是我写的一篇关于串口通讯的文章,你可以参考一下
http://xiaoliouc.iteye.com/admin/blogs/1638730
[解决办法]
针对你这个问题,原因可能是你的代码使用的是myeclipse自带的jre,当然找不到driver了,你需要把相应的dll以及properties文件放到myclipse的jre下
[解决办法]
import java.util.*;
import javax.comm.*;
public class PortTest
{
static CommPortIdentifier portId;
static Enumeration portList;
public static void main(String[] args){
portList=CommPortIdentifier.getPortIdentifiers();
while(portList.hasMoreElements())
{
portId=(CommPortIdentifier)portList.nextElement();//强制转换为通信端口类型。
if(portId.getPortType()==CommPortIdentifier.PORT_SERIAL)//端口为串口类型
{
System.out.println(portId.getName());
}
}
}
}
[解决办法]

引用:
不好意思  现在才回 还是不行  那三个文件的配置还是不管用

照着我的做,怎么不行了

热点排行