2012-06-05 2 views
2

UI의 레이블이 "링링"을 계속 읽은 다음 다시 빈 ""으로 표시합니다. 그러나 들어오는 번호는 표시하지 않습니다. 원하는 번호입니다. 데이터에 '0'이 있는지 확인하는 if 함수를 추가하려고했지만 어떤 이유로 든 여전히 작동하지 않습니다.발신자 번호 - 수신 번호를 얻을 수 없음

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

namespace CallerID 
{ 
    public partial class CallerID : Form 
    { 
     public CallerID() 
     { 
      InitializeComponent(); 
      port.Open(); 
      WatchModem(); 
      SetModem(); 
     } 

     protected override void OnPaint(PaintEventArgs e) 
     { 
      base.OnPaint(e); 
      WatchModem(); 
     } 

     private SerialPort port = new SerialPort("COM3"); 
     string CallName; 
     string CallNumber; 
     string ReadData; 

     private void SetModem() 
     { 
      port.WriteLine("AT+VCID=1\n"); 
      port.RtsEnable = true; 
     } 

     private void WatchModem() 
     { 
      port.DataReceived += new SerialDataReceivedEventHandler(port_DataReceived); 
     } 

     public delegate void SetCallerIdText(); 

     private void port_DataReceived(object sender, SerialDataReceivedEventArgs e) 
     { 
      ReadData = port.ReadExisting(); 
      //Add code to split up/decode the incoming data 
      if (lblCallerIDTitle.InvokeRequired) 
      { 
       if (ReadData.Contains('0')) 
        lblCallerIDTitle.Invoke(new SetCallerIdText(() => lblCallerIDTitle.Text = ReadData)); 
      } 
      else 
       lblCallerIDTitle.Text = ReadData; 
     } 
    } 
} 
+3

우리가 도와 드릴 수없는'ReadData'에 담긴 내용의 예를 들어주세요. 또한 ... 예제 코드가 불완전합니다. "Ring ... Ring"코드는 어디에 있습니까? –

+0

내 UI 레이블에 집 전화 번호가 울릴 때마다 "\ r \ nRING \ r \ n \"이 포함됩니다. 코드 : lblCallerIDTitle.Invoke (새 SetCallerIdText (() => lblCallerIDTitle.Text = ReadData)); 그 일이 일어나는 이유입니다. 발신자 번호를 테스트 한 적이 있습니다. 내 질문은 '링링'이 아닌 수신 전화 번호를 얻는 방법입니다. – Subby

+1

추가 코드를 제공하면 질문을 업데이트하십시오. 우리는 여전히'ReadData'의 내용을 알 필요가 있습니다. 우리에게 충분한 정보를주지 않았습니다. –

답변

2

그것은 잠시왔다,하지만 모뎀이 발신자를 지원해야한다 (I 요즘 할 가장 확신), 당신은 당신의 통신 회사에서 발신자의 서비스를해야합니다 (I 당신이해야 할 일), 마지막으로 CallerID보고를 켜기 위해 초기화하는 동안 모뎀에 보낼 AT 명령이있을 것입니다. 사용중인 모뎀의 모델에 따라 명령이 다를 수 있지만 일반적으로 AT#CID=1입니다. 모뎀 설명서에 사용할 AT 코드가 있어야합니다.

수신 번호는 첫 번째와 두 번째 링 사이에서 전송된다는 점에 유의하십시오.

관련 문제