我试图获得SIM number(ICCID不IMSI)用我的3G华为E5830调制解调器AT commands(也称为Hayes command set).
不幸的是,它没有在调制解调器正式文档中指定.
我正在为linux路由器编写一个小工具,当我将适当的调制解调器插入其USB端口时,它建立了一个wwan(gsm/3g)连接.当插入设备时,几个ttys被注册,我目前维护一个制造商和设备列表,他们注册的ttys是控制/数据端口.
如果可能的话,我想摆脱这个列表并找到一种方法以某种方式直接探测已注册的ttys以检查它们是控制端口还是数据端口.
我检查了wvdial和modem-manager的源代码,看看这些工具如何检测正确的端口但无法找到合适的信息.我还试图在sysfs中查找信息以区分端口,但这也不成功.
我想使用GSM调制解调器对电话号码进行语音呼叫,播放录制的消息,等待按下数字,然后断开呼叫.系统需要知道线路是否繁忙,用户是否应答以及用户按下了哪个数字(如果有).如果在30秒内没有按下任何内容,它应该掉线.如果用户在问题完成之前按下数字,则语音应该停止(用户不必等待).此外,如果系统可以处理无效数字(播放"无效数字"消息,播放原始消息并等待输入),那将是很好的.并行多个调用会很好,但我想这不可能吗?
我发现这篇文章很好地解释了低级接口.但是,这个问题更实用 - 你会推荐哪些库和哪个GSM调制解调器?操作系统是Linux,调制解调器可以是RS232或USB.我更喜欢Python,但C(++)也可以.
顺便说一句:这不是电话营销,而是一个通知系统.这不重要......;)
编辑:我了解到这个系统是关键字"IVR"(为未来的搜索者添加).
我正在寻找Java的串行通信API.非常重要的是64位系统的支持.我用RXTX与64个库Cloudhopper但一些在Windows Server 2008对系统的访问(虚拟)串行端口,当我沉重的问题,JVM崩溃.
主要目的是与模拟调制解调器交互,也许在Java中有另一种调制解调器通信方式?
如果API是免费的,那将是非常好的.
我正在使用通过php中的COM端口连接到华为3G调制解调器的应用程序。这是我的代码:
<?php
include("sms.php");
$sms = new sms();
$device = "COM11";
exec("mode $device BAUD=9600 PARITY=n DATA=8 STOP=1 xon=off octs=off rts=on");
$comport = fopen($device, "r+b");
if ($comport === false){
die("Failed opening com port<br/>");
}else{
echo "Com Port Open<br/>";
}
//Set non-blocking mode for writing
//stream_set_blocking($comport, 0);
$sms->_blocking($comport,0);
$atcmd = "AT\r";
fputs($comport, $atcmd);
sleep(5); // Sleep for response from the modem
// Set blocking mode for reading
$sms->_blocking($comport,1);
$res = fgets($comport, 4017);
if(trim($res) == "OK"){
echo "Modem supports AT Commands<br/>";
}else{
echo "Error …Run Code Online (Sandbox Code Playgroud) 我正在研究将在串行端口仿真模式下使用蓝牙连接到PC的设备的固件.
在测试期间,我发现Linux上的调制解调器管理器"帮助"尝试将其检测为调制解调器,发送AT+GCAP命令; 对此,目前我的设备回复类似的东西INVALIDCMD AT+GCAP.这是我的协议的正确响应,但显然不是AT回复,因此调制解调器管理器不满意并再次尝试与AT+GCAP其他调制解调器相关的东西.
现在,我发现调制解调器经理一些解决方法(见这里,因而这里,尤其是udev规则方法),但是:
此外,完全控制固件,我可以添加一个特殊的情况AT+GCAP和类似的东西; 那么,来问我的问题:
是否有标准/安全回复AT+GCAP和其他类似的调制解调器探测查询告诉"我不是调制解调器,走开让我一个人呆着?"
偶尔,我的安卓手机的收音机因为一些与网络有关的问题而无声地死机.在Nexus 4上,它显示空三角形,好像在这个区域没有可用的服务.在其他手机上它甚至没有这样做.看起来信号很好.
无论如何,在无线电无声地死亡之后,没有电话/短信/数据在任何方向上通过.我从系统获得的唯一提示是android.net.conn.CONNECTIVITY_CHANGE当信号死亡且未连接wifi时触发的广播.
唯一能解决问题的是重启手机.
最后我的问题:
有人知道如何通过代码完全重启收音机吗?
我的意思是,它是在单独的CPU上运行的单独映像.必须有一种方法可以重新启动它而无需重新启动手机.也许有一些东西,我可以进入Android ROM.我在这里运行CM,并乐意修补它(再次).
我尝试通过按下*#*#4636#*#*dailer并停止收音机并再次启动来启动系统应用程序来修复它.但它根本没有帮助.
我最近创建了一个应用程序,每次连接更改时都会检查无线电.它显示了一个简单的通知告诉我,我应该重新启动手机.[1]
转载的问题:
未转载的问题:
所有手机都在Dialog.lk网络中运行.
我想通过GSM调制解调器播放WAV文件.这是我的示例代码
private final int BUFFER_SIZE = 8;
private File soundFile;
private AudioInputStream audioStream;
private AudioFormat audioFormat;
public void playSound(String filename) throws IOException{
String strFilename = filename;
try {
soundFile = new File(strFilename);
} catch (Exception e) {
e.printStackTrace();
System.exit(1);
}
try {
audioStream = AudioSystem.getAudioInputStream(soundFile);
} catch (Exception e){
e.printStackTrace();
System.exit(1);
}
audioFormat = audioStream.getFormat();
DataLine.Info info = new DataLine.Info(SourceDataLine.class, audioFormat);
int nBytesRead = 0;
byte[] abData = new byte[BUFFER_SIZE];
while (nBytesRead != -1) {
try {
nBytesRead = audioStream.read(abData); …Run Code Online (Sandbox Code Playgroud) 我想AT通过使用shell脚本向我的调制解调器发送命令并解析结果以验证是否返回了OK.
at=`echo -ne "AT+CFUN1=1\r\n" > /dev/ttyUSB0 | cat /dev/ttyUSB0`
Run Code Online (Sandbox Code Playgroud)
解析at1变量并提取"OK"或"ERROR"的最佳方法是什么?
制造商:huawei
型号:E3533
修订:22.318.27.00.00
IMEI:353934033009021
+ GCAP:+ CGSM,+ DS,+ ES
AT + CMGS命令运行良好.
OK
AT+CMGS="99667788"
> test sms
+CMGS: 45
OK
AT+CMGL="ALL"
OK
AT+CPMS="SM"
+CPMS: 0,40,0,40,0,40
OK
AT+CPMS=?
+CPMS: ("SM","ME"),("SM","ME"),("SM","ME")
OK
AT+CMGL="ALL"
OK
Run Code Online (Sandbox Code Playgroud)