“;java.lang.UnsupportedOperationException:尚不支持;
我正在用java做一个TCP项目。 我想用java建立一个TCP连接,通过微控制器进行串行通信。 我想用多线程来实现这一点 但是当我运行服务器和客户端时,我会从客户端向服务器发送一条消息。然后,TCPserver中出现以下错误:“;java.lang.UnsupportedOperationException:尚不支持;,java,multithreading,serial-port,serial-communication,tcpserver,Java,Multithreading,Serial Port,Serial Communication,Tcpserver,我正在用java做一个TCP项目。 我想用java建立一个TCP连接,通过微控制器进行串行通信。 我想用多线程来实现这一点 但是当我运行服务器和客户端时,我会从客户端向服务器发送一条消息。然后,TCPserver中出现以下错误: "Exception in thread "Thread-0" java.lang.UnsupportedOperationException: Not supported yet. at serialPort.openPort(serialPort.java:
"Exception in thread "Thread-0" java.lang.UnsupportedOperationException: Not supported yet.
at serialPort.openPort(serialPort.java:30)
at Client.run(TCPserver.java:63)"
以下是我的tcpserver代码:
import java.io.*;
import java.net.*;
import java.io.IOException;
import jssc.SerialPort;
import jssc.SerialPortException;
import java.util.Scanner;
import java.util.logging.Level;
import java.util.logging.Logger;
import jssc.SerialPortList;
import jssc.*;
import jssc.SerialPort;
import jssc.SerialPortException;
class TCPServer
{
public static void main(String argv[]) throws Exception
{
ServerSocket welcomeSocket = new ServerSocket(6789);
SerialPort serialPort = new SerialPort("COM3");
while(true)
{
Socket connectionSocket = welcomeSocket.accept();
if (connectionSocket != null)
{
Client client = new Client(connectionSocket);
client.start();
}
}
}
}
class Client extends Thread
{
private Socket connectionSocket;
private String clientSentence;
private String capitalizedSentence;
private BufferedReader inFromClient;
private DataOutputStream outToClient;
public Client(Socket c) throws IOException
{
connectionSocket = c;
}
public void run()
{
try
{
inFromClient = new BufferedReader(new InputStreamReader(connectionSocket.getInputStream()));
outToClient = new DataOutputStream(connectionSocket.getOutputStream());
clientSentence = inFromClient.readLine();
capitalizedSentence = clientSentence.toUpperCase() + '\n';
outToClient.writeBytes(capitalizedSentence);
serialPort.openPort();//Open serial port
serialPort.setParams(SerialPort.BAUDRATE_115200,
SerialPort.DATABITS_8,
SerialPort.STOPBITS_1,
SerialPort.PARITY_NONE);
System.out.println("Received: " + clientSentence);
serialPort.writeString( clientSentence + "\r\n");
//Thread.sleep(1000);
String buffer = serialPort.readString();//Read 10 bytes from seri
// Thread.sleep(1000);
outToClient.writeBytes(buffer);
System.out.println(buffer);
serialPort.closePort();
connectionSocket.close();
} catch (IOException ex) {
Logger.getLogger(Client.class.getName()).log(Level.SEVERE, null, ex);
}
}
}
以及我的TCP客户端代码:
import java.io.*;
import java.net.*;
class TCPClient
{
public static void main(String argv[]) throws Exception
{
while(true){
String sentence;
String modifiedSentence;
Socket clientSocket = new Socket("localhost", 6789);
BufferedReader inFromUser = new BufferedReader(new InputStreamReader(System.in));
DataOutputStream outToServer = new DataOutputStream(clientSocket.getOutputStream());
BufferedReader inFromServer = new BufferedReader(new InputStreamReader(clientSocket.getInputStream()));
sentence = inFromUser.readLine();
outToServer.writeBytes(sentence + '\n');
modifiedSentence = inFromServer.readLine();
System.out.println("FROM SERVER: " + modifiedSentence);
clientSocket.close();
}
}
}
我的原始串行通信代码:
package sensornode_Jens;
import java.io.IOException;
import jssc.SerialPort;
import jssc.SerialPortException;
import java.util.Scanner;
import jssc.SerialPortList;
import jssc.*;
import jssc.SerialPort; import jssc.SerialPortException;
public class Main {
public static void main(String[] args) {
// getting serial ports list into the array
String[] portNames = SerialPortList.getPortNames();
if (portNames.length == 0) {
System.out.println("There are no serial-ports :( You can use an emulator, such ad VSPE, to create a virtual serial port.");
System.out.println("Press Enter to exit...");
try {
System.in.read();
} catch (IOException e) {
e.printStackTrace();
}
return;
}
for (int i = 0; i < portNames.length; i++){
System.out.println(portNames[i]);
////
SerialPort serialPort = new SerialPort("/dev/ttyACM0");
try {
serialPort.openPort();//Open serial port
serialPort.setParams(SerialPort.BAUDRATE_115200,
SerialPort.DATABITS_8,
SerialPort.STOPBITS_1,
SerialPort.PARITY_NONE);//Set params. Also you can set params by this string: serialPort.setParams(9600, 8, 1, 0);
Scanner input = new Scanner(System.in);
String scommand = input.nextLine();
serialPort.writeString( scommand + "\r\n");
String buffer = serialPort.readString();//Read 10 bytes from serial port
System.out.println(buffer);
serialPort.closePort();
}
catch (SerialPortException ex) {
System.out.println(ex);
}
}
}
}
package sensornode\u-Jens;
导入java.io.IOException;
导入jssc.SerialPort;
导入jssc.SerialPortException;
导入java.util.Scanner;
导入jssc.SerialPortList;
进口jssc。*;
导入jssc.SerialPort;导入jssc.SerialPortException;
公共班机{
公共静态void main(字符串[]args){
//将串行端口列表获取到阵列中
String[]portNames=SerialPortList.getPortNames();
if(portNames.length==0){
println(“没有串行端口:(您可以使用仿真器,比如ad VSPE,来创建虚拟串行端口”);
System.out.println(“按回车键退出…”);
试一试{
System.in.read();
}捕获(IOE异常){
e、 printStackTrace();
}
返回;
}
for(int i=0;i
有人能帮我吗?浏览jssc的谷歌代码页,网址为: 查看他们使用的示例时:
SerialPort serialPort = new SerialPort("COM1");
我在TCPServer类中看到了设置,但在Client类中没有
serialPort.openPort();
被称为
因此,在调用openPort之前,您可能需要在客户端类而不是TCPServer类中初始化serialPort
我没有发现openPort方法引发不支持操作异常的引用。请提供有关
jssc.SerialPort
导入的信息。它来自哪里:哪个库和版本?我使用最新版本的jssc库。您可以向我们展示文件“SerialPort.java”的代码吗?我假设这是您编写的一个类,或者?您可以在mij问题中从您上方的serialport中看到我的代码文件。我附带了它。我使用了来自此站点-->ndm.wikidot.com/cnsoltcpmultithreading的tcpserver的代码。我注意到您添加了主类。但我现在真的很困惑:堆栈跟踪指出blem位于文件serialPort.java的第30行。最新版本中的jssc文件在第30行没有代码。您可以通过调试等方式检查您是否使用了正确的serialPort类吗?我认为它不在客户机上..错误..而是在tcpserver端,因为我的客户机在使用tcpserver代码时就像应该..一样工作从这个链接-->,我对cliend使用了相同的代码,没有错误。但是当我从串行端口导入代码并将其捆绑在一起时,我得到了错误。。