【工具自荐】邻云 - 让局域网设备互联

你好,我测试了下,难度应该不算高,在手机与电脑配对后,是可以通过 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 远程输入文字、同步剪贴板