![]() |
|
Модераторы: Snowy, MetalFan, bems, Poseidon |
![]()
|
|
| Alexzz |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 87 Регистрация: 9.4.2007 Где: Латвия Репутация: 1 Всего: 1 |
Возникла необходимость работать с устройством подключенным через ком-порт. Искал в хелпах, искал тут по форуму но что-то ничего не нашёл. Предполагаю что где-то есть эта инфа, просто не умею найти. Не судите строго, просто ткните меня в неё носом.
|
|||
|
||||
| Alexeis |
|
|||
![]() Амеба Профиль Группа: Админ Сообщений: 11743 Регистрация: 12.10.2005 Где: Зеленоград Репутация: 34 Всего: 459 |
Например тут http://forum.vingrad.ru/index.php?showtopic=36936
Добавлено через 3 минуты и 35 секунд Еще тут http://forum.vingrad.ru/index.php?show_typ...howtopic=155934 http://forum.vingrad.ru/index.php?show_typ...howtopic=155933 http://forum.vingrad.ru/index.php?show_typ...howtopic=155928 http://forum.vingrad.ru/index.php?show_typ...howtopic=155927 http://forum.vingrad.ru/index.php?show_typ...howtopic=155924 -------------------- Vit вечная память. Обсуждение действий администрации форума производятся только в этом форуме гениальность идеи состоит в том, что ее невозможно придумать |
|||
|
||||
| Felan |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 284 Регистрация: 2.8.2007 Где: Самара Репутация: 2 Всего: 7 |
-------------------- // Любая сложная система - это темный лес. Каждый в этом лесу протаптывает свои тропинки, по ним и бегает. Лишь изредка, сходя с них, мы находим много интересного, а порою и страшного. |
|||
|
||||
| Alexzz |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 87 Регистрация: 9.4.2007 Где: Латвия Репутация: 1 Всего: 1 |
Ага, спасибки, на досуге буду разбираться.
|
|||
|
||||
| Alexzz |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 87 Регистрация: 9.4.2007 Где: Латвия Репутация: 1 Всего: 1 |
Ну вот, удалось мне заставить моё внешнее устройство мне ответить. Примерно как в том анекдоте про кгбшников и тутанхамона - "Сам сознался".
Но вот есть ещё одна маленькая проблемка. Устройство оказалось капризное, и если ему посылать байты сразу скопом, то оно их "не ест". Ему понимаешь подавай байтики с интервалами по 18мс. Что я сделал - организовал отправку байтов из выходного буфера по событию таймера. На каждом событии проверяется длина буфера, если не ноль - первый байт из буфера отправляется в порт, буфер сдвигается на 1 байт и на 1 уменьшается размер. Ну вобщем всё простенько. Проблема заключается в том, что невозможно даже близко подогнать интервал к 18мс. Самый меньший интервал которого удаётся добиться около 200мс. Это 5 байт уходят за секунду. Если я меняю значение интервала таймера меньше 200, то это абсолютно ничего не меняет. Такое ощущение, что таймер просто не умеет срабатывать чаще 5ти раз в секунду. Вопрос к знатокам: Есть ли другая возможность отсылать байты в ком-порт с интервалом 18мс? Может какое свойство ком-порта установить, или ещё что... |
|||
|
||||
| Alexeis |
|
|||
![]() Амеба Профиль Группа: Админ Сообщений: 11743 Регистрация: 12.10.2005 Где: Зеленоград Репутация: 34 Всего: 459 |
Таймер способен генерировать события с частотой не чаще 100 запусков в секунду с точностью 10мс, т.е. можно через каждые 20мс.
-------------------- Vit вечная память. Обсуждение действий администрации форума производятся только в этом форуме гениальность идеи состоит в том, что ее невозможно придумать |
|||
|
||||
| Alexzz |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 87 Регистрация: 9.4.2007 Где: Латвия Репутация: 1 Всего: 1 |
Ну вот не даёт он 20мс. Только 200. Какой-то неправильный таймер...
|
|||
|
||||
| Alexeis |
|
|||
![]() Амеба Профиль Группа: Админ Сообщений: 11743 Регистрация: 12.10.2005 Где: Зеленоград Репутация: 34 Всего: 459 |
Таймер то правильный и 1000 раз проверенный. Значит ошибка не в таймере.
-------------------- Vit вечная память. Обсуждение действий администрации форума производятся только в этом форуме гениальность идеи состоит в том, что ее невозможно придумать |
|||
|
||||
| Alexzz |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 87 Регистрация: 9.4.2007 Где: Латвия Репутация: 1 Всего: 1 |
Таймер не таймер, но через таймер не получается.
|
|||
|
||||
| ivan219 |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1121 Регистрация: 19.11.2005 Где: Планета земля Репутация: 5 Всего: 12 |
Возможно что само устройство перестаёт принимать байты если проходит больше чем время на отпровление одного байта после стоп бита предидущего байта попробуй поиграть со скоростью обмена, также может нет синхронизации.
А что за устройство? И если можно то код в студию. |
|||
|
||||
| Alexzz |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 87 Регистрация: 9.4.2007 Где: Латвия Репутация: 1 Всего: 1 |
Нет, устройство то работает. Оно не воспринимает байты только если их отсылать слишком часто. Оригинальный софт для этого устройства позволяет менять интервал, и если выставить интервал 10мс то устройство больше не отвечает. Написанная мной программа уже работает с этим устройством, но намнооого медленнее чем хотелось бы.
Устройство это микроконтроллер, управляющий неким прибором. Интервал между посылками нужен очевидно просто для того, чтобы процессор успевал считывать данные из регистров и обрабатывать их. Код я взял из первых ссылок, что дал Alexeis. Буквально немного подправил.
Это сообщение отредактировал(а) Alexzz - 7.10.2007, 00:09 |
|||
|
||||
| ivan219 |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1121 Регистрация: 19.11.2005 Где: Планета земля Репутация: 5 Всего: 12 |
А верхняя граница времени после которой МК сщитае что весь пакет пришол есть? или он ждёт пока непредёт определённое количество байт.
Сколько байт в пакете? А какая скорость обмена у МК и COM порта? Скорей всего таймер срабатывает чётко а вот сам поток немного задержевается что приводит к TimeOut у МК и он считает что пакет битый. В какой Windows работаешь? Это сообщение отредактировал(а) ivan219 - 7.10.2007, 08:53 |
|||
|
||||
| Alexzz |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 87 Регистрация: 9.4.2007 Где: Латвия Репутация: 1 Всего: 1 |
Опять ты не понял. РАБОТАЕТ моя программа. Не считает никто ничего битым. ВСЁ РАБОТАЕТ. Только очень медленно.
На верхний предел не испытывал. Скорость 9600. Пакеты разные, но все нормально проходят. Только медленно. Пакет из 5 байт идёт секунду. А если учесть что нужно передать всего 8кб данных разбив их по пакетам и снабдив всеми начальными и конечными байтиками, да ещё и ответы надо принять, вот и сидим, пол часа ждём пока всё запишется. Винды - проверял и под 98 и под ХРенью. Работает одинаково. Очень медленно. |
|||
|
||||
| ivan219 |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1121 Регистрация: 19.11.2005 Где: Планета земля Репутация: 5 Всего: 12 |
Ну хорошо не допонял.
В таймере свойство Interval 200 а при меньших значениях ничего не работает, тогда проблема гдето в коде. Это сообщение отредактировал(а) ivan219 - 7.10.2007, 09:39 |
|||
|
||||
| ivan219 |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1121 Регистрация: 19.11.2005 Где: Планета земля Репутация: 5 Всего: 12 |
Попробуй этот компонент http://calculator2006.narod.ru/file/AsyncFree104.rar
|
|||
|
||||
![]()
|
| Правила форума "Delphi: Для новичков" | |
|
|
Запрещается! 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Delphi: Для новичков | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |