0

请看下面的代码:

#pragma once
using namespace System::IO::Ports;
using namespace System::Text::RegularExpressions;
using namespace System::Collections::Generic;

    ref class SMS
    {
    public:
        SMS(void);
        void sendMessage();

    private:
        System::IO::Ports::SerialPort ^port;
    };

和cpp文件

#include "StdAfx.h"
#include "SMS.h"


SMS::SMS(void)
{
    //Initialize the Serial Port
    port = gcnew System::IO::Ports::SerialPort();
    port->PortName = "COM12";
    port->BaudRate = 9600;
    port->Parity = Parity::None;
    port->DataBits = 8;
    port->StopBits = StopBits::One;
    port->Handshake = Handshake::RequestToSend;
    port->DtrEnable = true;
    port->RtsEnable = true;
    port->NewLine = System::Environment::NewLine;

    if(!port->IsOpen)
    {
        port->Open();
    }

    //Set message format
    port->WriteLine("AT+CMGF=1");

    //Turn off echo
    port->WriteLine("ATE0");

    //Set memory configurations
    port->WriteLine("AT+CPMS=\"ME\",\"ME\",\"ME\"");





}


//This method will send the SMS

void SMS::sendMessage()
{
    if(!port->IsOpen)
    {
        port->Open();
    }

    port->WriteLine("AT+CMGS=\"012121212\"");
    port->WriteLine("Test Message From C#");
    port->WriteLine(System::Convert::ToString((char)(26)));

    port->Close();


}

我正在尝试通过访问加密狗来发送短信。端口是正确的,加密狗也很好,因为它在几个小时前就响应了我朋友的代码。我在这里做错了什么?我用 C++/CLI 做错了什么吗?AT 命令?

4

2 回答 2

0

尝试在每个 AT 命令后添加“CR”“LF”(回车和换行字符),一些 GSM 加密狗(如 SIM900)需要它们才能工作。我希望这会有所帮助

于 2013-08-13T03:38:54.313 回答
0

如果对于 win32,.. 更喜欢使用

HFILE OpenFile( LPCSTR lpFileName, // 指向文件名的指针 LPOFSTRUCT lpReOpenBuff, // 指向文件信息缓冲区的指针
UINT uStyle // 动作和属性 );

与其他事件,...

如果使用具有调制解调器 AT 命令功能的 SMS 网关,如果 U 使用手机,直接读取和写入 COM 端口就可以了,这其中很多都行不通。例如诺基亚 6070、3100 模型组

最好使用超级终端对其进行测试。

我使用 CBuildre6

https://sites.google.com/site/xpressdms/rosegarden

欢呼。

于 2013-09-04T00:58:41.377 回答