用python对可以手动marker的研究设备进行同步(socket)、记录实验信息(logging)、用eprime的socket控制所有可联网设备(socket)、保存导出数据(pyautogui)。
你问我为什么不用serialport?有些老设备不支持serialport。穷
- 用的是简单的点击器pyautogui,需要先确定位置(考虑到采集设备性能孱弱,
某些赛扬+核显,采集已经消耗了大量的系统资源,进行ocr困难。所以现在用了tesseract而不是paddle),还有win7系统只能用py310等情况需要解决,所以现在的重点是先能用,后续缓慢优化 - 目前的requirements.txt是手写的,因为近期还会修改,且opencv-python也没在pyautogui的需求里
- 除了client_eprime.py、std_client.py和std_server.py都是特定的设备,需要修改
- 需要按照pytesseract的文档手动安装tesseract
- client_biopac:biopac,mp150, 采集设备Thinkpad x1c(分辨率决定了点击位置,后续可能更新)
- client_lsci:pimsoft,PeriCam PSI NR,采集设备dell工作站,win7
- client_shimadzu:shimadzu,台式fnirs,采集设备不明(knirs窗口有点复杂,activate()很不好用,需要搭配ctrl+tab)
- client_tobii:本质上是两个设备放在一起,tobii的眼镜+无线肌电,脚本参考价值低,但是对某些情况有启发作用(有的程序不能直接activate(),需要先(或者后)maximize())
- 首先安装依赖
pip install -r requirements
- 根据设备修改脚本std_client.py和std_server.py
- 修改后要调试一下
- 需要一个命令窗口执行std_server.py,比如使用bat文件。server要在性能相对好的设备(有时候会受到DDOS),以下是我用的bat:
cd 'path/to/scripts'
,python std_server.py
。
- EPrime经常给我DDOS:特定了接受的消息范围,这个有用但是后面会优化一下减少判断
- 手机上接受服务器消息+beeware打包
- 自动获取IP:使用了asyncio
其实应该是multithread,但就是玩 - 优化结构,不同仪器改为function,入口改到std_client,选择仪器导入不同的msghandler()