Skip to content

用python对可以手动marker的研究设备进行同步(socket)、记录实验信息(logging)、用eprime的socket控制所有可联网设备(socket)、保存导出数据(pyautogui)。

License

Notifications You must be signed in to change notification settings

tianzilei/simplesocketmarker

Repository files navigation

SImple SOcket MArker 简易局域网同步

用python对可以手动marker的研究设备进行同步(socket)、记录实验信息(logging)、用eprime的socket控制所有可联网设备(socket)、保存导出数据(pyautogui)。

你问我为什么不用serialport?有些老设备不支持serialport。

  • 用的是简单的点击器pyautogui,需要先确定位置(考虑到采集设备性能孱弱,某些赛扬+核显,采集已经消耗了大量的系统资源,进行ocr困难。所以现在用了tesseract而不是paddle),还有win7系统只能用py310等情况需要解决,所以现在的重点是先能用,后续缓慢优化
  • 目前的requirements.txt是手写的,因为近期还会修改,且opencv-python也没在pyautogui的需求里
  • 除了client_eprime.pystd_client.pystd_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.pystd_server.py
  • 修改后要调试一下
  • 需要一个命令窗口执行std_server.py,比如使用bat文件。server要在性能相对好的设备(有时候会受到DDOS),以下是我用的bat:cd 'path/to/scripts'python std_server.py

TODO 更新计划

  • EPrime经常给我DDOS:特定了接受的消息范围,这个有用但是后面会优化一下减少判断
  • 手机上接受服务器消息+beeware打包
  • 自动获取IP:使用了asyncio其实应该是multithread,但就是玩
  • 优化结构,不同仪器改为function,入口改到std_client,选择仪器导入不同的msghandler()

About

用python对可以手动marker的研究设备进行同步(socket)、记录实验信息(logging)、用eprime的socket控制所有可联网设备(socket)、保存导出数据(pyautogui)。

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages