有人可以给我看一个完整的python示例代码,使用pyserial,我有包,我想知道如何发送AT命令并阅读它们!
我想知道Android Modem代码如何调用/传递消息到Android应用程序层的高级概念.假设我们以SMS为例.如果网络发送短信和调制解调器(比如说Qualcomm C代码解析它),它是如何传输到Android应用层的?
是否总会发生JNI通话?作为调制解调器和Android之间的接口 您能否与我们分享信息?谢谢
我正在尝试通过Virtual Box在Ubuntu中设置USB传真调制解调器,但我不知道该怎么做.
Host OS = Mac OS X
Virtual Box Guest OS = Ubuntu 12.04
56k USB Fax/Modem = Lenovo 43R1786 (43R1815) by Conexant
Run Code Online (Sandbox Code Playgroud)
在主机操作系统上,我可以看到/dev/tty.usbmodem24680241.我启用了USB控制器,发现我的调制解调器为"Conexant USB Modem",所以我启用了它.现在,当我运行客户操作系统时,从该操作系统的Virtual Box菜单中,我转到设备> USB设备> Conexant USB调制解调器,它说:
无法将USB设备Conexant USB调制解调器连接到虚拟机Ubuntu32.其他人正在使用USB设备.看起来这意味着主机(mac)首先抓住设备.我怎样才能让它放手让客人可以使用它?我是以正确的方式设置的吗?
谢谢!
使用一些较旧的手机,您可以将它们连接到计算机并将它们用作拨号/传真调制解调器(例如连接到拨号ISP).我一直试图找出这是否可能与Android,但我的所有搜索最终与人们希望分享他们的手机与他们的PC的互联网连接.这不是我想要做的.我想使用超级终端让我的手机拨打PBX电话,这样我就可以远程更改PBX.
我想用我的GSM调制解调器拨打电话.所以我写了下面的程序:
import time
import serial
recipient = "+98xxxxxxxxxx"
phone = serial.Serial("COM10", 115200, timeout=5)
try:
time.sleep(0.5)
phone.write(b'ATZ\r')
time.sleep(1)
phone.write(b'ATD"'+recipient.encode() +b'"\r')
while(1):
print(phone.readline())
time.sleep(0.5)
finally:
phone.close()
Run Code Online (Sandbox Code Playgroud)
但是当我运行它时,我收到了这个输出:
>>> ================================ RESTART ================================
>>>
b'ATZ\r\r\n'
b'OK\r\n'
b'ATDxxxxxxxxxx\r\r\n'
b'NO CARRIER\r\n'
Run Code Online (Sandbox Code Playgroud)
这个"NO CARRIER"错误意味着什么?
请注意,我可以成功发送短信.
这是我用来发送短信的程序:
import time
import serial
recipient = "+98xxxxxxxxxx"
message = "Test"
phone = serial.Serial("COM10", 115200, timeout=5)
try:
time.sleep(0.5)
phone.write(b'ATZ\r')
time.sleep(0.5)
phone.write(b'AT+CMGF=1\r')
time.sleep(0.5)
phone.write(b'AT+CMGS="' + recipient.encode() + b'"\r')
time.sleep(0.5)
phone.write(message.encode() + b"\r")
time.sleep(0.5)
phone.write(bytes([26]))
time.sleep(0.5)
finally:
phone.close()
Run Code Online (Sandbox Code Playgroud) 我有一个Linux服务器(Red Hat 4),其中一个串口连接到嵌入式linux设备,另一个串口连接到该设备的电源控制器.我目前控制它们的方法是打开两个minicom会话,每个会话都在自己的窗口中.我想通过脚本自动化这种通信.起初,我开始思考如何自动使用minicom,然后意识到当脚本应该能够直接与端口通信时,我不需要尝试使用控制台应用程序进行自动化.
我知道一些Perl和一些python.我以前没有使用调制解调器通信的经验(使用AT命令).Perl有Device :: Modem,虽然它只是beta版,而Perl似乎是一个不错的选择,因为我更喜欢它的文本提取和争吵能力.但是,如果我需要学习如何控制调制解调器并编写/调试脚本,那么我的任务就会增加更多时间.
是否可以通过脚本以交互方式控制控制台应用程序(如minicom)?如果没有,有什么好资源让我学习如何使用调制解调器AT命令?或者是否有其他资源可以简化我的事情?
我有一个D-Link DWM-156 3G USB调制解调器,我想从我的应用程序(在Windows XP SP3上运行的C#.NET 4.0)发送AT命令.
在插件和安装驱动程序后,调制解调器显示如下:
在设备管理器中,添加了两个串行端口:
在控制面板,电话和调制解调器选项中,添加了一个新的调制解调器:
问题:我应该使用哪个COM端口发送AT命令,以及以哪种速度发送?
我已经尝试了不同速度的所有三个端口,但没有任何运气.
为了便于学习,我随后安装了"Free Serial Port Monitor"嗅探器应用程序,希望能够在打开和关闭互联网连接(可正常工作)时监控与D-Link的通信性.
一开始,嗅探器应用程序会询问我要监视哪个端口,并提供以下端口名称供您选择:
选择"D-Link ..."名称可以正常工作,现在我可以看到所有正在使用的AT命令,但我无法确定端口的使用波特率.此外,COM4,COM5或COM19都不能以这种方式进行嗅探(这些端口似乎没有发生任何事情).
现在我想在.NET中使用SerialPort类打开"D-Link ..."端口并与USB调制解调器通信,但SerialPort类要求端口名称以"COM"开头,否则异常是抛出.但是普通的COM端口都不起作用.我仍然不知道使用哪种波特率.我非常困惑并被锁在这里 - 我能做些什么才能到达底部?
我做了一个奇怪的项目,并希望将一些简短的数据报转换为音频 - 通过(物理)无线电发送它们 - 然后在另一台设备上接收和解码它们(想想 - 带有音频输出插孔和GSM/GPRS的嵌入式设备)型无线电).
(我必须使用物理的现有外部无线电).
有谁知道一个好的,简单的软件调制解调器库适合这样的项目?我不太关心数据速率,并且更喜欢简单而不是功能.即使类似于基本的1200波特调制解调器也会很棒.
看看这更多的学习经验和潜在的构建块,而不是任何可怕的实用.
我一直在研究一种使用GSM调制解调器的应用程序,用于以下两种方式之一; 通过向服务器发送GET请求或将数据发送到服务器(使用UDP),使用内置HTTP堆栈检查其状态.我已经尝试了几种不同的方法来保持尽可能可靠,我终于准备寻求帮助了.
我的应用程序是为SIMCOM908模块和PIC18平台编写的(我使用PIC18 Explorer进行开发).
所以问题是有时候调制解调器忙于做某事,而错过命令.作为一个人,我会看到并只是重新发送命令.为我的MCU添加设施以进行超时和重新发送不是问题.
问题是调制解调器在不同事件之后发送未经请求的响应.当调制解调器改变注册状态(与蜂窝塔一起)时,它将响应+CGREG: 1, ...
GPS或准备就绪时GPS Ready
.这些响应可以随时发生,包括在命令中间(如创建IP连接).
这是一个问题,因为我没有想过要解决这个问题的方法.我的应用程序需要发送命令(例如,连接到服务器AT+CIPSTART="UDP","example.com",5000
),此命令将以"OK"响应,然后当命令完成"CONNECT OK"时.但是,我需要能够对许多其他可能的响应作出反应,而我还没有找到一种方法.我的代码需要做什么; 等待来自调制解调器的响应,检查响应,根据该响应执行操作?
我是代码有限的(是一个8位微控制器!),并希望将重复保持在最低限度.如何编写响应函数,从GSM模块(征求或现在)获取响应,然后让我的程序的其余部分知道发生了什么?
理想情况下,我想对这些回复做些什么.就像保持一个内部状态(当我听到GPS Ready
,我知道我可以为GPS等供电
也许有一些我应该考虑的事情,或者可能有一个开源项目已经解决了这个问题?
这是我到目前为止所拥有的:
/* Command responses */
enum {
// Common
OK = 0,
ERROR,
TIMEOUT,
OTHER,
// CGREG
NOT_REGISTERED,
// CGATT
NOT_ATTACHED,
// Network Status
NO_NETWORK,
// GPRS status
NO_ADDRESS,
// HTTP ACTION
NETWORK_ERROR,
// IP Stack State
IP_INITIAL,
IP_STATUS,
IP_CONFIG,
UDP_CLOSING,
UDP_CLOSED,
UDP_CONNECTING
} gsmResponse;
int gsm_sendCommand(const char * cmd) {
unsigned long timeout = timer_getCurrentTime() …
Run Code Online (Sandbox Code Playgroud) 您好我想使用56K调制解调器获取拨打家庭电话的电话号码,有没有办法用C#实现这一目标?