Можно ли под Win98/2000/XP реализовать MODBUS RTU с помощью API и не строгать свой драйвер?
(«Телесистемы»: Конференция «Микроконтроллеры и их применение»)
Отправлено
КБ
16 октября 2003 г. 12:21
Составить ответ
|||
Конференция
|||
Архив
Ответы
Большое спасибо всем за обсуждение, даже DASM'у.
—
КБ
(16.10.2003 21:32,
пустое
)
К обсуждению надо немного исходников добавить :))) Это не совсем модбас, но почти... эксперементы на досуге
—
diper
(17.10.2003 09:59, 8513 байт)
Вопрос в том, что надо измерять время с точностью до 1mS, а программист утверждает, что под Win через API это невозможно в принципе.
—
КБ
(16.10.2003 12:23,
пустое
)
Ответ: для такой простой задачи раньше использовали частотомеры. могу сделать - будет мерять временные интервалы с точностью до одной сотой микросекунды. Обойдется дешевле ПК.
—
murid0
(16.10.2003 14:14,
пустое
)
А я делал в свое время так ...
—
Perforator
(16.10.2003 12:53, 2505 байт)
это точно, как перфоратором зубы рвать
—
DASM
(16.10.2003 15:13,
пустое
)
даже не с точностью, а от 1mS. Устали бодаться. Нужен третейский судья.
—
KБ
(16.10.2003 12:25,
пустое
)
измерять можно. У пеньков есть таймер, который имеет очень высокое разрешение. Вопрос только в том, как не допустить прерывания его задачи на другую. А вообще , сейчас придет Oldring и будет больно применять кунг-фу
—
DASM
(16.10.2003 12:29,
пустое
)
Еще как даж для Билдера и Делфы есть соотв компоненты.....
—
ES
(16.10.2003 14:26,
пустое
)
Зачем?
—
Oldring
(16.10.2003 14:02, 214 байт)
struct _COMMTIMEOUTS ?
—
КБ
(16.10.2003 14:37,
пустое
)
Так а чего нужно мерить?
—
Oldring
(16.10.2003 14:49,
пустое
)
Задача проста:
—
КБ
(16.10.2003 15:27, 273 байт)
Ключевой вопрос: через 2 ms начинается следующий пакет? И нужно поймать разделительный интервал?
—
Oldring
(16.10.2003 15:37,
пустое
)
не факт, что он начнется, но это признак окончания текущего. Ты лучше вот что скажи, ты уверен, что при срабатывании этих таймаутов драйвер (?) сделает то что нужно ? А кто переключит управление на твою задачу ?
—
DASM
(16.10.2003 15:54,
пустое
)
Я уверен в том, что ничего гарантировать нельзя ;)
—
Oldring
(16.10.2003 16:03, 216 байт)
Зачем? Винда приняла пакет и остановила чтение,
—
КБ
(16.10.2003 16:19, 45 байт)
Может и не факт, но
—
blackbit
(16.10.2003 16:02, 84 байт)
да,
—
КБ
(16.10.2003 15:51, 157 байт)
Тогда труба.
—
Oldring
(16.10.2003 16:00, 51 байт)
я и говорю - труба
—
DASM
(16.10.2003 16:17,
пустое
)
Не могут.
—
КБ
(16.10.2003 16:12, 121 байт)
Никто не обещает, что в течение этого интервала тишины Винды отдадут Вам управление.
—
Oldring
(16.10.2003 16:15, 108 байт)
А зачем?
—
КБ
(16.10.2003 16:20, 78 байт)
Так:
—
КБ
(16.10.2003 16:28, 251 байт)
Блин, а если за время обработки первого еще пять пакетов прийдут? Как Вы их разгребать собираетесь?
—
Oldring
(16.10.2003 16:22,
пустое
,
ссылка
)
Так:
—
КБ
(16.10.2003 16:29, 251 байт)
ууууууу... как все плохо... короче программеру премию, электронщиков или как вас там - гнать в шею
—
DASM
(16.10.2003 16:43,
пустое
)
Аккуратней со словами,
—
КБ
(16.10.2003 17:03, 63 байт)
у меня ТОЖЕ ВСЕ РАБОТАЕТ. Но никогда ни при каких обстоятельствах я не дам и малейшей гарантии, что так будет всегда и при сочетаниях различных факторов. Именно это вам Олдринг и пытался объяснить имхо
—
DASM
(16.10.2003 17:17,
пустое
)
Работает под виндузой? - НЕ ВЕРЮ!
—
Любящий С
(16.10.2003 17:13,
пустое
)
В opc-сервера для modbus rtu под Win тоже не верите? Ну и правильно, продолжайте любить.
—
КБ
(16.10.2003 17:31,
пустое
)
Я как-то поставил драйвер звуковой карточки от Genius - у меня комп стал в нем дохнуть. И что, из того, что карточки продаются?
—
Oldring
(16.10.2003 17:37,
пустое
)
И что? Другие тоже дохнут? Не передергивайте.
—
КБ
(16.10.2003 17:40,
пустое
)
Другие сделаны грамотно.
—
Oldring
(16.10.2003 17:41,
пустое
)
Цитата из MSDN
—
Oldring
(16.10.2003 17:46, 1804 байт)
Опять передернули. Не смешите.
—
КБ
(16.10.2003 17:51,
пустое
)
Так где же я передернул?
—
Oldring
(16.10.2003 17:56, 291 байт)
Зачем?
—
КБ
(16.10.2003 21:07, 218 байт)
Если бы уровень качества 99.9% считался "достаточно хорошим"...
—
Oldring
(16.10.2003 17:19, 132 байт)
а чего, не роняют ?
—
DASM
(16.10.2003 17:30,
пустое
)
Не столько же...
—
Oldring
(16.10.2003 17:33,
пустое
)
Поздравляю!
—
Oldring
(16.10.2003 17:07, 118 байт)
Это работает реально,
—
КБ
(16.10.2003 17:15, 231 байт)
Удачи! ;)
—
Oldring
(16.10.2003 16:34,
пустое
)
объясню за чела. В Модбасе окончанием пакета считается тишина на линии кажись более 2.5 байтовых времен. Вот ее и надо отловить. Всякие виндовые буфера тут играют плохую роль
—
DASM
(16.10.2003 15:24,
пустое
)
интервал тишины - 3.5 символа
—
КБ
(16.10.2003 15:49,
пустое
)
Тогда COMMTIMEOUTS - самое оно. Реализовано на уровне драйвера, поэтому получить самому точнее вряд-ли удастся.
—
Oldring
(16.10.2003 15:30, 95 байт)
Про COMMTIMEOUTS
—
КБ
(16.10.2003 15:54, 214 байт)
Как защищаются от переполнения буферов когда несколько пакетов могут идти последовательно?
—
Oldring
(16.10.2003 16:05,
пустое
)
=>
—
КБ
(16.10.2003 16:14,
пустое
,
ссылка
)
Так я же не спорю. Получится - делайте ;)
—
Oldring
(16.10.2003 16:17,
пустое
)
я делал, но увы, пришлось потоку присвоить REALTIME приоритет. За что меня надо убить однозначно
—
DASM
(16.10.2003 12:23,
пустое
)
а вот и не надо ля-ля. Я делал для себя и никому не продавали. Чисто прога-монитор. Работает, но без гарантий. А про то ,чтоб убить - это я специально для Олдринга написал, он знает что к чему. А таких как вы - развести как лохов - 2 минуту любой программер сможет
—
DASM
(16.10.2003 19:42,
пустое
)
=>
—
КБ
(17.10.2003 09:39,
пустое
,
ссылка
)
Убиииить ?? Ну, не знаю....Впрочем - пятница уже завтра. Может быть-может быть.. ;)
—
Весельчак_У
(16.10.2003 13:31,
пустое
,
картинка
)
struct _COMMTIMEOUTS ?
—
КБ
(16.10.2003 12:34,
пустое
)
Перейти к списку ответов
|||
Конференция
|||
Архив
|||
Главная страница
|||
Содержание
|||
Без кадра
E-mail:
info@telesys.ru