В описании API MasterOPC Universal Modbus Server присутствуют функции others.CreateProcess и others.TerminateProcess, но описания по ним нет
Можете рассказать как ими пользоваться?
Вид для печати
В описании API MasterOPC Universal Modbus Server присутствуют функции others.CreateProcess и others.TerminateProcess, но описания по ним нет
Можете рассказать как ими пользоваться?
others.CreateProcess - coздает процесс.
aргумент (1) имя процесса должен быть string например "example.exe"
aргумент (2) командная строка должен быть string например "123"
aргумент (3) каталог должен быть string например "C:\\"
aргумент (4) видимость должен быть числом 0-SW_SHOW 1-SW_HIDE 2-SW_MINIMIZE 3-SW_MAXIMIZE
возвращает таблицу процесса
process = others.CreateProcess("example.exe","123","C:\\",0) ;
others.TerminateProcess - останавливает процесс
others.TerminateProcess(process);
Спасибо, работает
Только на последний параметр не реагирует
Или это особенность поведения cmd.exe?
Спасибо за форум очень много почерпнул и узнал.
Теперь обращаюсь за помощью.
Проблема в том что на стареньком ноуте странного вида редактор скрипта MasterOPC причем версия 2 работает
нормально а версия 3 - не активное окно редактирования. Может где описывалось подобное - ткните пожалуйста.
Скины окон прилагаю.Вложение 13634Вложение 13635
Очевидно у вас очень старый процессор, который не поддерживает набор команд Streaming SIMD Extensions 2 (SSE2). Данный набор команд необходим для функционирования одного из компонентов сервера.
Спасибо. Очень жаль удобно было бы отлаживать на объекте.
И еще вопрос вот эти функции:
server.SendAndReceiveData
и
server.SendAndReceiveDataByMask
в MasterOPC 3.0.0.2 поддерживает и TCP хотя в справке написано только COM
во второй версии есть поддержка TCP?
Да, должно работать.
Я использую с TCP, работает вполне себе
Кстати, есть особенность: если в момент опроса устройства штатным способом из другого устройства вызвать функцию этого ТСР устройства, которая опрашивает нештатно через SendAndReceiveData, запросы смешаются
Ну это так, к слову, небольшая проблемка, с которой столкнулся при реализации. Подозреваю, с обычным Modbus поведение будет таким же
Чтобы избежать этой ситуации, нужно в настройках узла включить настройку "Отслеживать Transaction ID".
Да, я пробовал
Тогда сервер шлёт свой штатный запрос, получает кусок ответа не своего, видит чужой ID, шлёт заново свой запрос, получает один случайный байт ещё идущего предыдущего нештатного запроса (ненулевой), снова обижается, снова шлёт запрос и снова получает один байт ненулевой, и так пока не сработает реинициализация узла
Мне не нужно чтобы сервер ещё точнее отфутболил неправильный ответ, мне нужно чтобы запросы шли по очереди. Поэтому я записываю идёт ли штатный опрос, и если идёт, жду его окончания.