Как избежать открытого Comport, если он уже открыт - PullRequest
1 голос
/ 03 апреля 2012

Я использую следующий код для отправки смс через GSM модем

for (int i = 0; i < 10; i++)
        {
            MSComm1.CommPort = 3;
            MSComm1.PortOpen = true;
            MSComm1.Output = "AT" + '\r' + '\n';
            Thread.Sleep(1000);
            MSComm1.Output = "AT+CMGF=1" + '\r' + '\n';
            Thread.Sleep(1000);
            MSComm1.Output = "AT+CMGS=" + '\"' + MobileNo + '\"' + '\r' + '\n';
            Thread.Sleep(1000);
            MSComm1.Output = MsgTxt + (char)26;
            Thread.Sleep(1000);
            MSComm1.PortOpen = false;
        }

мой вопрос: я хочу открыть порт как в (MSComm1.CommPort = 3;), только если он еще не открыт. чтобы мне не приходилось открывать и закрывать его снова и снова для каждой смс, как в приведенном выше цикле

1 Ответ

2 голосов
/ 03 апреля 2012

Вам следует отказаться от элемента управления ActiveX MSComm, если вы используете какой-либо язык / среду, разработанную в последнее десятилетие, или если вы хотите, чтобы ваше приложение работало на новых или более новых компьютерах / в операционных системах.

Вместовы можете использовать класс SerialPort , предоставленный в .Net Framework:

using (var com3 = new SerialPort("COM3"))
{
    if (!com3.IsOpen) com3.Open();

    for (int ii = 0; ii < 10; ++ii)
    {
        com3.WriteLine("AT" + Environment.NewLine);
        com3.WriteLine("AT+CMGF=1" + Environment.NewLine);
        com3.WriteLine("AT+CMGS=\"" + 03152800485 + "\"" + Environment.NewLine);
        com3.WriteLine("Hello Kashif" + (char)26);
        Thread.Sleep(5000);
    }
    com3.Close();
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...