Python 为什么以下鼠标单击代码会导致Windows错误997?

Python 为什么以下鼠标单击代码会导致Windows错误997?,python,python-2.7,Python,Python 2.7,我正在做一个小项目,按下开关会导致鼠标点击,或者换言之,该开关可以替代我的鼠标左键 我的代码是 import pyautogui , time , serial port = serial.Serial('COM3',9600) flag=0 while 1: reading=port.read() x=ord(reading) if x==1 and flag==0: flag=1 pyautogui.mouseDown()

我正在做一个小项目,按下开关会导致鼠标点击,或者换言之,该开关可以替代我的鼠标左键

我的代码是

import pyautogui , time , serial

port = serial.Serial('COM3',9600)
flag=0

while 1:
    reading=port.read()
    x=ord(reading)
    if x==1 and flag==0:
        flag=1
        pyautogui.mouseDown()
    elif x==2:
        flag=0
        pyautogui.mouseUp()
串行传输是这样的,它接收到

0-开关未按下
1-按下开关
2-开关就在左边

2总是在1和0之间传输

我的问题是,当我运行这段代码时,单击鼠标一次就会出现以下错误

回溯(最近一次呼叫最后一次):

文件“C:\Python27\LeftClick.py”,第12行,在 pyautogui.mouseUp()

文件“C:\Python27\lib\site packages\pyautogui\uuuuu init\uuuuuu.py”,第行 234,在穆塞普

平台模块。\u鼠标(x,y,‘左’)

文件“C:\Python27\lib\site packages\pyautogui\u pyautogui\u win.py”, 第415行,在mouseUp中

_sendMouseEvent(MOUSEEVENTF_LEFTUP,x,y)

文件“C:\Python27\lib\site packages\pyautogui\u pyautogui\u win.py”, 第480行,在SendMouseeEvent中 提升ctypes.WinError()

WindowsError:[Error 997]正在进行重叠的I/O操作


在上面的评论中,你说如果你把序列号拿出来,如果我读对了,程序就会按预期工作。你还说在COM3上鼠标移动可以正常工作,但是如果删除串行通信解决了这个问题,那么我会说这是一个相当有力的迹象,表明COM3可能是罪魁祸首,它肯定应该被调查

我的建议是:为串行设备使用不同的COM端口。您可以通过进入以下位置更改使用的号码:


设备管理器>端口(COM&LPT)>右键单击您的设备>属性>端口设置>高级>COM端口号

我刚刚尝试复制它(但没有串行内容),我无法复制。不过有一个建议-您可以为交换机使用不同的COM端口吗?COM3历来是鼠标使用的端口-它可能会导致某种冲突。或者干脆把序列号从循环中取出,看看是否可以在for循环中生成点击,或者使用键盘输入触发。如果按下、按住并释放开关,会发送什么消息?@SiHa-COM3适用于鼠标指针的移动,程序在没有序列号的情况下工作。@caenyon only mouseDown()执行,然后出现上述错误我用ctypes模块单击鼠标,效果很好。因此,问题肯定不在COM3中。