2012-03-23 27 views
5

Tôi có điện thoại Nokia kết nối với PCLàm thế nào để hủy USSD cần đáp ứng

Đây là mã mà tôi sử dụng để gửi lệnh USSD:

Port.Write("AT+CUSD=0,\"*147*1*#\",15\r\n");

Nó hoạt động tốt, NHƯNG nó hiển thị một tùy chọn để chọn dịch vụ. Điều tôi muốn là dừng nó HOẶC Thoát (Thoát) khỏi tin nhắn đó. Tôi có thể nhấn tùy chọn hủy bỏ từ điện thoại, nhưng làm thế nào tôi có thể làm điều đó bằng cách sử dụng C#?

Trả lời

0

Tôi tin rằng AT + CUSD = 2 có thể được sử dụng để hủy phiên. Hoặc chỉ cần đợi phiên USSD hết thời gian chờ ở phía máy chủ (thường là thời gian chờ không quá dài)

1

Tôi đăng bài này vì đây là một trong những kết quả hàng đầu liên quan đến việc chấm dứt các phiên USSD bằng lệnh AT và cũng vì câu trả lời là mơ hồ. Đây là mã C# tôi đã sử dụng cuối cùng (tôi đã gửi lệnh đến modem GSM). Hy vọng nó sẽ giúp người khác

SerialPort SendingPort=null; 

    public string TerminateUssdSession() 
    { 
      InitializePort(); 

      //// generate terminate command for modem 
      string cmd = ""; 
      cmd = "AT+CUSD=2\r"; 

      // send cmd to modem 
      OpenPort(); 

      SendingPort.Write(cmd); 

      Thread.Sleep(500); 

      string response = SendingPort.ReadExisting(); 

      return response; 

    } 

    private void InitializePort() 
    { 
     if (SendingPort == null) 
     { 
      SendingPort = new SerialPort(); 
      SendingPort.PortName = PortName;//put port name e.g COM5 
      SendingPort.BaudRate = 112500; 
      SendingPort.Parity = Parity.None; 
      SendingPort.DataBits = 8; 
      SendingPort.StopBits = StopBits.One; 
      SendingPort.Handshake = Handshake.None; 
      SendingPort.ReadTimeout = 500; 
     } 
    } 

    private void OpenPort() 
    { 
     if (!SendingPort.IsOpen) 
     { 
      SendingPort.Open(); 
     } 
    }