2011-01-24 8 views
8

C#プログラムで携帯電話にダイヤルしようとしています。私のプログラムを表示する。これで、私がダイヤルボタンをクリックすると、自分のプログラムで指定した番号(宛先番号)がダイヤルされます。しかし1〜2秒後に消えて&その宛先番号に接続していません。以下は私のC#コードを示しています。 Plsはこの問題を解決するのに役立ちます。ありがとうございました.......C#プログラムによる携帯電話のダイヤル

using System; 
using System.Collections.Generic; 
using System.ComponentModel; 
using System.Data; 
using System.Drawing; 
using System.Text; 
using System.Windows.Forms; 
using System.IO.Ports; 

namespace WindowsApplication1 
{ 
    public partial class Form1 : Form 
    { 
     public Form1() 
     { 
      InitializeComponent(); 
     } 

     private void Form1_Load(object sender, EventArgs e) 
     {   
     } 

     private void button1_Click(object sender, EventArgs e) 
     { 
      SerialPort sp = new SerialPort(); 
      sp.PortName = "COM10"; 
      sp.BaudRate = 9600; 
      sp.Parity = Parity.None; 
      sp.DataBits = 8; 
      sp.StopBits = StopBits.One; 
      sp.Handshake = Handshake.XOnXOff; 
      sp.DtrEnable = true; 
      sp.RtsEnable = true; 


      sp.Open(); 

      if (!sp.IsOpen) 
      { 
       MessageBox.Show("Serial port is not opened"); 
       return; 
      } 

      sp.WriteLine("AT" + Environment.NewLine); 
      sp.WriteLine("ATD=\"" + "Destination Number" + "\"" + Environment.NewLine); 

     } 
    } 
} 

最後に解決策が見つかりました。宛先番号の最後にセミコロンを追加する必要があります。それは働いた。

sp.WriteLine("ATD=\"" + "Destination Number;" + "\"" + Environment.NewLine); 
+0

あなたの携帯電話がHayesのモデムコマンドを受け入れるなら、それはちょうど 'ATDT2125551234'だと思います。 – Rup

+0

そのソニーエリソン携帯電話。私がATDT2125551234コマンドを使用すると、結果は同じになります。 1〜2秒間ダイヤルしてから自動的に消えます。 – Chamal

+2

最後に私は解決策を見つけました。我々は、宛先番号の終わりまでそれは働いた。 – Chamal

答えて

0

そうのように、メソッドの外に 'SP' のdeclerationを移動してみてください:

using System; 
using System.Collections.Generic; 
using System.ComponentModel; 
using System.Data; 
using System.Drawing; 
using System.Text; 
using System.Windows.Forms; 
using System.IO.Ports; 

namespace WindowsApplication1 
{ 
    public partial class Form1 : Form 
    { 
     private SerialPort sp; 

     public Form1() 
     { 
      InitializeComponent(); 
     } 

     private void Form1_Load(object sender, EventArgs e) 
     { 
      sp = new SerialPort();   
     } 

     private void button1_Click(object sender, EventArgs e) 
     { 
      if (sp.IsOpen) 
      { 
       sp.Close(); 
      } 

      sp.PortName = "COM10"; 
      sp.BaudRate = 9600; 
      sp.Parity = Parity.None; 
      sp.DataBits = 8; 
      sp.StopBits = StopBits.One; 
      sp.Handshake = Handshake.XOnXOff; 
      sp.DtrEnable = true; 
      sp.RtsEnable = true; 


      sp.Open(); 

      if (!sp.IsOpen) 
      { 
       MessageBox.Show("Serial port is not opened"); 
       return; 
      } 

      sp.WriteLine("AT" + Environment.NewLine); 
      sp.WriteLine("ATD=\"" + "Destination Number" + "\"" + Environment.NewLine); 

     } 
    } 
} 
1

は最大にあなたのBaudRateを増やし、このATのコマンドを使用します。

ATD = DestinationNumber; 

この意志を;とは動作しません。システムは音声通話ではなくデータ通話を行っていると考えます。ここで

0

私の作業ダイヤルコードです、それは電話 がどのように音声入力を取得すると、出力ポートから入れて、私はhuwavi E173 dongle.Hereを使用していること

SerialPort port = new SerialPort(); 
port.Open(); 
string t = port.ReadExisting(); 
Thread.Sleep(100); 

string cmd = "ATD"; 
Thread.Sleep(100); 
string phoneNumber = "071********"; 
Thread.Sleep(100); 
port.WriteLine(cmd + phoneNumber + ";\r"); 

port.Close(); 
私の作業コードのC#であることを知っているしないでくださいリング