0
は、Java言語を使用して呼び出し元IDで作業しています。私はロボティックモデムを持っており、このモデムは電話回線に接続されています。電話が鳴っているときにこのモデムから発信者IDを取得したいjavaのモデムから発信者IDを取得するシリアルポートに書き込む方法は?
私のサンプルプロジェクトで呼び出し元IDのRXTXライブラリを使用していますが、システムのシリアルポートと通信していて、ポートからデータを正常に読み書きしています。
は、電話が鳴っているときに、Javaプログラムは、出力を与える:リングを、私はその時出力される発信者ID用のモデムにコマンドを渡すとき:ERROR以下
サンプルコードは、私が発信者IDを表示するように助けてください。
そして、私のモデムは、モデムを初期化するためにATコマンド送信し、また、AT + VCID = 1(またはそれに相当する)は発信者ID機能を有効にしていることを確認し、USBロボットモデムpackage rxtx.demo;
import gnu.io.CommPort;
import gnu.io.CommPortIdentifier;
import gnu.io.SerialPort;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
public class Command {
SerialPort serialPort;
public Command() {
super();
}
void connect(String portName) throws Exception {
CommPortIdentifier portIdentifier = CommPortIdentifier.getPortIdentifier(portName);
if (portIdentifier.isCurrentlyOwned()) {
System.out.println("Error: Port is currently in use");
} else {
System.out.println("Connect 1/2");
CommPort commPort = portIdentifier.open(this.getClass().getName(), 6000);
if (commPort instanceof SerialPort) {
System.out.println("Connect 2/2");
serialPort = (SerialPort) commPort;
System.out.println("BaudRate: " + serialPort.getBaudRate());
System.out.println("DataBIts: " + serialPort.getDataBits());
System.out.println("StopBits: " + serialPort.getStopBits());
System.out.println("Parity: " + serialPort.getParity());
System.out.println("FlowControl: " + serialPort.getFlowControlMode());
serialPort.setSerialPortParams(4800, SerialPort.DATABITS_8, SerialPort.STOPBITS_1, SerialPort.PARITY_ODD);
//serialPort.setFlowControlMode(SerialPort.FLOWCONTROL_RTSCTS_IN);
System.out.println("BaudRate: " + serialPort.getBaudRate());
System.out.println("DataBIts: " + serialPort.getDataBits());
System.out.println("StopBits: " + serialPort.getStopBits());
System.out.println("Parity: " + serialPort.getParity());
System.out.println("FlowControl: " + serialPort.getFlowControlMode());
InputStream in = serialPort.getInputStream();
OutputStream out = serialPort.getOutputStream();
(new Thread(new SerialReader(in))).start();
(new Thread(new SerialWriter(out, in))).start();
//out.write("AT&Zn?".getBytes());
//out.flush();
} else {
System.out.println("Error: Only serial ports are handled by this example.");
}
}
}
/**
*
*/
public static class SerialReader implements Runnable {
InputStream in;
public SerialReader(InputStream in) {
this.in = in;
}
public void run() {
byte[] buffer = new byte[1024];
int len = -1;
try {
while ((len = this.in.read(buffer)) > -1) {
//System.out.println("Received a signal.");
System.out.print(new String(buffer, 0, len));
}
} catch (IOException e) {
e.printStackTrace();
}
}
}
/**
*
*/
public static class SerialWriter implements Runnable {
OutputStream out;
InputStream in;
public SerialWriter(OutputStream out, InputStream in) {
this.out = out;
this.in = in;
}
public void run() {
try {
byte[] array = {0x1B, 0x50, 0x0D, 0x0A};
while (true) {
//this.out.write("AT#CID=1".getBytes());
this.out.write("AT+GCI=B5".getBytes());
//this.out.write("AT+VCID=2".getBytes());
this.out.write("AT+VCID=1".getBytes());
this.out.write(new byte[]{0x1B, 0x50, 0x0D, 0x0A});
this.out.flush();
Thread.sleep(1000);
byte mBytesIn[] = new byte[1024];
//this.in.read(mBytesIn);
this.in.read(mBytesIn);
String value = new String(mBytesIn);
System.out.println("Response from Serial Device: " + value);
}
} catch (IOException | InterruptedException e) {
e.printStackTrace();
}
}
}
public static void main(String[] args) {
try {
(new Command()).connect("COM6");
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}