2006-01-07

IronPython Beta 1

.NET プラットフォーム用 Python である IronPython のベータ版を、マイクロソフトが公開した。.NET のライブラリは開発言語を問わず、.NET のコードから呼び出すことができる。C# で書いたクラスライブラリを、Visual Basic .NET から呼び出せる。



IronPython で NI-DAQmx というI/Oデバイス用の .NET API を呼び出してみた。A/D変換ボード 2 チャンネルから電圧を測定して、CSV ファイルに書き込むコードは以下のとおり。ちなみに、NI-DAQmx はハードウェアなしでも動作するが、インストーラが数百メガバイトあるので、わざわざダウンロードしないように。




"""continuous.py

Instruction:

1. Save this file under IronPython folder.

2. In command prompt, navigate to IronPython folder, then type

IronPythonConsole.exe continuous.py

3. You will have a file "foo.csv" which contains the acquisition result.

"""



import clr

clr.AddReferenceToFile(r"C:\Program Files\National Instruments\MeasurementStudioVS2003\DotNET\Assemblies\Current\NationalInstruments.DAQmx.dll")

from NationalInstruments.DAQmx import *



task = Task()

task.AIChannels.CreateVoltageChannel("Dev1/ai0:1",

"",

AITerminalConfiguration.Differential,

-10,

10,

AIVoltageUnits.Volts)

task.Timing.ConfigureSampleClock("",

1000,

SampleClockActiveEdge.Rising,

SampleQuantityMode.ContinuousSamples,

1000)

reader = AnalogMultiChannelReader(task.Stream)

f = file("foo.csv", "w")

task.Start()

for i in range(20):

data = reader.ReadMultiSample(10)

for x in range(10):

print $gt;>f, data[0,x], ",", data[1,x]

task.Stop()