我正在使用以下代码通过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;)中的端口,只有它尚未打开。所以我不必像上面的循环那样一次又一次地为每个短信打开和关闭它
答案 0 :(得分:2)
如果你使用过去十年设计的任何语言/框架,或者你希望你的应用程序在新的或新的机器/操作系统上运行,你应该放弃MSComm ActiveX控件。
相反,您可以使用.Net Framework中提供的SerialPort类:
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();
}