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

时间:2015-07-02 11:00:19

标签: 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()
    elif x==2:
        flag=0
        pyautogui.mouseUp()

串行传输是接收

  

0 - 未按下开关
   1 - 开关按下
   2 - 刚刚离开

A 2始终在1和0之间传输。

我的问题是,当我运行此代码时,单击鼠标后会出现以下错误。

  

追踪(最近一次呼叫最后一次):

     

文件" C:\ Python27 \ LeftClick.py",第12行,in           pyautogui.mouseUp()

     

文件" C:\ Python27 \ lib \ site-packages \ pyautogui__init __。py",line   234,在mouseUp中

     

platformModule._mouseUp(x,y,' left')

     

文件" C:\ Python27 \ lib \ site-packages \ pyautogui_pyautogui_win.py",   第415行,在_mouseUp中

     

_sendMouseEvent(MOUSEEVENTF_LEFTUP,x,y)

     

文件" C:\ Python27 \ lib \ site-packages \ pyautogui_pyautogui_win.py",   第480行,在_sendMouseEvent中           提出ctypes.WinError()

     

WindowsError:[错误997]重叠的I / O操作正在进行中。

1 个答案:

答案 0 :(得分:0)

在上面的评论中,你说如果你把串行输出,如果我正确读取它,程序将按预期工作。你还说鼠标移动在COM3上工作正常,但如果删除串行通信解决了问题,那么我说这是一个相当强烈的迹象表明COM3可能是罪魁祸首,它当然应该被调查。 / p>

我的建议:为串行设备使用不同的COM端口。您可以通过以下方式更改使用的数字:

Device Manager > Ports (COM & LPT) > Right Click your device > Properties > Port Settings > Advanced > COM Port Number