dwf


Namedwf JSON
Version 0.1.0 PyPI version JSON
download
home_pagehttps://github.com/amuramatsu/dwf/
SummaryDigilent's DWF library wrapper
upload_time
maintainerNone
docs_urlNone
authorMURAMATSU Atsushi
requires_pythonNone
licenseMIT
keywords
VCS
bugtrack_url
requirements No requirements were recorded.
Travis-CI No Travis.
coveralls test coverage No coveralls.
            =========================================
Digilent's DWF Library wrapper for python
=========================================

What is this?
=============

This is a python library for controlling Analog Discovery and
Electronics Explorer series presetned by `Digilent inc.`_
This library needs Waveforms SDK.

I tested this library with Analog Discovery 2 and
`Waveforms 2015`_ in below environment.

* python 3.5.1, python 2.7.10 on OSX 10.11
* python 3.4.3, python 2.7.6 on Ubuntu 14.04LTS
* python 3.5.1 on Windows 7

I wrote this library for supporting python 2.6, 2.7, 3.3 or above.

This software is released under the MIT License, see LICENSE.txt.

.. _Digilent inc.: https://digilentinc.com/
.. _Waveforms 2015: https://reference.digilentinc.com/waveforms3

Installing
==========

You can install the latest stable version from PyPI:

.. code:: bash

  pip install dwf

or if you prefer, install it from this repo like this:

.. code:: bash

  python setup.py install


API of this library
===================

This library has two sets of API. There are Function-based API and
Class-based API.

Function-based API
~~~~~~~~~~~~~~~~~~

This API is like as C functions which supplied by Digilent. But
some modifications are applied for pythonic-way programming.

1. When error is returned by SDK, the exception ``DWFError`` is
   raised.
2. All output values, which are passed by reference, are changed
   to return-value of function.
3. Arrays of parameters are converted from/to python's list.

Examples
^^^^^^^^

SDK version check in C language is like as:

.. code:: c

  char version[32];
  FDwfGetVersion(version);
  printf("DWF version: %s\n", version);

With this library using function-based API, same code is
translated to:
  
.. code:: python

  version = dwf.FDwfGetVersion()
  print("DWF version: " + version)

.. _example code:

Another example is here. This piece of code is quoted from
``analogout_custom.c`` in Waveforms SDK sample.

.. code:: c

  HDWF hdwf;
  double rgdSamples[4096];
  for (int i = 0; i < 4096; i++) rgdSamples[i] = 2.0*i/4095-1;
  
  FDwfDeviceOpen(-1, &hdwf);
  FDwfAnalogOutNodeSet(hdwf, 0, AnalogOutNodeCarrier, true);
  FDwfAnalogOutNodeFunctionSet(hdwf, 0, AnalogOutNodeCarrier, funcCustom);
  FDwfAnalogOutNodeDataSet(hdwf, 0, AnalogOutNodeCarrier, rgdSamples, 4096);
  ...

In python with this library, like as:
  
.. code:: python
  
  rgdSamples = []
  for i in range(4096): rgdSamples.append(2.0*i/4095-1)
  
  hdwf = dwf.FDwfDeviceOpen()
  dwf.FDwfAnalogOutNodeSet(hdwf, 0, dwf.AnalogOutNodeCarrier, True)
  dwf.FDwfAnalogOutNodeFunctionSet(hdwf, 0, dwf.AnalogOutNodeCarrier, dwf.funcCustom)
  dwf.FDwfAnalogOutNodeDataSet(hdwf, 0, dwf.AnalogOutNodeCarrier, rgdSamples)
  ...


Class-based API
~~~~~~~~~~~~~~~

Class-based APIs are made from function-based APIs. Documents of
this API is now writing.

This API has below function and classes.

``DwfEnumeration()``
   Device enumeration. This function returns list of ``DwfDevice``.
``class DwfDevice``
   call ``FDwfEnum*()`` functions.
``class Dwf``
   call ``FDwfDevice*()`` functions.
``class DwfAnalogIn``
   call ``FDwfAnalogIn*()`` functions.
``class DwfAnalogOut``
   call ``FDwfAnalogOut*()`` functions.
``class DwfAnalogIO``
   call ``FDwfAnalogIO*()`` functions.
``class DwfDigitalIO``
   call ``FDwfDigitalIO*()`` functions.
``class DwfDigitalIn``
   call ``FDwfDigitalIn*()`` functions.
``class DwfDigitalOut``
   call ``FDwfDigitalOut*()`` functions.

With this API, `example code`_ is translated to

.. code:: python
  
  rgdSamples = []
  for i in range(4096): rgdSamples.append(2.0*i/4095-1)
  
  dwf_ao = dwf.DwfAnalogOut()
  dwf_ao.nodeSet(0, dwf_ao.NODE.CARRIER, True)
  dwf_ao.nodeFunctionSet(0, dwf_ao.NODE.CARRIER, dwf_ao.FUNC.CUSTOM)
  dwf_ao.nodeDataSet(0, dwf_ao.NODE.CARRIER, rgdSamples)
  ...
            

Raw data

            {
    "_id": null,
    "maintainer": null,
    "docs_url": null,
    "requires_python": null,
    "maintainer_email": null,
    "cheesecake_code_kwalitee_id": null,
    "keywords": null,
    "author": "MURAMATSU Atsushi",
    "home_page": "https://github.com/amuramatsu/dwf/",
    "github_user": "amuramatsu",
    "download_url": "UNKNOWN",
    "platform": "Linux,Mac,Windows",
    "version": "0.1.0",
    "cheesecake_documentation_id": null,
    "description": "=========================================\nDigilent's DWF Library wrapper for python\n=========================================\n\nWhat is this?\n=============\n\nThis is a python library for controlling Analog Discovery and\nElectronics Explorer series presetned by `Digilent inc.`_\nThis library needs Waveforms SDK.\n\nI tested this library with Analog Discovery 2 and\n`Waveforms 2015`_ in below environment.\n\n* python 3.5.1, python 2.7.10 on OSX 10.11\n* python 3.4.3, python 2.7.6 on Ubuntu 14.04LTS\n* python 3.5.1 on Windows 7\n\nI wrote this library for supporting python 2.6, 2.7, 3.3 or above.\n\nThis software is released under the MIT License, see LICENSE.txt.\n\n.. _Digilent inc.: https://digilentinc.com/\n.. _Waveforms 2015: https://reference.digilentinc.com/waveforms3\n\nInstalling\n==========\n\nYou can install the latest stable version from PyPI:\n\n.. code:: bash\n\n  pip install dwf\n\nor if you prefer, install it from this repo like this:\n\n.. code:: bash\n\n  python setup.py install\n\n\nAPI of this library\n===================\n\nThis library has two sets of API. There are Function-based API and\nClass-based API.\n\nFunction-based API\n~~~~~~~~~~~~~~~~~~\n\nThis API is like as C functions which supplied by Digilent. But\nsome modifications are applied for pythonic-way programming.\n\n1. When error is returned by SDK, the exception ``DWFError`` is\n   raised.\n2. All output values, which are passed by reference, are changed\n   to return-value of function.\n3. Arrays of parameters are converted from/to python's list.\n\nExamples\n^^^^^^^^\n\nSDK version check in C language is like as:\n\n.. code:: c\n\n  char version[32];\n  FDwfGetVersion(version);\n  printf(\"DWF version: %s\\n\", version);\n\nWith this library using function-based API, same code is\ntranslated to:\n  \n.. code:: python\n\n  version = dwf.FDwfGetVersion()\n  print(\"DWF version: \" + version)\n\n.. _example code:\n\nAnother example is here. This piece of code is quoted from\n``analogout_custom.c`` in Waveforms SDK sample.\n\n.. code:: c\n\n  HDWF hdwf;\n  double rgdSamples[4096];\n  for (int i = 0; i < 4096; i++) rgdSamples[i] = 2.0*i/4095-1;\n  \n  FDwfDeviceOpen(-1, &hdwf);\n  FDwfAnalogOutNodeSet(hdwf, 0, AnalogOutNodeCarrier, true);\n  FDwfAnalogOutNodeFunctionSet(hdwf, 0, AnalogOutNodeCarrier, funcCustom);\n  FDwfAnalogOutNodeDataSet(hdwf, 0, AnalogOutNodeCarrier, rgdSamples, 4096);\n  ...\n\nIn python with this library, like as:\n  \n.. code:: python\n  \n  rgdSamples = []\n  for i in range(4096): rgdSamples.append(2.0*i/4095-1)\n  \n  hdwf = dwf.FDwfDeviceOpen()\n  dwf.FDwfAnalogOutNodeSet(hdwf, 0, dwf.AnalogOutNodeCarrier, True)\n  dwf.FDwfAnalogOutNodeFunctionSet(hdwf, 0, dwf.AnalogOutNodeCarrier, dwf.funcCustom)\n  dwf.FDwfAnalogOutNodeDataSet(hdwf, 0, dwf.AnalogOutNodeCarrier, rgdSamples)\n  ...\n\n\nClass-based API\n~~~~~~~~~~~~~~~\n\nClass-based APIs are made from function-based APIs. Documents of\nthis API is now writing.\n\nThis API has below function and classes.\n\n``DwfEnumeration()``\n   Device enumeration. This function returns list of ``DwfDevice``.\n``class DwfDevice``\n   call ``FDwfEnum*()`` functions.\n``class Dwf``\n   call ``FDwfDevice*()`` functions.\n``class DwfAnalogIn``\n   call ``FDwfAnalogIn*()`` functions.\n``class DwfAnalogOut``\n   call ``FDwfAnalogOut*()`` functions.\n``class DwfAnalogIO``\n   call ``FDwfAnalogIO*()`` functions.\n``class DwfDigitalIO``\n   call ``FDwfDigitalIO*()`` functions.\n``class DwfDigitalIn``\n   call ``FDwfDigitalIn*()`` functions.\n``class DwfDigitalOut``\n   call ``FDwfDigitalOut*()`` functions.\n\nWith this API, `example code`_ is translated to\n\n.. code:: python\n  \n  rgdSamples = []\n  for i in range(4096): rgdSamples.append(2.0*i/4095-1)\n  \n  dwf_ao = dwf.DwfAnalogOut()\n  dwf_ao.nodeSet(0, dwf_ao.NODE.CARRIER, True)\n  dwf_ao.nodeFunctionSet(0, dwf_ao.NODE.CARRIER, dwf_ao.FUNC.CUSTOM)\n  dwf_ao.nodeDataSet(0, dwf_ao.NODE.CARRIER, rgdSamples)\n  ...",
    "lcname": "dwf",
    "name": "dwf",
    "github": true,
    "coveralls": false,
    "bugtrack_url": null,
    "license": "MIT",
    "travis_ci": false,
    "github_project": "dwf",
    "summary": "Digilent's DWF library wrapper",
    "split_keywords": [],
    "author_email": "amura@tomato.sakura.ne.jp",
    "urls": [],
    "cheesecake_installability_id": null
}
        
Elapsed time: 0.04314s