我正在做一个小型项目,其中开关按下会导致鼠标点击,换句话说,开关可以替代我的鼠标左键。
我的代码是
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操作正在进行中。
答案 0 :(得分:0)
在上面的评论中,你说如果你把串行输出,如果我正确读取它,程序将按预期工作。你还说鼠标移动在COM3上工作正常,但如果删除串行通信解决了问题,那么我说这是一个相当强烈的迹象表明COM3可能是罪魁祸首,它当然应该被调查。 / p>
我的建议:为串行设备使用不同的COM端口。您可以通过以下方式更改使用的数字:
Device Manager > Ports (COM & LPT) > Right Click your device > Properties > Port Settings > Advanced > COM Port Number