你好,我测试了下,难度应该不算高,在手机与电脑配对后,是可以通过 COM 端口进行文字通信的,而且不需要复杂的网络扫描发现过程(一些校园网、公司网,会关掉广播功能),只要物理上邻近,就能通信。
先 pip install pyserial ,然后运行下面的 python 脚本:
import time
import serial
import serial.tools.list_ports
import keyboard
def get_bluetooth_port():
"""自动获取系统中的蓝牙虚拟串口"""
ports = list(serial.tools.list_ports.comports())
# 优先寻找描述里包含“蓝牙”或“bluetooth”的串口
bt_ports = [p.device for p in ports if "bluetooth" in p.description.lower() or "蓝牙" in p.description]
if bt_ports:
return bt_ports[0]
# 如果没找到显式的蓝牙串口,但有可用串口,则默认使用第一个
return ports[0].device if ports else None
def main():
port = get_bluetooth_port()
if not port:
print("未检测到任何 COM 端口。请确保手机与电脑已配对,且蓝牙已开启。")
return
print(f"正在监听蓝牙端口: {port} ... (请在手机端连接电脑并发送文字)")
try:
# 打开串口,设置 timeout=1 以便能响应 Ctrl+C
ser = serial.Serial(port, 115200, timeout=1)
buffer = bytearray()
while True:
if ser.in_waiting > 0:
data = ser.read(ser.in_waiting)
buffer.extend(data)
# 寻找换行符并提取完整的文本行
while b'\n' in buffer:
idx = buffer.index(b'\n')
line = buffer[:idx]
buffer = buffer[idx + 1:]
text = line.decode('utf-8').strip()
if text:
print(f"收到并输入: {text}")
# 模拟键盘自动写入到当前光标处
keyboard.write(text)
else:
time.sleep(0.05)
except KeyboardInterrupt:
print("\n程序已被用户手动终止。")
except Exception as e:
print(f"运行出错: {e}")
if __name__ == "__main__":
main()
在手机端从 play 安装「Serial Bluetooth Terminal」,就可以与配对好的电脑进行串口通信,发送文字。
另外,做了一个 BLE 通信,手机用网页通过 BLE 向电脑打字、传剪贴板的 demo,希望对你有帮助:【开发者自荐】手机通过蓝牙向 Windows 远程输入文字、同步剪贴板

