Jump to content
Форум по продукции MOXA

Recommended Posts

Добрый день

Может кто подсказать в каком направлении копать что-бы получать данные с контроллера IoLogic 1210 из 1С 8.2. сразу признаюсь не очень силен в стандартах OPC :)

Link to comment

Ээээээ.... Боюсь, что мы совсем не сильны в 1С :-)

У нас стоит другая система, поэтому с 1С, к сожалению, ни малейшего опыта работы.

 

Если в 1С есть какие-нибудь возможности работать с OPC или Modbus, то пришлите хоть кусочки описаний соответствующих функций, попробуем поразбираться.

Link to comment

появилась мысль реализовать эту связку через MXIO.NET он ведь поддерживает win32 API , вот пример вызова немного другой библиотеки через 1с с помощью DynamicWrapperX

 

 

 

Эксперименты с функциями Win 32 API в 1C

 

Пример №3 Разрушаем окна (на примере PopUp меню)

 

Регистрируем функции:

 

Wrap = CreateObject("DynamicWrapperX");

Wrap.Register("USER32.DLL", "FindWindow", "i=ss", "r=l");

Wrap.Register("USER32.DLL", "DestroyWindow", "i=h", "r=l");

 

получаем дискриптор окна поиском по классу #32768

HWND = Wrap.FindWindow("#32768","");

Если HWND<>0 Тогда

Wrap.DestroyWindow(HWND);

КонецЕсли;

 

Все менюшка исчезла

Внимание DestroyWindow() не работает в потоке!

 

Пример №4 Запрет запуска обработки или конфигурации более 1 раза (классический, мьютексы-взаимоисключения)

 

Регистрируем функции:

Wrap = CreateObject("DynamicWrapperX");

// создать мьютекс

Wrap.Register("KERNEL32.DLL", "CreateMutex", "i=lls", "r=l");

// открыть мьютекс

Wrap.Register("KERNEL32.DLL", "OpenMutex", "i=lls", "r=l");

// ожидание объекта

Wrap.Register("KERNEL32.DLL", "WaitForSingleObject", "i=hl", "r=l");

// высвобождение

Wrap.Register("KERNEL32.DLL", "ReleaseMutex", "i=h", "r=l");

// закрываем

Wrap.Register("KERNEL32.DLL", "CloseHandle", "i=h", "r=l");

 

Объявляем переменные:

MutexName = "MainErt";

MUTEX_ALL_ACCESS = 2031617;

Проверяем на существование мьютекса в системе:

HMutex = Wrap.OpenMutex(MUTEX_ALL_ACCESS,0,MutexName);

Если HMutex=0 Тогда

// создаем если не существует и высвобождаем на потом

HMutex = Wrap.CreateMutex(0,1,MutexName);

Wrap.ReleaseMutex(HMutex);

Иначе

Предупреждение("Обработка уже запущена работа невозможна!");

КонецЕсли;

Link to comment

пытаюсь подключить метод - Wrap.Register("MXIO_NET.DLL", "MXEIO_Init", "r=l");

выдает ошибку :(

- МодульПриложения(181)}: Ошибка при вызове метода контекста (Register): Неизвестная ошибка

Wrap.Register("MXIO_NET.DLL", "MXEIO_Init", "r=l");

по причине:

Неизвестная ошибка

Link to comment
  • 2 weeks later...

Немного продолжу данную тему, компоненту делал сначала на C# потом в силу некоторых обстоятельств взял за основу пример на Visual C++ 2010 Express и пробую на ней компоненту запустить, Теперь вопрос вот кусок кода:

void WINAPI InitMoxa()

{

//Загрузили DLL

HMODULE hUsbpd = LoadLibrary(L"D:\mxio_net.dll");

//Экспортировали функции

int (WINAPI*initMXEIO)();

(FARPROC &)initMXEIO = GetProcAddress(hUsbpd,"MXEIO_Init");

initMXEIO();

}

выдает ошибку при запуске, когда доходит до запуска initMXEIO() -

Необработанное исключение в "0x00000000" в "proba.exe": 0xC0000005: Нарушение прав доступа при чтении "0x00000000".

как можно загрузить MXEIO_NET.DLL, и воспользоваться функциями, кстати на C# все прекрасно работает

Link to comment

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...