1

C# の GSMCOMM ライブラリを使用して SMS を送信するための ac# アプリケーションを開発しました。接続されておらず、例外ポートが開いていないことがあります。私は以下のコードを共有しています: PC を電話の gsm モデムに接続するためのコード。
電話をPCに接続するためのコード.

private bool ConnectPhone() 
    {
        string conectionStr = ConfigurationSettings.AppSettings["ConnectionString"].ToString();
        clsFileLogger.VerifyLogFileDirectory();
        clsFileLogger.WriteToLog("DB Connection: " + conectionStr);
        conn = new SqlConnection(@conectionStr);
        int port = Convert.ToInt32(ConfigurationSettings.AppSettings["port"]);
        int baudRate = Convert.ToInt32(ConfigurationSettings.AppSettings["baudRate"]);
        int timeout = Convert.ToInt32(ConfigurationSettings.AppSettings["timeout"]);
        gsmComm = new GsmCommMain(port, baudRate, timeout);
        try
        {
            Isconnected = false;
            if (gsmComm.IsConnected() == false)
            {
                gsmComm.Open();
            }

            Isconnected = gsmComm.IsConnected();

            clsFileLogger.WriteToLog("\nConnected with GSM Modam");
        }
        catch (Exception)
        {
            clsFileLogger.WriteToLog("\nUnable to open the port.");
        }
        return Isconnected;
    }


そしてSMSを送信するためのコード

  if (gsmComm.IsConnected() == false)
                    {
                        this.ConnectPhone();
                    }

                    pdu = new SmsSubmitPdu(strSMS, cellNO, "");
                    gsmComm.SendMessage(pdu);

 catch (Exception ex)
                {

                    throw ex;
                }
4

2 に答える 2

5

gsmcomm を使用する場合.. まず、comPorts を vb.net の専門家であるコンボボックスにリストします.. このコードを読んで C# に変換できます 1) フォームと form_load にコンボボックスを作成し、このコードを記述します

 Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
        For Each prt In My.Computer.Ports.SerialPortNames
            comboBox1.Items.Add(prt)  
        Next
 End Sub

from のグローバル スコープで、このコードを記述します。

            Public Property mymodem As GsmCommMain

以下のようにプロジェクトにサブを追加します

   Private Sub connect()
    Try
        Cursor.Current = Cursors.WaitCursor
        If comboBox1.Text = "" Then Return
        If IsNothing(mymodem) Then mymodem = New GsmCommMain(comboBox1.Text)
        If Not mymodem.IsOpen Then mymodem.Open()
        Cursor.Current = Cursors.Default
    Catch ex As Exception
        richTextBox1.AppendText(ex.Message & vbCrLf) 'i add a richtextbox to my form for show exceptions and my produced declaration
    End Try
End Sub

その後、携帯電話番号のテキストボックスを配置します.. txttel という名前を付けます textMessage のテキストボックスも配置します.. txtMSG という名前を付けます メッセージを送信するボタンを配置します.. 名前を付ける btnsend 残りのコードは次のようになります..

  Private Sub btnSend_Click(sender As Object, e As EventArgs) Handles btnSend.Click
            If String.IsNullOrEmpty(txtMSG.Text.Trim) Then Return
               SendSMS()

   End Sub


  Private Sub SendSMS()
     Try
          If Not mymodem.IsOpen Then connect()
          Dim pdu As New SmsSubmitPdu(txtMSG.Text.Trim & vbCr, txtTel.Text)
          mymodem.SendMessage(pdu)
          richTextBox1.AppendText("your message sent successfully")
      Catch ex As Exception
          richTextBox1.AppendText(ex.Message)
     End Try
  End Sub

最後に必ずポートを閉じてください..このように

  Private Sub Form1_FormClosing(sender As Object, e As FormClosingEventArgs) Handles Me.FormClosing
    If Not IsNothing(mymodem) AndAlso mymodem.IsOpen Then
        mymodem.Close()
    End If
  End Sub
于 2015-12-02T15:58:11.657 に答える
1

これらのガイドを試してください (私にとっては役に立ちました): http://www.codeproject.com/Articles/325731/Bulk-SMS-Sender http://www.codeproject.com/Articles/20420/How-To-Send- and-Receive-SMS-using-GSM-Modem

しかし、com-port を開く際の問題はコードにあるようには見えません。Teraterm アプリなどを使用してポートをテストしてみてください。また、アプリの実行を開始するときにポートが開いていないことを確認してください (前回の起動後も開いている可能性があります)。

于 2013-07-08T14:14:27.300 に答える