gpt4 book ai didi

java - 我需要帮助使用 ftdi USB 转串行电缆向串行端口写入/从串行端口读取

转载 作者:太空宇宙 更新时间:2023-11-04 12:02:33 25 4
gpt4 key购买 nike

我想先写入串行端口。为此,我使用 USB 转串行 FTDI 电缆。该电缆连接至 COM4。运行 Windows 7 64 位

a) 使用 RXTX 项目。 http://rxtx.qbang.org/wiki/index.php/Main_Page

利用 RXTX我尝试按照这些说明进行操作

  1. 下载 rxtx-2.1-7-bins-r2.zip
  2. 解压
  3. 将 rxtxSerial.dll 复制到 c:\program files\java\jre-version\bin 目录
  4. 将 RXTXcomm.jar 复制到 c:\program files\java\jre-version\lib\ext dir
  5. 将所有引用从“javax.comm”更改为“gnu.io”
  6. 重新编译

这是我的代码:

/*
* To change this license header, choose License Headers in Project Properties.
* To change this template file, choose Tools | Templates
* and open the template in the editor.
*/
package twowayserialcomm;

/**
*
* @author HP
*/

import java.io.InputStream;
import java.io.OutputStream;
import gnu.io.SerialPort;
import gnu.io.CommPortIdentifier;
import gnu.io.CommPort;

public class TwoWaySerialComm {

/**
* @param args the command line arguments
*
*/
void connect( String portName ) throws Exception {
CommPortIdentifier portIdentifier = CommPortIdentifier.getPortIdentifier( portName );

if( portIdentifier.isCurrentlyOwned() ) {
System.out.println( "Error: Port is currently in use" );
} else {
int timeout = 10000;
CommPort commPort = portIdentifier.open( this.getClass().getName(), timeout );

if( commPort instanceof SerialPort ) {
SerialPort serialPort = ( SerialPort )commPort;
serialPort.setSerialPortParams( 9600,
SerialPort.DATABITS_8,
SerialPort.STOPBITS_1,
SerialPort.PARITY_NONE );

//InputStream in = serialPort.getInputStream();
OutputStream outputStream = serialPort.getOutputStream();
outputStream.write( 53 );
//outputStream.write( 1 );
//outputStream.write( 20 );
//outputStream.write( 0 );
//outputStream.write( 83 );

//CommPort port = serialPort;
System.out.println( "Write done" );
//( new Thread( new SerialReader( in,port ) ) ).start();
} else {
System.out.println( "Error: Only serial ports are handled by this example." );
}
}
}
public static void main(String[] args) {
try {
TwoWaySerialComm alex = new TwoWaySerialComm();
//( new TwoWaySerialComm() ).connect( "COM4" );
alex.connect("COM4");
} catch( Exception e ) {
e.printStackTrace();
}
}
}

运行时:

run:
java.lang.UnsatisfiedLinkError: no rxtxSerial in java.library.path thrown while loading gnu.io.RXTXCommDriver
Exception in thread "main" java.lang.UnsatisfiedLinkError: no rxtxSerial in java.library.path
at java.lang.ClassLoader.loadLibrary(ClassLoader.java:1867)
at java.lang.Runtime.loadLibrary0(Runtime.java:870)
at java.lang.System.loadLibrary(System.java:1122)
at gnu.io.CommPortIdentifier.<clinit>(CommPortIdentifier.java:83)
at twowayserialcomm.TwoWaySerialComm.connect(TwoWaySerialComm.java:26)
at twowayserialcomm.TwoWaySerialComm.main(TwoWaySerialComm.java:61)
C:\Users\HP\AppData\Local\NetBeans\Cache\8.1\executor-snippets\run.xml:53: Java returned: 1
BUILD FAILED (total time: 1 second)

b) 通过使用 javax.comm。图书馆这样做时我遇到了以下错误

run:
javax.comm.NoSuchPortException
at javax.comm.CommPortIdentifier.getPortIdentifier(CommPortIdentifier.java:105)
at twowayserialcomm.TwoWaySerialComm.connect(TwoWaySerialComm.java:26)
at twowayserialcomm.TwoWaySerialComm.main(TwoWaySerialComm.java:61)

这是来自 netbeans 的项目窗口

串口Java

enter image description here

最佳答案

您收到的错误意味着在 java.library.path 中找不到 dll,因此您需要将系统属性 java.library.path 设置为包含该库的文件夹对应的路径,方法是将 -Djava.library.path="C:\path\to\your\dll" 添加为 VM 选项

有关 how to set the path to a dll in NetBeans 的更多详细信息

关于java - 我需要帮助使用 ftdi USB 转串行电缆向串行端口写入/从串行端口读取,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40763537/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com