Tim Posted September 8, 2011 Share Posted September 8, 2011 Добрый день Может кто подсказать в каком направлении копать что-бы получать данные с контроллера IoLogic 1210 из 1С 8.2. сразу признаюсь не очень силен в стандартах OPC Link to comment
Komantsev Posted September 8, 2011 Share Posted September 8, 2011 Ээээээ.... Боюсь, что мы совсем не сильны в 1С :-) У нас стоит другая система, поэтому с 1С, к сожалению, ни малейшего опыта работы. Если в 1С есть какие-нибудь возможности работать с OPC или Modbus, то пришлите хоть кусочки описаний соответствующих функций, попробуем поразбираться. Link to comment
Tim Posted September 9, 2011 Author Share Posted September 9, 2011 появилась мысль реализовать эту связку через 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
Tim Posted September 12, 2011 Author Share Posted September 12, 2011 пытаюсь подключить метод - Wrap.Register("MXIO_NET.DLL", "MXEIO_Init", "r=l"); выдает ошибку - МодульПриложения(181)}: Ошибка при вызове метода контекста (Register): Неизвестная ошибка Wrap.Register("MXIO_NET.DLL", "MXEIO_Init", "r=l"); по причине: Неизвестная ошибка Link to comment
Tim Posted September 16, 2011 Author Share Posted September 16, 2011 тема уже наверное не актуальна, сделал внешнюю компоненту для 1С Link to comment
Tim Posted September 28, 2011 Author Share Posted September 28, 2011 Немного продолжу данную тему, компоненту делал сначала на 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
Tim Posted September 30, 2011 Author Share Posted September 30, 2011 видно про меня здесь забыли Link to comment
Komantsev Posted October 7, 2011 Share Posted October 7, 2011 Добрый день, Прошу прощения за поздний ответ. Если я не ошибаюсь, под Visual C++ идёт библиотека не .Net, а "классическая". Не пробовали ли Вы использовать эту библиотеку? Link to comment
Recommended Posts
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 accountSign in
Already have an account? Sign in here.
Sign In Now