Featured image of post Landline Dialer on Modern PC

Landline Dialer on Modern PC

在 Windows 11 上进行固定电话拨号

问题描述

每到招生季,总是需要大量地给考生打电话,提醒报名、核对信息和确认志愿云云,而且须要使用办公室的固定电话,对于每一位考生:

看一眼电脑上的信息表,背下电话号码
拿起话筒,拨号,嘀嘀嘀嘀嘀嘀嘀嘀嘀嘀嘀,按下11位号码
等待接通(或者时常出现拨错,重新开始,法克。。。
绝赞招生中
挂断话筒,回第一步

一天下来手都麻了,打算想个办法,于是有了本文。

解决方案

让电脑拨打电话,一共分成两步:

  1. 把电脑和电话连接起来
  2. 在电脑上写程序自动拨号(人生苦短,我选Python!)

电脑连接电话

我的电话机背后有两个接口,都是RJ11,一个是“Line”连接外线,另一个是“Phone”,连接分机。我的方案是把电脑当作分机,从这台“分机”上拨号,再用电话机的话筒进行实际的通话。

现在的电脑都没有RJ11接口,这里需要安装一个Modem(俗称“猫”),一头用USB插上电脑,另一头的RJ11插上电话线,线的另一头接电话机的“Phone”口。注意,我们需要的不是ADSL上网猫,因为这里是需要通话和拨号,所以应该选择56K猫,有的店家会叫它传真猫。这里附上我买的型号,二手,95¥。

Dell RD02-D400 USB 56K Modem
Dell RD02-D400 USB 56K Modem

Windows 11 依然保留了历史悠久的驱动文件modem.sys,因此可以插上即用,方便免驱。如下图所示:

写程序自动拨号

Modem 在编程接口上属于串口设备,在写程序前,需要先确定设备路径。

设备管理器中的调制解调器
设备管理器中的调制解调器

首先打开设备管理器,找到“调制解调器”设备;
之后打开“属性”,切到“调制解调器”页,记下“端口”;
最后请 ChatGPT 简单写一段代码,安装一下依赖pip install pyserial即可。

import serial
import time

# Replace with the actual COM port (e.g., "COM3" on Windows or "/dev/ttyUSB0" on Linux/macOS)
MODEM_PORT = 'COM4'
BAUD_RATE = 9600  # Most modems use a baud rate of 9600

def dial_number(phone_number):
    try:
        # Open a serial connection to the modem
        modem = serial.Serial(MODEM_PORT, BAUD_RATE, timeout=1)

        # Wait for the modem to initialize
        time.sleep(2)

        # Send the AT command to dial the number
        modem.write(f'ATD{phone_number};\r'.encode())

        # Wait a moment to let the modem process the command
        time.sleep(5)

        # Check for a response from the modem (Optional: use if you need to read responses)
        response = modem.read(100).decode()
        print("Modem response:", response)

        # Close the connection
        modem.close()

    except serial.SerialException as e:
        print(f"Failed to connect to modem: {e}")

# Replace with the phone number you want to dial
phone_number = "01234567890"
dial_number(phone_number)

之后就是一些无聊的UI工作,接入数据表格,设计交互等等。

落地效果

偷懒,GUI就免了,使用CLI交互吧!

摘下话筒
呼叫前显示出考生姓名,按下 Enter 呼出对应的号码
等待接通
绝赞招生中
挂断话筒,回第一步

这样一来,我的手指就轻松多了。

一些后话

作为95后,电话网络对现在的我来说,已经属于神秘的古代技术。现在,通话网络都在升级:GSM被VoLTE代替,就连家里所谓的“固话”也已经是从光猫接出来的了,我丝毫不会怀疑,模拟电话网络已经,或者在不远的将来就会,被数字化的方式取代,后者会更方便我用程序来操作。
至于电脑进行固话拨号的事情,我想这个问题肯定有不少在售的产品能搞定,但是在2024年的今天,顺手解决这样一个古老的问题,莫名地很有成就感,哈哈!

Licensed under CC BY-NC-SA 4.0
Viewer Count: