这是我的代码:
import java.io.*;
import java.util.*;
import javax.comm.*;
public class SMS {
public static void main(String[] args) {
Enumeration lists=CommPortIdentifier.getPortIdentifiers();
System.out.println(CommPortIdentifier.PORT_SERIAL);
System.out.println(lists.hasMoreElements());
while (lists.hasMoreElements()){
CommPortIdentifier cn=(CommPortIdentifier)lists.nextElement();
if ((CommPortIdentifier.PORT_SERIAL==cn.getPortType())){
System.out.println("Name is serail port "+cn.getName()+" Owned status "+cn.isCurrentlyOwned());
try{
SerialPort port1=(SerialPort)cn.open("ComControl",800000);
port1.setSerialPortParams(9600, SerialPort.DATABITS_8, SerialPort.STOPBITS_1, SerialPort.PARITY_NONE);
System.out.println("Before get stream");
OutputStream out=port1.getOutputStream();
InputStream input=port1.getInputStream();
System.out.println("Before write");
out.write("AT".getBytes());
System.out.println("After write");
int sample=0;
//while((( sample=input.read())!=-1)){
System.out.println("Before read");
//System.out.println(input.read() + "Testing ");
//}
System.out.println("After read");
System.out.println("Receive timeout is "+port1.getReceiveTimeout());
}catch(Exception e){
System.err.println(e.getMessage());
}
}
else{
System.out.println("Name is parallel port "+cn.getName()+" Owned status "+cn.isCurrentlyOwned()+cn.getPortType()+" ");
}
}
}
}
这是输出:
1 真的 名称是串行端口 COM1 拥有状态 false 在获取流之前 写之前 写完之后 阅读前 读后 接收超时为-1 名称是串行端口 COM2 拥有状态 false 在获取流之前 写之前 写完之后 阅读前 读后 接收超时为-1 名称是串行端口 COM3 拥有状态 false 在获取流之前 写之前 写完之后 阅读前 读后 接收超时为-1 名称是串行端口 COM4 拥有状态 false 在获取流之前 写之前 写完之后 阅读前 读后 接收超时为-1 名称是并行端口 LPT1 拥有状态 false2 名称是并行端口 LPT2 拥有状态 false2
我的电话调制解调器正在使用我的 COM4 端口,但根据代码,它的状态是免费的。我在代码中遗漏了什么,我该如何解决?