如何使用powershell使用FTDI D2XX驱动程序库的FT_ListDevices获取设备信息

时间:2016-02-18 05:04:08

标签: powershell dllimport ftdi d2xx

我正在使用FT245R USB转并口FIFO接口设备。该芯片使用FTDI D2XX库。我使用powershell和DllImport来加载和访问库函数。我在使用FT_ListDevices函数时遇到问题。设备的参考和示例可以在下面的链接中找到。参见第11,12页和13的一部分

http://www.ftdichip.com/Support/Documents/ProgramGuides/D2XX_Programmer's_Guide(FT_000071).pdf

一位同事和我能够得到第二个例子,但我们没有成功获得第三个。以下是有效的代码。第三个示例类似于下面的示例,但它使用数组数组而不是Byte数组,如下面的工作代码所示。

from django.views.edit import CreateView
from appname.forms import FooForm

class FooCreateView(CreateView):
    model = Foo
    form_class = FooForm

让示例3工作的最佳尝试如下。

#2. Get serial number of first device
$FT_LIST_BY_INDEX = '0x40000000'
$FT_OPEN_BY_SERIAL_NUMBER = 1

$numDevs = 0

$SerialNumber = New-Object byte[] 64

$run=@'
[DllImport("FTD2XX.dll")] static public extern UInt32 FT_ListDevices(System.IntPtr pvArg1, byte[] pvArg2, System.UInt32 dwFlags);
'@
$typef = Add-Type -MemberDefinition $run -Name "ListDevices" -PassThru
$typef::FT_ListDevices($numDevs, $SerialNumber, $FT_LIST_BY_INDEX -bor $FT_OPEN_BY_SERIAL_NUMBER)
[System.Text.Encoding]::ASCII.GetString($SerialNumber)

所以这里的目标是在DLLimport语句中将Array更改为Byte [] [],但是 这将导致错误。 。 。

错误:“嵌套数组没有编组支持”

我做了一些研究,并尝试使用自定义编组,但这导致了另一个错误。

错误:“无法找到类型或命名空间名称'ICuztomMarshaler'”

我需要能够将Jagged / Nested数组发送到库中才能得到这个 工作。

请提前帮助并表示感谢。 J.韦德

1 个答案:

答案 0 :(得分:0)

您使用的是64或x86版本的PowerShell来运行代码吗?我之前遇到过类似的问题,因为在运行“错误”位版本的PowerShell时,驱动程序无法找到设备。