Форум программистов «Весельчак У»
  *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

  • Рекомендуем проверить настройки временной зоны в вашем профиле (страница "Внешний вид форума", пункт "Часовой пояс:").
  • У нас больше нет рассылок. Если вам приходят письма от наших бывших рассылок mail.ru и subscribe.ru, то знайте, что это не мы рассылаем.
   Начало  
Наши сайты
Помощь Поиск Календарь Почта Войти Регистрация  
 
Страниц: [1]   Вниз
  Печать  
Автор Тема: Помогите разобраться с comm портом (программирую на delphi)  (Прочитано 7388 раз)
0 Пользователей и 1 Гость смотрят эту тему.
Bubo4kin
Гость
« : 06-05-2006 11:46 » 

Есть один девайс который подключается к cоmm порту, так вот чтобы из него получить инфу его разработчики придумали хитрый способ запроса: <Адрес устройства><функция><размер блокаданных<данные>><CRC-16>. А дальше самое веселое: для того чтобы эта железяка поняла все это у байта адреса бит четности д.б. = 1 у всех остальных = 0. А comm порт отказывается ставить этот бит вообще(пишу на delphi)! Вроде устанавливаю бит, а после этого для проверки проверяю настройки порта, а он мне отвечает: Parity = none! Как его заставить работать ПОМОГИТЕ!!!! ОЧЕНЬ НАДО!!!
Записан
PooH
Глобальный модератор

ru
Offline Offline
Пол: Мужской
... и можно без хлеба!


« Ответ #1 : 06-05-2006 12:01 » 

Цитата
после этого для проверки проверяю настройки порта
функцией или в винде. винда вроде только настройки по-умолчанию показывает
Записан

Удачного всем кодинга! -=x[PooH]x=-
Bubo4kin
Гость
« Ответ #2 : 06-05-2006 12:02 » 

функцией GetCommState
Записан
Sla
Команда клуба

ua
Offline Offline
Пол: Мужской

WWW
« Ответ #3 : 06-05-2006 12:58 » 

хитрый способ запроса: <Адрес устройства><функция><размер блокаданных<данные>><CRC-16>.
а протокол называется MODBUS
Записан

Мы все учились понемногу... Чему-нибудь и как-нибудь.
Bubo4kin
Гость
« Ответ #4 : 10-05-2006 10:07 » 

да не modbus это это наши Рязанские программеры выдумали у modbus с четностью проблемм не возникает! Но всеравно всем спасибо!
Записан
Sla
Команда клуба

ua
Offline Offline
Пол: Мужской

WWW
« Ответ #5 : 10-05-2006 10:32 » 

это это наши Рязанские программеры выдумали
Рязанские программеры выдумали бит четности в "байте адреса", чтоб их железяка не замарачивалась на тайм-ауты.
А сам протокол - modbus - если они еще не переделали CRC16
Записан

Мы все учились понемногу... Чему-нибудь и как-нибудь.
zubr
Модератор

by
Offline Offline
Пол: Мужской

« Ответ #6 : 11-05-2006 07:44 » 

Проблема скорее всего в том, что ты настройки порта устанавливаешь в своей программе, а когда открываешь виндовский апплет - он тебе показывает (и так инициализирует порт) настройки порта, сохраненные в реестре.
Проверяй настройки у себя в программе с функцией GetCommState.
Записан
PooH
Глобальный модератор

ru
Offline Offline
Пол: Мужской
... и можно без хлеба!


« Ответ #7 : 11-05-2006 08:03 » 

zubr, он вроде именно так и делает, смотри пост №2
Записан

Удачного всем кодинга! -=x[PooH]x=-
Kivals
Команда клуба

us
Offline Offline
Пол: Мужской

WWW
« Ответ #8 : 16-05-2006 11:22 » 

А как именно "Вроде устанавливаю бит" ?
ИМХО - путь такой (возможно и неверный, но другого на ум не приходит):
DCB.Parity = MARKPARITY;
SetCommState(hComm, @DCB);
<Отправить байт адреса>;
DCB.Parity = SPASEPARITY; // или NOPARITY
SetCommState(hComm, @DCB);
<Отправить остальные байты>;
Записан
Страниц: [1]   Вверх
  Печать  
 

Powered by SMF 1.1.21 | SMF © 2015, Simple Machines