从数据采集单元读取数据(测量计算)

2 投票
1 回答
2245 浏览
提问于 2025-04-17 20:51

我有一个数据采集设备(Measurement Computing 的 USB-2408),我想写一些 Python 代码来尽量实时地显示这些数据,不过显然这有一定的限制,所以我能得到什么就是什么。我碰到一个人,他几乎已经完成了这个工作,具体可以查看他的链接

于是我找到了他的PyUL 网站,尝试了一些他提供的示例代码(我直接复制粘贴到一个 .py 文件里,然后放到我相关的目录下)。当我通过命令行调用这段代码时(...\Python27\Lib\site-packages\sciypy>python example1.py),我遇到了一个错误代码:

C:\Program Files (x86)\Python27\Lib\site-packages\scipy>
Traceback (most recent call last):
  File "daq-scipy1.py", line 3, in <module>
    import UniversalLibrary as UL
  File "C:\Program Files (x86)\Python27\lib\site-packaget__.py", line 36, in <module>
    from UniversalLibrary import *
  File "C:\Program Files (x86)\Python27\lib\site-packagersalLibrary.py", line 53, in <module>
    import numpy
  File "C:\Program Files (x86)\Python27\lib\site-packages\numpy\__init__.py", line 168, in <module>
    from . import add_newdocs
  File "C:\Program Files (x86)\Python27\lib\site-packages\numpy\add_newdocs.py", line 13, in <module>
    from numpy.lib import add_newdoc
  File "C:\Program Files (x86)\Python27\lib\site-packages\numpy\lib\__init__.py", line 22, in <module>
    from .npyio import *
  File "C:\Program Files (x86)\Python27\lib\site-packages\numpy\lib\npyio.py", line 4, in <module>
    from . import format
  File "C:\Program Files (x86)\Python27\lib\site-packages\numpy\lib\format.py", line 141, in <module>
    import io
  File "C:\Program Files (x86)\Python27\Lib\site-packages\scipy\io\__init__.py" line 85, in <module>
    from .matlab import loadmat, savemat, whosmat, byteo
  File "C:\Program Files (x86)\Python27\Lib\site-packages\scipy\io\matlab\__init__.py", line 13, in <module>
    from .mio import loadmat, savemat, whosmat
  File "C:\Program Files (x86)\Python27\Lib\site-packages\scipy\io\matlab\mio.py", line 10, in <module>
    from scipy.lib.six import string_types
  File "C:\Program Files (x86)\Python27\lib\site-packages\scipy\__init__.py", line 77, in <module>
    from numpy import oldnumeric
  File "C:\Program Files (x86)\Python27\lib\site-packages\numpy\oldnumeric\__init__.py", line 24, in <module>
    from .compat import *
  File "C:\Program Files (x86)\Python27\lib\site-package\numpy\oldnumeric\compat.py", line 14, in <module>
    from . import functions
  File "C:\Program Files (x86)\Python27\lib\site-packages\numpy\oldnumeric\functions.py", line 9, in <module>
    from .typeconv import convtypecode, convtypecode2
  File "C:\Program Files (x86)\Python27\lib\site-packages\numpy\oldnumeric\typeconv.py", line 7, in <module>
    oldtype2dtype = {'1': np.dtype(np.byte),
AttributeError: 'module' object has no attribute 'dtype'

是不是有某个文件或模块我没有安装,导致这段代码无法运行?我运行这段代码只是想看看能否以一种不同于他们提供的软件的方式处理来自设备的数据。如果有更好的方法,请告诉我。我已经尝试过 pySerial、pywinusb、d2xx 以及其他像 pywin32 的库,但都没有成功。现在在设备管理器里,这个设备被列为一个全新的设备类别:DAS 组件,而旧设备以前是归类在 USB 人机接口设备下的。

相关信息:在 Windows 8 上使用 Python2.7(32位)。

1 个回答

2

我还没有完全搞清楚这个问题,但看起来是和 numpy 有关,因为 Python 找不到 np 里的 dtype 属性,而 numpy 是通过这个方式在文件 oldnumeric/typeconv.py 中被引入的。

我怀疑可能是以下两种情况:

  1. 你的 numpy 安装文件可能损坏了(这种情况下,最好重新安装 numpy),或者
  2. 可能存在某种命名空间冲突。

numpy 有关于 dtype 的测试代码(在 ../numpy/core/tests/test_dtype.py 中),你可以运行 numpy 的测试套件,看看是否会出现和 dtype 相关的错误。

我还注意到,PyUL 代码使用了旧的 Numeric 包,这可能和 numpy 产生冲突。

撰写回答