我正在尝试使用华为 E1550 3G 调制解调器通过 USSD 检查 SIM 卡余额
但是当我总是发送
AT+CUSD=1,"*100#",15
Run Code Online (Sandbox Code Playgroud)
我得到
+CME Error: 100
Run Code Online (Sandbox Code Playgroud)
是的,我的调制解调器支持 USSD,因为我有一个用于调制解调器的仪表板应用程序,我可以检查余额并为 SIM 卡充电。
我在 C# 中使用 GSMComm 库,我也在 putty termainl 中尝试过,但一直遇到相同的错误
我搜索了错误 100,发现它是“未知错误”并没有真正的帮助:)
我也尝试在发送之前将文本模式更改为 pdu 模式,但没有任何改变
AT+CMGF=0
Run Code Online (Sandbox Code Playgroud)
注意:我也试过
AT+CUSD=1,"*100#"
Run Code Online (Sandbox Code Playgroud)
同样的错误
和的回应
AT+CUSD=?
Run Code Online (Sandbox Code Playgroud)
是
(0-2)
Run Code Online (Sandbox Code Playgroud)
更新
我已将请求“*100#”转换为 7 位“2A31303023”,如下所示
AT+CUSD=1,"2A31303023" ,15
Run Code Online (Sandbox Code Playgroud)
回复
+CUSD: 2
Run Code Online (Sandbox Code Playgroud)
我相信问题即将解决,但响应是什么意思?
一些自定义拨号器应用程序(例如,来自MotoBlur的拨号器)能够执行USSD请求.通过SDK实现这一点真的不可能吗?
我正在尝试使用我的iPhone设置USSD服务.但我希望uSSD连接在后台处于活动状态(连接USSD时没有灰色弹出框).USSD连接将进入,因为我不会启动它,目前它会自动被手机打开,将我带到灰色菜单.
我想基本上没有该菜单弹出窗口,并让我的程序通过USSD连接以编程方式将一些信息发送到USSD连接的源.我知道没有USSD API,但我怎么能基本上读取呼叫我的USSD#,然后基本上通过程序设置的uSSD隧道发送我想要的后台数据.
如前所述,我已经可以自动接收uSSD连接.我只需要"在后台运行"然后以编程方式发回一些东西.
如何启动android.intent.action.CALL(获取USSD)代码?
我的代码:
protected void call(String phoneNumber) {
try {
startActivityForResult(
new Intent("android.intent.action.CALL", Uri.parse("tel:"
+ phoneNumber)), 1);
} catch (Exception eExcept) {
//this.view.append("\n\n " + "\n" + eExcept.toString());
}
}
Run Code Online (Sandbox Code Playgroud)
这个代码不起作用,问题所在startActivityForResult().
我已经厌倦了搜索如何在Google上发送USSD命令.我想检查可能从运营商平衡.
我见过的所有示例都使用如下命令:
"AT+CUSD=1,\"*140*1#\"\r\n";
Run Code Online (Sandbox Code Playgroud)
这似乎是正确的.我正在使用我认为有用的东西.我有一个D-Link GSM调制解调器,当我使用它发送此命令时,它会在我的扬声器上发出一些噪音,我相信这会让我发生一些事情.
当我通过自己的应用程序断开调制解调器时,我的调制解调器有自己的Windows应用程序,我通过调制解调器的应用程序检查它,在USSD选项卡中,我可以找到我自己发送的命令的结果.
然后那个命令工作正常,但是我很困惑当我发送命令时发生的事情让我回复"OK"并且不返回操作员的答案以及我的调制解调器的应用程序如何读取该答案????????
我测试这些命令,但无法得到结果,我的调制解调器只返回这样的东西:"AT + CUSD = 1,\"*140*1#\"\ r \n\OK\r \n"只.
1) "AT+CUSD=1,\"*140*1#\",15\r\n"
2) "AT+CUSD=1,\"*140*1#\",1\r\n"
3) "AT+CUSD=1,\"*140*1#\",15\r"
4) "AT+CUSD=1,\"*140*1#\",1\r"
5) "AT+CUSD=1,\"*140*1#\""
Run Code Online (Sandbox Code Playgroud)
我认为阅读命令的结果可能有差异命令或我应该在我的调制解调器上设置一些配置.
对我来说非常有趣的是我的调制解调器不会向我返回错误并且总是返回OK.
我正在向 gsm 调制解调器发送 AT+CUSD 命令(拨打 ussd 代码)。它运行良好。手机上的响应也是正确的。但我认为响应是十六进制格式或我未知的某种编码:
GSM 调制解调器硬件:
诺基亚C6-01
使用 USB 电缆连接到笔记本电脑。USB 模式:诺基亚套件
初始化编码的命令:
AT+CSCS=?
+CSCS: ("UCS2","GSM","PCCP437","PCDN","IRA","8859-1","HEX","UTF-8")
AT+CSCS="IRA"
AT+CSCS?
+CSCS: "IRA"
Run Code Online (Sandbox Code Playgroud)
还尝试过:
AT+CSCS="GSM"
AT+CSCS="UTF-8"
Run Code Online (Sandbox Code Playgroud)
实际的 USSD 命令:
AT+CUSD=1,"*123#",15
Run Code Online (Sandbox Code Playgroud)
实际反应:
+CUSD: 1,"c47258e1ad7e7f477bb2c6781e0ec72785e691d36136481593cd54f6777d8c2ecb23e1313d6dfd3d36f7764fc26974720fa1b242f8fd161f9b9cc",1
OK
Run Code Online (Sandbox Code Playgroud)
预期回应:
AT+CUSD=1,"*123#",15
+CUSD: 1,"Dear Customer.... some response in english",1
Run Code Online (Sandbox Code Playgroud) 我想用USSD对话,其自带拨号后任何USSD代码发言权* 123#这要求用户输入选项编号取决于SIM卡供应商,以执行特定的任务(一个或多个)。我需要与该对话框进行交互,以便以编程方式在该对话框中提供输入。
但是,在拨打任何USSD代码后,我可以使用读取警报对话框中出现的USSD响应,AccessibilityService并使用来显示响应,Toast如下面的代码所示。我还没有找到任何与USSD对话框进行交互的解决方案。
public class UssdService extends AccessibilityService{
public static String TAG = "USSD";
@Override
public void onAccessibilityEvent(AccessibilityEvent event) {
Log.d(TAG, "onAccessibilityEvent");
String text = event.getText().toString();
if (event.getClassName().equals("android.app.AlertDialog")) {
Log.d(TAG, text);
Toast.makeText(this, text, Toast.LENGTH_LONG).show();
}
}
@Override
public void onInterrupt() {
}
@Override
protected void onServiceConnected() {
super.onServiceConnected();
Log.d(TAG, "onServiceConnected");
AccessibilityServiceInfo info = new AccessibilityServiceInfo();
info.flags = AccessibilityServiceInfo.DEFAULT;
info.packageNames = new String[]{"com.android.phone"};
info.eventTypes = AccessibilityEvent.TYPE_WINDOW_STATE_CHANGED;
info.feedbackType = AccessibilityServiceInfo.FEEDBACK_GENERIC; …Run Code Online (Sandbox Code Playgroud) android ussd sim-card android-alertdialog accessibilityservice
我是 USSD 的新手,但我已经使用 Kannel 1.5.4 发送消息很久了。我想使用 kannel 发送/接收 USSD 请求。我有相同的 smpp v5 帐户。如果有人通过配置文件帮助我,那就更好了。我的配置文件是:
#SMSC CONNECTIONS
group = smsc
smsc = smpp
smsc-id = USSD-ACC
host= 10.*.*.*
port= 1234
transceiver-mode=true
smsc-username = "USER"
smsc-password = "PWD"
system-type = ""
interface-version=34
source-addr-ton=5
source-addr-npi=0
dest-addr-ton=0
dest-addr-npi=1
max-pending-submits=10
wait-ack=600
wait-ack-expire=0x01
# SMSBOX SETUP
group = smsbox
bearerbox-host = localhost
sendsms-port = 12345
sendsms-chars = "0123456789 +-"
log-file = "/tmp/kannel_smsbox.log"
log-level = 3
# SERVICES
group = sms-service
keyword = default
get-url = "http://localhost/request.php?MNO=%p&SHORTCODE=%P&CONTENT=%a"
name="*123#" …Run Code Online (Sandbox Code Playgroud) 我通过串行端口在调制解调器上发送 USSD 代码。但它总是给出错误响应。
我发送的 AT 命令是: 按顺序:
serialPort.Write("AT+CMGF=0" + "\r\n");
serialPort.Write("AT+CUSD=1,\"*135#\"" + "\r\n");
Run Code Online (Sandbox Code Playgroud)
当我在第一个 AT 命令中配置消息格式时,它给出“OK”响应。但在发送 USSD 代码时,响应始终为“错误”。为什么会这样呢?
我已经购买了中兴MF667 GSM调制解调器,我使用超级终端发送AT命令,我有USSD问题,例如:
AT+CUSD=1,"*111#",15 (to check balance) but it returns only OK
AT+CUSD=1,"*111#" returns only OK
Run Code Online (Sandbox Code Playgroud)
我已经测试了另一个AT COMMADS,它的工作正常
AT+CMGL="ALL" to read SMS (WORKS)
Run Code Online (Sandbox Code Playgroud)
我怎么能解决这个问题呢?