我想编写一个与现有USSD服务交互的程序,所以我需要一种方法来拨打代码,"导航"菜单,发送附加命令和读取任何数据.实现这一目标的好方法是什么?我现在对任何技术/平台持开放态度.我已经研究过Android,但似乎没有USSD Api.Thankx.
我一直在我的项目中使用GSM调制解调器来发送/接收 SMS-s.我一直在使用.net的内置串口通信功能来使用标准的AT命令.
现在我必须扩展其功能(如PDU模式下的SMS,更有效的交付报告处理等).我不想重新发明轮子,所以首先我想知道是否有一个很好的开源项目或关于这个主题的免费图书馆.它应该在文本和pdu模式下发送/接收短信,处理发送报告.
我用谷歌搜索了它,但到目前为止我还没有找到一个有效的.
平台: Windows/.net4/vs2010/c#
我目前正在试图找出sms类如何在SMPP中正确表示.但是我现在完全被标准和它的文档混淆了.
在正常的短信我们有
查看SMPP规范,我首先data_coding
在submit_sm
操作中找到参数,该参数用于设置通过MAP发送的DCS.据我所知,如果我们想要显式设置消息类,我们需要将此参数的前四位设置为1,然后指示编码的两位,然后指示消息类的另外两位.所以对于Class1 Sms,我们会设置1111xx01
.到目前为止这是正确的吗?
如果我们尝试设置此DCS,但是目前我们还将数据编码设置为"8位数据".看来,有几款手机无法理解这一点.这是在任何地方指定的,我们可以改变它,或者是在发送其他消息类时需要的特殊编码.
当我们尝试使用SMPPv3.4建议的Message类设置方法时,会出现更多混乱.从3.4开始,操作中有一个可选参数submit_sm
,称为dest_addr_subunit
.根据标准,此参数应设置为0表示未知,1表示MS显示,2表示移动设备等.如果我看一下,与GSM消息类别相比,参数似乎会移动1.Class0编码为1,Class1编码为2,依此类推.这是正确的还是有更复杂的映射背后?
另外,如果我们设置dest_addr_subunit
,我们是否仍然必须设置DCS,或者我们可以将此参数保留为默认值吗?
我正在运行AT命令AT + KCELL以获取小区信息,并返回PLMN
(公共陆地和移动网络) - 文档中的描述如下:
PLMN标识符(3个字节),由MCC(移动国家代码)和MNC(移动网络代码)组成.
好吧,这与维基百科所说的相符 - 有MCC和MNC.现在我不明白的是如何提取上述MCC和MNC值?
这是一个例子.我回来了:
32f210
Run Code Online (Sandbox Code Playgroud)
我被告知(虽然我持怀疑态度),这应该导致:
MNC: 1
MCC: 232
Run Code Online (Sandbox Code Playgroud)
但我不能为我的生活弄清楚如何从PLMN获得结果,那我该如何解析呢?
我有一张带有以下ATR的智能卡:
ATR = 3B 9E 94 80 1F 42 80 31 00 73 BE 21 10 66 54 59 53 04 4C 25 CF
.
根据atr-parse.appspot.com的输出,我发现它是MCI(伊朗移动通信公司)的SIM卡.
这些是我从历史字节获得的信息:
(紧凑型TLV数据对象)
标签:3,Len:1(卡服务数据字节)
卡服务数据字节:0
EF.DIR和EF.ATR访问服务:通过GET RECORD(s)命令
卡与MF
标签:7,Len:3(卡片功能)
选择方法:190
支持记录号码
支持短EF标识符
隐式DF选择
按文件标识符选择DF
通过路径选择DF
DF选择全DF名称
数据编码字节:33
写功能的行为:专有
BER-TLV标记字段的第一个字节的值'FF':有效
四重奏数据单位:1
命令链,长度字段和逻辑通道:16
逻辑频道号码分配:由卡
最大逻辑通道数:1
标签:6,Len:6(发布前数据)
数据:54 59 53 04 4C 25"TYS.L%"
如上所述,提到该卡有一个MF
.
问题是我对这张卡无能为力.在第一步中,我想列出其内容.我看了TS 11.11,TS 102.221,TS 131.102和TS 151.011规范.
据我所知,从上面的文件中,卡的系统文件包括Master File
其AID 3F00 …
我想使用GSM调制解调器对电话号码进行语音呼叫,播放录制的消息,等待按下数字,然后断开呼叫.系统需要知道线路是否繁忙,用户是否应答以及用户按下了哪个数字(如果有).如果在30秒内没有按下任何内容,它应该掉线.如果用户在问题完成之前按下数字,则语音应该停止(用户不必等待).此外,如果系统可以处理无效数字(播放"无效数字"消息,播放原始消息并等待输入),那将是很好的.并行多个调用会很好,但我想这不可能吗?
我发现这篇文章很好地解释了低级接口.但是,这个问题更实用 - 你会推荐哪些库和哪个GSM调制解调器?操作系统是Linux,调制解调器可以是RS232或USB.我更喜欢Python,但C(++)也可以.
顺便说一句:这不是电话营销,而是一个通知系统.这不重要......;)
编辑:我了解到这个系统是关键字"IVR"(为未来的搜索者添加).
我在发送短信时遇到问题.我创建了一个字符串,其中包含"\ uFDE8"(它是65000)等字符.当我将其转换回来时,我得到65000.它看起来不错.
但是当我发送带有此字符串的短信并收到消息时,我将此字符替换为"\ uFFFD"(65533).这个角色被称为"替换角色".
为什么我的角色被替换了?
//编辑我的解决方案是将字符串的每个字符串转换为7位然后发送它.您必须注意到gms字母与ascii不同(某些字符需要替换为另一个字符).祝好运!
我目前的项目要求我们在线接收短信.很难浏览搜索结果,因为很多网站只有大约10个数字供大家使用.
我正在寻找与http://www.tropo.com提供的服务一致的服务
您可以使用自己在美国或加拿大境内生成的私人电话号码在线发送和接收短信.
最好是免费的,在做出任何决定之前只需要几个
谢谢!
是否可以将Android移动设备用作PC的GSM调制解调器?
我正在.net下开发应用程序来发送/发送短信等等.现在,我想通过USB将我的Android设备连接到我的PC,并将其用作GSM调制解调器与之通信.
这是我为此目的创建.NET应用程序的参考站点.
我在这里得到错误
try
{
Phone_Name.Text = comm.IdentifyDevice().Manufacturer.ToUpper().ToString();
Phone_Model.Text = comm.IdentifyDevice().Model.ToUpper().ToString();
Revision_Num.Text = comm.IdentifyDevice().Revision.ToUpper().ToString();
Serial_Num.Text = comm.IdentifyDevice().SerialNumber.ToUpper().ToString();
}
catch (Exception e50)
{
MessageBox.Show("Error Retriving COM Port Phone Information", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
}
Run Code Online (Sandbox Code Playgroud)
它说"错误重新传输COM端口电话信息".
是否有任何类型的驱动程序/应用程序/等处理它?
环境:Windows XP/Windows 7 Mobile测试:Q Mobile Noir A-10
我有一个问题.我想为像Orange Pi Zero Plus 2这样的小型机购买GSM/GPS/3G模块,所以它不能像Raspberry Pi GSM Hat那样.我发现了非常好的模块,但我不确定某些事情.也许你可以帮助我.
第一.网络连接.SIM5320是3G模块,因此最大互联网连接速度为3.6Mb.如下图所示,该模块只有UART接口.我能通过UART接口使用最高3G速度吗?
第二.音频.该模块没有音频输入或输出.那么我可以使用UART接口和AT命令发送和接收音频吗?
预先感谢您的帮助.