用python通过modem发送wav声音

2024-10-03 09:17:18 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在尝试用python和linux制作一个自动接听和呼叫机器,但到目前为止,我只能拨打一个号码。 当谈到发送或录制声音时,我没有成功。 在过去的一周里,我一直在努力解决这个问题,到目前为止还没有找到解决的办法。在

我使用的调制解调器是Conexant系统(罗克韦尔)

以下是我使用的代码:

import serial
import wave
import time

def initializePhone():
    phone = serial.Serial('/dev/ttyACM0', 112500, timeout=5)
    phone.write('AT'.encode())
    phone.write('AT+FCLASS=8')
    phone.write('AT+VSM=0,8000')
    return phone

def call(number):
    command = 'ATDT'+str(number)
    phone.write(command.encode())


def sendMusic(phone, music):
    cont = True
    while cont:
        frame = music.readframes(1024)
        if frame == '':
            cont = False
        ser.write(b"".join(frame))


def main():
    phone = initializePhone()
    music = wave.open('wood.wav','r')
    call('555555')
    time.sleep(10)
    sendMusic(phone, music)


if __name__=='__main__':
    main()

任何帮助将不胜感激。在


Tags: importtimemaindefserialmusicphonecall
1条回答
网友
1楼 · 发布于 2024-10-03 09:17:18

找到了我脚本中缺少的命令。这是修正后的新版本。 在发送音频数据之前,我错过了“AT+VTX”命令。在

import serial
import wave
import time

def initializePhone():
    phone = serial.Serial('/dev/ttyACM0', 112500, timeout=5)
    phone.write('AT\r\n'.encode())
    phone.write('AT+FCLASS=8\r\n'.encode())
    phone.write('AT+VSM=0,8000\r\n'.encode())
    return phone

def call(number):
    command = 'ATDT'+str(number)+'\r\n'
    phone.write(command.encode())


def sendMusic(phone, music):
    phone.write('AT+VTX\r\n'.encode())
    cont = True
    while cont:
        frame = music.readframes(1024)
        if frame == '':
            cont = False
        ser.write(b"".join(frame))


def main():
    phone = initializePhone()
    music = wave.open('wood.wav','r')
    call('555555')
    time.sleep(10)
    sendMusic(phone, music)


if __name__=='__main__':
    main()

相关问题 更多 >