2016-05-25 9 views
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(); 
     } 
    } 
} 

答えて

0

です。

あなたの電話会社にそのようなサービスの存在を確認することも有用です。

関連する問題