GsmComm USSD-команда

Я использую библиотеку scampers для отправки и получения SMS через модем GSM. Он работает почти так, как я хотел. Но проблема, с которой я столкнулся, заключается в том, что я не могу вводить команду типа * 101 # или аналогичную, после некоторых исследований я обнаружил, что эта команда называется командой USSD. Итак, мой вопрос: кто-нибудь смог отправить команду USSD через библиотеку Scampers.


person crypted    schedule 23.02.2012    source источник


Ответы (3)


USSD — это протокол, отличный от SMS, поэтому вы не можете использовать библиотеку, ориентированную на SMS, для отправки сообщений USMD. Это похоже на попытку отправить http-запрос из клиентской библиотеки ftp.

person linkerro    schedule 27.02.2012
comment
Вот пример использования SMSLib для .net (надеюсь, это то, что вы хотели) группы .google.com/group/smslib-dotnet/browse_thread/thread/ smslib.org/ doc/smslib/dotnet - person linkerro; 27.02.2012
comment
@linkerro, ссылка на группу не работает. Можете ли вы предоставить любую другую ссылку? - person th1rdey3; 27.07.2015

Это сработало для меня довольно хорошо с помощью GsmComm:

    public string SendUssdRequest(string request)
    {
        string data = TextDataConverter.StringTo7Bit(request);

        var asPDUencoded = Calc.IntToHex(TextDataConverter.SeptetsToOctetsInt(data));
        try
        {
            IProtocol protocol = _comm.GetProtocol();
            string gottenString = protocol.ExecAndReceiveMultiple("AT+CUSD=1," + asPDUencoded + ",15");
            var re = new Regex("\".*?\"");
            int i = 0;
            if (!re.IsMatch(gottenString))
            {
                do
                {
                    protocol.Receive(out gottenString);
                    ++i;
                } while (!(i >= 5
                            || re.IsMatch(gottenString)
                            || gottenString.Contains("\r\nOK")
                            || gottenString.Contains("\r\nERROR")
                            || gottenString.Contains("\r\nDONE"))); //additional tests "just in case"
            }
            string m = re.Match(gottenString).Value.Trim('"');
            return PduParts.Decode7BitText(Calc.HexToInt(m));
        }
        catch { }
        finally
        {
            _comm.ReleaseProtocol();
        }
        return "";
    }
person Jörgen Lindell    schedule 12.11.2013
comment
Как я могу найти номер порта для _comm, и если я установил номер порта по умолчанию с помощью GsmComm.defaultportnumber, то я получил только это исключение. Поток связи не запущен. - person AT07; 02.07.2015
comment
Каков тип _comm ? - person th1rdey3; 27.07.2015
comment
привет, когда я использую ваш код, я получаю это исключение: Сообщение = Произошла ошибка мобильного оборудования 50. в чем проблема? я думаю, вы изменили некоторые настройки для объекта _comm перед отправкой запроса. - person Meysam Bagheri; 14.11.2019

тип _comm — GsmCommMain

using GsmComm.GsmCommunication;
using GsmComm.PduConverter;
using GsmComm.PduConverter.SmartMessaging;

GsmCommMain _comm;
person Community    schedule 18.05.2017
comment
Вы должны опубликовать комментарий, а не просто код, чтобы дать хороший ответ. - person filipst; 18.05.2017