![]() |
|
![]() ![]() ![]() |
|
gorillka |
|
|||
Новичок Профиль Группа: Участник Сообщений: 31 Регистрация: 1.11.2010 Репутация: нет Всего: нет |
Может быть кто-нибудь сталкивался с подобной проблемой...
Передаю данные в порт char bufwr[256]={0x01,0x05,0x80,0x00,0x01,0x00,LOBYTE(crc16),HIBYTE(crc16)}; WriteFile(port, bufwr, 7, &temp, NULL); Устройство, вместо того чтобы принять всю строчку целиком, принимает первые 3 байта, последние 4 байта считает следующим сообщением Затем я еще раз через какой-то время отправляю тоже самое, устройство к 4 предыдущим байтам добавляет новые 3 первых байта. Вообщем вот как принимает данные устройство: 1 сообщение - 0x01,0x05,0x80 принято 3 байта время мс 0 2 сообщение - 0x00,0x01,0x00,LOBYTE(crc16),HIBYTE(crc16),0x01,0x05,0x80 - принято 7 байт время мс 2012. P.S. Тайм-ауты какие только не выставлял, не чего не меняется и сами данные тоже менял аналогично Добавлено через 8 минут и 37 секунд Проблему решил! вместо WriteFile(port, bufwr, 7, &temp, NULL); написал WriteFile(port, bufwr, 8, &temp, NULL); просто поменял на угад и заработало. Если кто-нибдь объяснит в чем здесь дело был бы очень благодарен |
|||
|
||||
gorillka |
|
|||
Новичок Профиль Группа: Участник Сообщений: 31 Регистрация: 1.11.2010 Репутация: нет Всего: нет |
блин все равно как то не так работает. Устройство как будто бы ждет 8-байта а его все нет
![]() то есть первый раз отправляю данные все ок. второй раз отправляю не чего не происходит. отправляю третий раз приходит то что должно прийти но пишет время то которое было между двумя нажатиями кнопками(когда отправлял 2 и 3 раз) Вообщем очень нужно разъяснение специалиста, я что то не очень понимаю как это все работает... |
|||
|
||||
casey |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 74 Регистрация: 20.12.2006 Где: Украина Репутация: нет Всего: 2 |
А что за устройство? Сдается мне что-то самодельное.
Modbus-слэйв устройство должно после некоего таймаута игнорировать запрос, если он недошел. И ожидать запрос сначала. Таймаут можно посмотреть в спецификации, но не больше 200-300 мс. А что работает WriteFile(port, bufwr, 8, &temp, NULL); - так тут очевидно, тебе ж 8 байт надо отправить. |
|||
|
||||
gorillka |
|
|||
Новичок Профиль Группа: Участник Сообщений: 31 Регистрация: 1.11.2010 Репутация: нет Всего: нет |
блин я слегка прогнал
![]() ![]() Устройство - это пока эмулятор Но вопрос остается открытый почему этот эмулятор через рас сообщения принимает??? P.S. сейчас попробую других эмуляторов накачать. может посоветуете какой нибудь хороший? |
|||
|
||||
casey |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 74 Регистрация: 20.12.2006 Где: Украина Репутация: нет Всего: 2 |
Когда-то использовал Modsim32
Демо-версия здесь http://www.win-tech.com/html/demos.htm В чем ограничения уже не помню. |
|||
|
||||
gorillka |
|
|||
Новичок Профиль Группа: Участник Сообщений: 31 Регистрация: 1.11.2010 Репутация: нет Всего: нет |
Спасибо попробую
![]() |
|||
|
||||
xvr |
|
|||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 7046 Регистрация: 28.8.2007 Где: Дублин, Ирландия Репутация: 48 Всего: 223 |
Win не очень дружит с realtime'ом, а для modbus rtu он в некоторой степени нужен. Видимо отправка в порт была прервана более приоритетной задачей. До некоторой степени лечится вынесением обмена с портом в отдельную нить и назначением этой нити и всему процессу REALTIME приоритета.
Но судя по уровню ваших вопросов я бы вам не советовал с этим связываться - повесите все систему (REALTIME процессы это могут сделать легко и непринужденно ![]() Поищите готовые библиотеки, они есть ![]() |
|||
|
||||
![]() ![]() ![]() |
Правила форума "С++ Builder" | |
|
Запрещается! 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Rrader. |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | C++ Builder | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |