C# GsmComm USSD命令
我一直在使用图书馆发送和接收短信通过GSM调制解调器。它正按照我想要的方式工作。但我遇到的问题是,我不能发出类似*101或类似的命令,在做了一些研究后,我发现这些命令被称为USSD命令。所以我的问题是,有人能通过图书馆发出USSD命令吗 USSD是一种与SMS不同的协议,因此您不能使用以SMS为中心的库来发送USMD消息。这就像试图从ftp客户端库发送http请求。USSD是一种与SMS不同的协议,因此您不能使用以SMS为中心的库发送USMD消息。这就像尝试从ftp客户端库发送http请求一样。这对我使用GsmComm非常有效:C# GsmComm USSD命令,c#,gsm,ussd,C#,Gsm,Ussd,我一直在使用图书馆发送和接收短信通过GSM调制解调器。它正按照我想要的方式工作。但我遇到的问题是,我不能发出类似*101或类似的命令,在做了一些研究后,我发现这些命令被称为USSD命令。所以我的问题是,有人能通过图书馆发出USSD命令吗 USSD是一种与SMS不同的协议,因此您不能使用以SMS为中心的库来发送USMD消息。这就像试图从ftp客户端库发送http请求。USSD是一种与SMS不同的协议,因此您不能使用以SMS为中心的库发送USMD消息。这就像尝试从ftp客户端库发送http请求一样。
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 "";
}
这对我使用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 "";
}
_comm的类型是GSMComm
using GsmComm.GsmCommunication;
using GsmComm.PduConverter;
using GsmComm.PduConverter.SmartMessaging;
GsmCommMain _comm;
_comm的类型是GSMComm
using GsmComm.GsmCommunication;
using GsmComm.PduConverter;
using GsmComm.PduConverter.SmartMessaging;
GsmCommMain _comm;
下面是一个使用SMSLib for.net hope的示例,这正是您想要的@LinkedError,组链接似乎已断开。你能提供其他参考吗?下面是一个使用SMSLib for.net的示例,希望这就是你想要的@linkerro,组链接似乎已断开。你能提供任何其他参考吗?我如何找到_comm的端口号?如果我通过GsmComm.defaultportnumber设置默认端口号,那么我只收到了通信线程未运行的异常。什么是_comm的类型?嗨,当我使用你的代码时,我得到这个异常:消息=移动设备错误50发生。有什么问题吗?我想您在发送请求之前更改了_comm对象的一些设置。我如何找到_comm的端口号?如果我通过GsmComm.defaultportnumber设置了默认端口号,那么我只收到异常通信线程未运行。什么类型的_comm?您好,当我使用你的代码,我得到这个例外:消息=移动设备错误50发生。有什么问题吗?我认为在发送请求之前,您应该更改_commobject的一些设置。您应该发表评论,而不仅仅是普通代码,才能做出好的回答。您应该发表评论,而不仅仅是普通代码,才能做出好的回答。