2012-04-03 2 views
1

Я использую следующий код для отправки смс throuh GSM модемКак избежать открытую Comport, если он уже открыт

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;), только если он еще не открыт. так что мне не нужно открывать и закрывать его снова и снова для каждого смс, как в приведенном выше цикле

+0

MSComm1 является контроль OCX – kashif

+0

Конечно, вы должны считать простой переменной BOOL следить? –

ответ

2

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

Вместо этого вы можете использовать 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(); 
} 
+0

Это что-то новое и совсем другое, чем то, что я использовал для отправки смс. я попробую это .. мне не придется использовать system.threading ждать после каждого WriteLine в этом случае ??? – kashif

+0

У кодирования из шестидесяти были некоторые проблемы, и поэтому я отредактировал его – kashif

+0

В любом случае, вы заставили меня узнать что-то новое. Я действительно не знал, что даже без использования MSComm32 sms можно отправить – kashif

Смежные вопросы