RXTX如何从com口读取
嗨,我有这样的东西
package compot;
import java.util.Enumeration;
import gnu.io.*;
public class core {
private static SerialPort p;
/**
* @param args
*/
public static void main(String[] args)
{
Enumeration ports = CommPortIdentifier.getPortIdentifiers();
System.out.println("start");
while(ports.hasMoreElements())
{
CommPortIdentifier port = (CommPortIdentifier) ports.nextElement();
System.out.print(port.getName() + " -> " + port.getCurrentOwner() + " -> ");
switch(port.getPortType())
{
case CommPortIdentifier.PORT_PARALLEL:
System.out.println("parell");
break;
case CommPortIdentifier.PORT_SERIAL:
//System.out.println("serial");
try {
p = (SerialPort) port.open("core", 1000);
int baudRate = 57600; // 57600bps
p.setSerialPortParams(
baudRate,
SerialPort.DATABITS_8,
SerialPort.STOPBITS_1,
SerialPort.PARITY_NONE);
} catch (PortInUseException e) {
System.out.println(e.getMessage());
} catch (UnsupportedCommOperationException e) {
System.out.println(e.getMessage());
}
break;
}
}
System.out.println("stop");
}
}
,但我不知道如何从端口读取?我已阅读本教程 但我不知道“演示应用程序”是什么意思?
编辑
OutputStream outStream = p.getOutputStream();
InputStream inStream = p.getInputStream();
BufferedReader in = new BufferedReader( new InputStreamReader(inStream));
String inputLine;
while ((inputLine = in.readLine()) != null)
System.out.println(inputLine);
in.close();
我已经添加了此代码,但我收到了
稳定的库 =========================================== 原生库版本 = RXTX-2.1-7 Java lib 版本 = RXTX-2.1-7 start /dev/ttyUSB3 ->无效的 ->底层输入流返回零字节停止
Hi i have somthing like this
package compot;
import java.util.Enumeration;
import gnu.io.*;
public class core {
private static SerialPort p;
/**
* @param args
*/
public static void main(String[] args)
{
Enumeration ports = CommPortIdentifier.getPortIdentifiers();
System.out.println("start");
while(ports.hasMoreElements())
{
CommPortIdentifier port = (CommPortIdentifier) ports.nextElement();
System.out.print(port.getName() + " -> " + port.getCurrentOwner() + " -> ");
switch(port.getPortType())
{
case CommPortIdentifier.PORT_PARALLEL:
System.out.println("parell");
break;
case CommPortIdentifier.PORT_SERIAL:
//System.out.println("serial");
try {
p = (SerialPort) port.open("core", 1000);
int baudRate = 57600; // 57600bps
p.setSerialPortParams(
baudRate,
SerialPort.DATABITS_8,
SerialPort.STOPBITS_1,
SerialPort.PARITY_NONE);
} catch (PortInUseException e) {
System.out.println(e.getMessage());
} catch (UnsupportedCommOperationException e) {
System.out.println(e.getMessage());
}
break;
}
}
System.out.println("stop");
}
}
But I dont know how to read from port ?? I have read this tutorial but i dont know what "Demo application" they mean ??
EDIT
OutputStream outStream = p.getOutputStream();
InputStream inStream = p.getInputStream();
BufferedReader in = new BufferedReader( new InputStreamReader(inStream));
String inputLine;
while ((inputLine = in.readLine()) != null)
System.out.println(inputLine);
in.close();
I have add this code but i recive
Stable Library
========================================= Native lib Version =
RXTX-2.1-7 Java lib Version = RXTX-2.1-7 start /dev/ttyUSB3 -> null
-> Underlying input stream returned zero bytes stop
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
这是你的代码吗?你到底想在那里做什么? :p
为了从 SerialPort 读取数据,您需要声明此端口:
然后在此端口上打开连接:
下一步是设置此端口的参数(如果需要):
这是我的配置 - 您的配置可能会有所不同:)
现在您已准备好读取此端口上的一些数据!
要获取数据,您需要获取串行端口输入流并从中读取:
我实际上在这里做的是使用它的
read()
方法从输入流中读取数据。这将阻塞直到数据可用,或者如果到达流末尾则返回 -1。在此示例中,我等到收到“R”字符,然后将接下来的 22 个字节读入缓冲区。这就是读取数据的方式。active
设置为 false,从而结束读取过程。希望这有帮助
Is this your code? What are you actually trying to do there? :p
In order to read from a SerialPort, you need to declare this port:
Then open a connection on this port:
Next step would be to set the params of this port (if needed):
This is my config - your's might differ accordingly :)
Now you're ready to read some data on this port!
To get the data, you need to get the serialPorts inputstream and read from that:
What I'm actually doing here is reading from the inputstream using it's
read()
method. This will block until data is available or return -1 if end of stream is reached. In this example I wait until I get an 'R' character and then read the next 22 bytes into a buffer. And that's how you read data.active
can be set to false by another method and thus end the reading process.hope this helps
尝试使用
,以便套接字仅在缓冲流中有内容要读取时才响应
所以异常永远不会发生。
Try using
so that the socket responds only when there is something to read in the Buffer Stream
so the Exception never Occurs.
你的 try 块中是这样的:
Something like this in your try block: