c # отправка смс с компьютера - PullRequest
3 голосов
/ 12 июня 2010

У меня есть этот код:

private SerialPort port = new SerialPort("COM1", 115200, Parity.None, 8, StopBits.One);

                  Console.WriteLine("Incoming Data:");
                  port.WriteTimeout = 5000;
                  port.ReadTimeout = 5000;
                  // Attach a method to be called when there is data waiting in the port's buffer
                  port.DataReceived += new SerialDataReceivedEventHandler(port_DataReceived);

                  // Begin communications
                  port.Open();
                  #region PhoneSMSSetup
                  port.Write("AT+CMGF=1\r\n");
                  Thread.Sleep(500);
                  port.Write("AT+CNMI=2,2\r\n");
                  Thread.Sleep(500);
                  port.Write("AT+CSCA=\"+4790002100\"\r\n");
                  Thread.Sleep(500);
                  #endregion
                  // Enter an application loop which keeps this thread alive
                  Application.Run();

Я получил его отсюда:

http://www.experts -exchange.com / Программирование / Языки / C_Sharp / Q_22832563.html

У меня есть новое пустое приложение winforms:

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;

namespace WindowsFormsApplication1
{

    public partial class Form1 : Form
    {

        public Form1()
        {
            InitializeComponent();
        }


        private void Form1_Load(object sender, EventArgs e)
        {

        }
    }
}

Подскажите, пожалуйста:

  1. куда конкретно я вставил бы код?
  2. как получить код для запуска?

Я отправляю AT COMMANDS на мой мобильный телефон, подключенный к компьютеру

Ответы [ 2 ]

3 голосов
/ 12 июня 2010

Пример верхнего кода, кажется, указывает на то, что он должен выполняться в отдельном потоке (что имело бы смысл), поэтому добавьте кнопку запуска в форму и добавьте обработчик события Click.

Я просто взял приведенный ниже код из здесь и немного переформатировал его.

В этом обработчике событий напишите что-то вроде:

ThreadStart myThreadDelegate = new ThreadStart(ThreadWork.DoWork);
Thread myThread = new Thread(myThreadDelegate);
myThread.Start();

А затем создайте класс, подобный этому:

public class ThreadWork 
{
   public static void DoWork()
   {
       // put your top half code in here, the bit that does the actual serial communication
   }
}

А затем добавьте обработчик событий port_DataReceived, которого ожидает ваш код.

2 голосов
/ 12 июня 2010

Перетащите SerialPort с панели инструментов на форму.Установите его свойства и дважды щелкните DataReceived.Это касается первых 5 строк.

В обработчике события Load поместите вызовы Open и Write, которые позаботятся об остальных строках.установите для свойства MultiLine значение True.Запишите этот код в обработчик событий DataReceived:

    private void serialPort1_DataReceived(object sender, System.IO.Ports.SerialDataReceivedEventArgs e) {
        string response = serialPort1.ReadLine();
        this.BeginInvoke(new MethodInvoker(
            () => textBox1.AppendText(response + "\r\n")
        ));
    }

Оттуда вы можете изменить дизайн формы, чтобы сделать его более полезным.Может быть, вы хотите добавить кнопку, чье событие Click снова опрашивает модем.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...