Я работаю над своей докторской диссертацией по химии, и по этой причине мне нужно написать программное приложение, которое поможет мне с визуализацией образцов под микроскопом. Этот микроскоп оснащен нанопозиционным столиком x-y-z. Этап контролируется с помощью неуправляемой библиотеки DLL, написанной на VC ++ производителем оборудования. Я мог бы предоставить вам более подробную информацию о необходимых, но позвольте мне начать с этого;
Один из методов в dll позволяет мне прочитать настройки для оси движения:
C ++ синтаксис:
BOOL E7XX_qSVO (int ID, const char* szAxes, BOOL* pbValueArray)
Где BOOL равно int 0 или 1 в соответствии с соглашением.
Оболочка My C # содержит:
[DllImport("E7XX_GCS_DLL.dll", EntryPoint = "E7XX_qSVO")]
public static extern int qSVO(int iId, string sAxes, int []iValArray);
Мне кажется, это правильно. Однако, когда я пытаюсь сделать что-то подобное в моем основном приложении (запросить оси 1,2 и 3):
Int32 [] _iValues = new Int32[3];
E7XXController.qSVO(m_iControllerID, "123", _iValues);
Я последовательно получаю массив, подобный этому:
{6, 0, 10}, а я должен получить {0, 0, 0} в соответствии с отображением на самом устройстве. Дополнительная функция:
BOOL E7XX_SVO (int ID, const char* szAxes, const BOOL* pbValueArray)
, чтобы установить те же биты состояния на сцене, также не работают ...
Другие команды в dll работают отлично. Я могу передавать строки и удваивается без проблем, но не типа BOOL ...
Ребята, вы понимаете, что может быть не так?