2015-02-03 2 views
1

Я начинаю здесь с моего вопроса, но понимаю, что на форуме Labview может потребоваться ответить.Передача пути к Labview DLL в Python

Итак, у меня есть DLL, которая была создана в Labview, и я обращаюсь к ней через Python 3.3.3. Я знаю, что я обращаюсь к нему правильно, так как я могу получить доступ к некоторым из функций уже. Тем не менее, у меня возникла проблема, когда я пытаюсь передать путь к файлу, в котором я столкнулся с проблемами.

Здесь детали вызова функции из .h файла, который был создан, когда DLL была создана:

/*! 
* ClockInit 
*/ 
int32_t __cdecl ClockInit(uint32_t HandleIn, char fileUseDialog[]); 

А вот Питон фрагмент кода, который я использую, чтобы вызвать функцию:

import os, sys, time 
from ctypes import * 
ftdi=cdll.LoadLibrary('C:\\Python33\\DLLs\\Savlo16FF_DLL_old\\Salvo16FF DLL\\Salvo16FF.dll') 

FPGA_DeviceHandle=c_ulong(0) 
Status=ftdi.FPGAInit(byref(FPGA_DeviceHandle)) 

path="C:/Python33/Scripts/RegisterMap_100M_1p8HCSL.txt" 
ftdi.ClockInit(FPGA_DeviceHandle,path) 

А вот ошибка, что я вернусь из Labview:

http://i.stack.imgur.com/PTz61.png

Лучшее, что я могу сказать, это то, что я не правильно передаю путь функции. Я пробовал много разных вариантов (менял '/' на '\', пытался использовать create_string_buffer), но безрезультатно.

Заранее благодарим за любую помощь!

+0

@eryksun, это должен быть ответ. – nekomatic

+0

@eryksun - переход к 'path = b'C: \\ Python33 \\ Scripts \\ RegisterMap_100M_1p8HCSL.txt 'запускался без проблем. Спасибо, что нашли время, чтобы объяснить эту тонкую деталь, что я не уверен, что я получил бы от изучения учебника ctypes. Будучи программистом-новичком, всегда приятно находить людей, желающих учить других, которых хотят преподавать. Благодаря!! :) – TheEngiNerd

ответ

0

Слэши идут другим путем в переменной пути, чтобы оценить LabVIEW «не путь» и, как справедливо указано выше, python3 требует использовать префикс «b».