Железо и фокс | |
---|---|
Victoriacom Автор Сообщений: 112 Дата регистрации: 08.12.2010 |
Здравствуйте всем!
Выдали на днях китайскую железку и документацию для программиста. Как это обычно с ними бывает (с китайцами), где-то должен был быть подвох. Случилось сразу же, при чтении документации. Названия функций не соответствуют действительности. Это увидел через OCX, которую мне тоже вручили. Ну да бог с ним. Названия похожи, но в некоторых случаях приходится только догадываться что к чему. Принцип там такой: вызываю какую-либо функцию и должен сработать соответствующий OnEvent. Проблема в том, что этот OnEvent срабатывает как-то криво: долго думает. Например, код установки соединения:
Должен сработать OnEventCConnect. С первого раза ВСЕГДА не срабатывает. Сначала я крутил это в цикле:
Срабатывало, но после большого количества циклов. И что интересно, при SET STEP ON, это происходит значительно быстрее. Я понимаю, что дело в паузе, когда степаю F6. Игрался с паузами. А иногда и без отладчика срабатывало мгновенно. Понимаю, что что-то делаю не так, но что именно, не понимаю. Может кто-то что-то посоветует? Очень смущает то, что иногда можно приконнектиться только через 70 секунд, а иногда - через 4. Саму OCX я положил на пустую форму и включил ее (форму) в общедоступный класс. Чтобы было проще отлаживаться. OnEvent'ы все однотипные и выглядят примерно так:
Пробовал вариант, когда вызов функции один, а DOEVENTS я кручу в цикле:
Результат тот же. Исправлено 6 раз(а). Последнее : Victoriacom, 09.12.19 16:24 |
Re: Железо и фокс | |
---|---|
vk65 Сообщений: 402 Дата регистрации: 08.04.2008 |
А если попробовать DOEVENTS без FORCE ?
|
Re: Железо и фокс | |
---|---|
Victoriacom Автор Сообщений: 112 Дата регистрации: 08.12.2010 |
26 секунд. Это тоже много.
В программе есть операции по загрузке/выгрузке данных в/из прибор/а. Представляете, клиент будет каждый раз ожидать по 26 сек! И, ладно бы, всегда. А то иногда 3, иногда 50... Сейчас приконнектился 20 раз. Перезагрузил прибор, и еще пару раз. Должен сказать что коннект стабилизировался на 11 секундах. Это - без FORCE. Исправлено 4 раз(а). Последнее : Victoriacom, 09.12.19 16:44 |
Re: Железо и фокс | |
---|---|
Victoriacom Автор Сообщений: 112 Дата регистрации: 08.12.2010 |
Не. Все по-старому. Перезагрузил прибор и компьютер. И все вернулось.
|
Re: Железо и фокс | |
---|---|
dimuhametov Сообщений: 1562 Откуда: Костанай Дата регистрации: 01.11.2008 |
.
------------------ Незнание делает жизнь такой интересной. Исправлено 1 раз(а). Последнее : dimuhametov, 09.12.19 18:24 |
Re: Железо и фокс | |
---|---|
Igor Korolyov Сообщений: 34580 Дата регистрации: 28.05.2002 |
По идее для псевдо-синхронной работы правильный вариант последний - 1 вызов и ожидание в цикле. только вместо WAIT WINDOW '' TIMEOUT стоит применить INKEY(0.5), можно дополнить АПИшной Sleep(500)
Вряд ли тут дело в фоксе. Попробуй ещё асинхронный вариант работы. В общем виде это выглядит как Click кнопки start -> вызываем АПИ функцию соединения. OnConnected -> обрабатываем результат установления соединения, и вызываем АПИ функцию посылки следующей нужной команды - ну к примеру чтение данных из устройства. OnDataRead -> обрабатываем результат чтения данных, и вызываем следующую команду. Теория про "конечные автоматы" должна помочь понять как правильно реализовать всю последовательность работы. ------------------ WBR, Igor |
Re: Железо и фокс | |
---|---|
Victoriacom Автор Сообщений: 112 Дата регистрации: 08.12.2010 |
Спасибо. После замены WAIT WINDOW на INKEY и SLEEP, соединяется относительно стабильно 11~20 сек. Вообще, после общения с разработчиками по скайпу, я пришел к выводу, что этот прибор - то еще г-но. Наше руководство закупило два на пробу, теперь думает кому бы впихнуть. |
Re: Железо и фокс | |
---|---|
_vit Сообщений: 5176 Дата регистрации: 29.07.2002 |
С прибором возможно все в порядке.
Ты что, при каждой опреации обмена данными конектишься к прибору? Обычно приборы которые подключаются по Ethernet позволяют создавать и обмениваться по нескольким соединениям одновременно. В таком случае операция подключения может быть очень дорогой. Ведь сначала надо идентифицировать пользователя. Потом определить выделенные ему права. Создать сессию. Создать процесс или поток как минимум Выделить ресурсы. Создать необходимые объекты. Инициализировать их. Такое имеет смысл если обмен данными происходит с прибором происходит редко. Обычно приложение подключается к прибору один раз при запуске и переподключается при потере соединения. Хотя конечно зависит от задачи и от прибора. Одно дело считывать показания электросчетчиков раз в месяц, другое в реальном масштабе времени управлять процессом. |
Re: Железо и фокс | |
---|---|
Vedmak Сообщений: 5973 Откуда: CiTY Дата регистрации: 30.10.2003 |
Брат, приведи оригинал доки... чую разное. С китайскими девайсами успешно пользую Socket.
------------------ Говорить стоит лишь для тех, кто слушает. |
Re: Железо и фокс | |
---|---|
of63 Сообщений: 25256 Откуда: Н.Новгород Дата регистрации: 13.02.2008 |
Василий, плюспанул, держишь чеснак по налогообложения ( ну, по родк занятий, но тем не менее)
|
© 2000-2024 Fox Club  |