我有一个DWM-156 GSM modem。在下面,您可以看到将GSM调制解调器插入USB端口后添加到我的计算机的设备列表:
请注意,每次将调制解调器连接到计算机时,它都使用不同的COM端口号。
现在我想用Python或任何其他语言向这个调制解调器发送一些AT命令。实际上,我想从拨号电话接听/拨打电话,并记录在通信过程中传输的原始数据。搜索之后,我在SO中找到了this问题。其中一位回答者建议使用以下代码:
import serial
serialPort = serial.Serial(port=PORT_NUMBER,baudrate=115200,timeout=0,rtscts=0,xonxoff=0)
def sendatcmd(cmd):
serialPort.write('at'+cmd+'\r')
print 'Loading profile...',
sendatcmd('+npsda=0,2')
我将端口号替换为9、10和12。结果如下:
^{pr2}$我的问题:
您永远不会调用
serialPort.read()
来读取任何响应。在Serial
类来自lib\site-packages\serial\serialwin32.py
,是Win32Serial
类的包装器。在Win32Serial
从lib\site-packages\serial\serialutil.py
中的SerialBase
继承,并通过调用SerialBase
初始化器来初始化自身。在SerialBase
通过将给定的端口值分配给port
属性来设置其端口值,该属性调用SerialBase.setPort(port)
。在setPort(port)
检查传入的值是字符串还是数字。它是一个数字,因此它调用Win32Serial
类中的makeDeviceName(port)
。在makeDeviceName(port)
调用device(port)
。在device(port)
是一个函数,它将1加到一个数的前面,并将COM
放在前面:为什么?我不知道。但是如果你传递一个字符串,它不会改变它。试着给它一个字符串:
serial.Serial(port="COM12"...
而不是serial.Serial(port=12
-但我怀疑这是后台干扰,这与设备管理器屏幕截图中描述的“调试”端口有关,可能无法正常打开。在我不明白。“拨打SIM卡”是什么意思?什么原始数据?你不能用串行链接来记录电话通话的音频数据。。。你可能无法记录其他东西发送的调制解调器数据,因为Python将打开串行端口,而其他程序无法打开它。在
相关问题 更多 >
编程相关推荐