这是我的代码:
package test1;
/**
*
* @author ECS
*/
import com.fazecast.jSerialComm.*;
import java.io.IOException;
import java.io.InputStream;
import java.util.Scanner;
public class Test1 {
public static void main(String[] args) throws IOException {
SerialPort ports[]=SerialPort.getCommPorts();
System.out.println("Select a port: ");
int i=0;
for(SerialPort port:ports){
System.out.println(i++ +". "+ port.getSystemPortName());
}
Scanner s=new Scanner(System.in);
int choosenport=s.nextInt();
SerialPort port=ports[choosenport-1];
if(port.openPort())
{
System.out.println("Succesfully open port: ");
}else{
System.out.println("Unable to open port!");
return;
}
port.setComPortTimeouts(SerialPort.TIMEOUT_SCANNER, 0, 0);
String newdata=String.valueOf(port.getInputStream());
Scanner data=new Scanner(newdata);
System.out.println(data);
while(data.hasNextLine()){
System.out.println(data.nextLine());
}
}
}
这是在arduino IDE中我的串行监视器的输出。 arduino output
我的java程序的输出是这样的:
Select a port:
0. COM1
1. COM23
1
Succesfully open port:
java.util.Scanner[delimiters=\p{javaWhitespace}+][position=0][match valid=false][need input=false][source closed=false][skipped=false][group separator=\,][decimal separator=\.][positive prefix=][negative prefix=\Q-\E][positive suffix=][negative suffix=][NaN string=\Q�\E][infinity string=\Q∞\E]
com.fazecast.jSerialComm.SerialPort$SerialPortInputStream@1405ef7
我真的不知道为什么会这样。
它成功打开了端口,但是由于某种原因,它没有输出arduino的串行监视器输出的内容。我尝试将arduino的串行监视器的输出更改为数字,但始终总是得到相同的结果。我希望有人能启发我。它运行正常,但是输出对我来说是真正的奥秘。我是编程方面的初学者,几天前我才刚接触到这个jSerialComm库。我将非常感谢您的任何建议。