Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Компоненты Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 26.03.2012, 13:49   #1
NewMember
 
Регистрация: 12.04.2010
Сообщений: 9
Вопрос TComPort

Всем доброго времени суток!
Прошу в гугл не посылать, облазил много ресурсов и разных книг перечитал (Агурова и тд.), но нормального вразумительно объяснения так и не нашёл.
Проблема в следующем, имеется устройство стандарт RS485, на компе контроллер, то есть работа напрямую. Устройство имеет свои параметры настройки порта, имеет определённый формат пакета и команды, пакет дополняется комплиментарными байтами, так же контрольной суммой(ИСКЛЮЧАЮЩЕЕ ИЛИ всех нормальных байт и одного ETX(стоповый байт их там 2), без учета стартового байта, а также логическое ИЛИ с 0x40). Не имею даже понятия как возможно задать формат пакета и как решить проблему с контрольной суммой.
Компонент использую TComPort v4.11 вот ссылка(поч его, из-за работы на XE2) другого ничего не нашёл, ссылка:

http://delphi-z.ru/delphi/delphi-components/346-comport-411-full-source-for-d3-xe2.html

Объясните пожалуйста желательно на примере, с описанием чтобы понять откуда, что и как, заранее огромное спасибо.

З.Ы. команды для устройства идут либо буквой либо цифрой, к ним прилагается код, вида 0x37 0x5D и тд, как использовать команды в протоколе если можно тоже.
NewMember вне форума Ответить с цитированием
Старый 26.03.2012, 14:07   #2
raxp
Старожил
 
Регистрация: 29.09.2009
Сообщений: 9,742
По умолчанию

...любопытно, но как вам помочь, если вы ни слова ни о приборе, ни о протоколе обмена с этим прибором, какие то обрывки в описании темы. У вас проблема не с компонентом для работы с COM -портом, а с путаницей в общем алгоритме работы. Поднимайте доки на протокол обмена и курим.

p.s.: bcomport тоже неплохо работает, хотя всего лишь обертка над WinAPI вызовами.
Разработки и научно-технические публикации :: Видеоблог :: Твиттер
Radar systems engineer & Software developer of industrial automation
raxp вне форума Ответить с цитированием
Старый 26.03.2012, 14:22   #3
NewMember
 
Регистрация: 12.04.2010
Сообщений: 9
Сообщение Алексей

Вот формат протокола и команд, объясните пожалуйста как с этим работать.

Если требуется то вот описание компонента:

http://www.dbmm.org.ua/en/tcomport-delphi.html
Вложения
Тип файла: doc 7.doc (66.0 Кб, 195 просмотров)

Последний раз редактировалось NewMember; 26.03.2012 в 14:35. Причина: Добавление и-ции
NewMember вне форума Ответить с цитированием
Старый 26.03.2012, 14:25   #4
NewMember
 
Регистрация: 12.04.2010
Сообщений: 9
Стрелка

Цитата:
Сообщение от raxp Посмотреть сообщение
...любопытно, но как вам помочь, если вы ни слова ни о приборе, ни о протоколе обмена с этим прибором, какие то обрывки в описании темы. У вас проблема не с компонентом для работы с COM -портом, а с путаницей в общем алгоритме работы. Поднимайте доки на протокол обмена и курим.

p.s.: bcomport тоже неплохо работает, хотя всего лишь обертка над WinAPI вызовами.
Да честно говоря разницы то в компонентах особо нет, они все на одних примерах сделаны, и у Агурова и у остальных всё те же API, просто у них то, что и так понятно расписано, а основные вещи чистым кодом и без объяснения, для чего такие книги... Главное чтобы работали стабильно....
NewMember вне форума Ответить с цитированием
Старый 27.03.2012, 11:14   #5
raxp
Старожил
 
Регистрация: 29.09.2009
Сообщений: 9,742
По умолчанию

Цитата:
Скорость обмена данными – 4800 Бод
Формат слова: стартовый бит
7 бит данных
бит контроля четности
2 стоповых бита.
...настраиваете COM порт для начала.

Если верить незаполненной табличке:
Цитата:
2.1. Формат пакета запроса СУ.
Вариант 1.

Цитата:
DEL - 0 байт
STX, BEL-DC4 СТАРТОВЫЙ БАЙТ - 1 байт
СЕТЕВОЙ АДРЕС - 2 байт
КОМАНДА - 3 байт
ДАННЫЕ (не обязательно) - 4 байт
ETX - 5 байт
ETX - 6 байт
CheckSum - контрольная сумма - 7 байт
в запросе всего 8 байт, т.е. формируете массив, заполняете его (как заполнять ссылку давал в личке) и отсылаете через WriteFile().

Цитата:
Примечание
1. Каждый байт запроса между стартовым байтом и ETX дополняется комплиментарным байтом (поразрядное инвертирование),
это значит, что второй, третий и четвертый байт в пакете нужно поразрядно инвертировать через xor:
Код:
var mas: array[0..7] of byte;
...
mas[2]:= mas[2] xor $FF;
mas[3]:= mas[3] xor $FF;
mas[4]:= mas[4] xor $FF;
Цитата:
а CheckSum вычисляется как ИСКЛЮЧАЮЩЕЕ ИЛИ всех нормальных байт и одного ETX, без учета стартового байта, а также логическое ИЛИ с 0x40.
если под "нормальными" байтами имеется ввиду неизмененные байты в пакете, т.е. нулевой (DEL) и пятый (или 6) байт (ETX), ведь 1 байт - стоповый (нельзя), 2-4 - измененные ("ненормальные"), то их:
Код:
function CRC(BufferData: TDataByte): byte;
const polinomio: byte= $40;
begin
 result:= (BufferData[0] xor BufferData[5]) or polinomio
end;
Дальше по описанию аналогично разбираем формат пакета ответа ТРК. Смысл ясен?
Разработки и научно-технические публикации :: Видеоблог :: Твиттер
Radar systems engineer & Software developer of industrial automation
raxp вне форума Ответить с цитированием
Старый 27.03.2012, 11:30   #6
NewMember
 
Регистрация: 12.04.2010
Сообщений: 9
Хорошо

Цитата:
Сообщение от raxp Посмотреть сообщение
Смысл ясен?
В общем плане да, спасибо буду пробовать, и ещё вопрос,
DEL - 0 байт
STX, BEL-DC4 СТАРТОВЫЙ БАЙТ - 1 байт
СЕТЕВОЙ АДРЕС - 2 байт
КОМАНДА - 3 байт
ДАННЫЕ (не обязательно) - 4 байт
ETX - 5 байт
ETX - 6 байт
CheckSum - контрольная сумма - 7 байт

DEL, BEL-DC4 они каким образом задаются, и по командам вопрос, они идут в ASCII 1,2 и тд, и к ним HEX код насколько я понимаю, 0x31 и тд, с этим как работать в каком виде отсылается? Объясните недопонимаю немного, спасибо ещё раз.
NewMember вне форума Ответить с цитированием
Старый 27.03.2012, 14:45   #7
raxp
Старожил
 
Регистрация: 29.09.2009
Сообщений: 9,742
По умолчанию

Цитата:
DEL, BEL-DC4 они каким образом задаются
из вашего же документа, читаем:
Цитата:
3. DEL (0x7F) – игнорируется при анализе пакета ответа и служит для исключения потерь при переключении преобразователя интерфейса с приема на передачу
Цитата:
Для СУ допускаются стартовые байты 0х2, 0x7–0x14.
В зависимости от стартового байта используется смещение начального адреса:
0х2 (STX) – смещение 0
0х7 (BEL) – смешение 15
0х8 (BS) – смещение 30
и т.д.
===========================
Цитата:
и по командам вопрос, они идут в ASCII
верно, отсылать в кодах аски ...можно непосредственно, можно по табличке, скажем так:

1. Запрос номера версии протокола (UINSW)
‘P’ (0x50)
Код:
ord('P')
Разработки и научно-технические публикации :: Видеоблог :: Твиттер
Radar systems engineer & Software developer of industrial automation
raxp вне форума Ответить с цитированием
Старый 29.03.2012, 20:57   #8
NewMember
 
Регистрация: 12.04.2010
Сообщений: 9
Печаль

Цитата:
Сообщение от raxp Посмотреть сообщение
из вашего же документа, читаем:
верно, отсылать в кодах аски ...можно непосредственно, можно по табличке, скажем так:

1. Запрос номера версии протокола (UINSW)
‘P’ (0x50)
Код:
ord('P')
Извиняюсь, надоел уже видно непонятливостью, не понимаю, как собрать пакет для отправки, что должно быть записано в STX, DEL, BEL-DC4 как это записать и как передать.... в аски или в HEX, про смещения вообще ничё не понял.... в голове каша и ничего не получается, объясните пожалуйста по порядку или на примерах каких либо, хоть примерно моего случая касающиеся, заранее спасибо....
NewMember вне форума Ответить с цитированием
Старый 29.03.2012, 21:35   #9
raxp
Старожил
 
Регистрация: 29.09.2009
Сообщений: 9,742
По умолчанию

...каша в голове обычно лечиться купюрами, вы готовы рассмотреть этот вопрос во фрилансе?
Разработки и научно-технические публикации :: Видеоблог :: Твиттер
Radar systems engineer & Software developer of industrial automation
raxp вне форума Ответить с цитированием
Старый 30.03.2012, 00:07   #10
NewMember
 
Регистрация: 12.04.2010
Сообщений: 9
По умолчанию

хороший юзер, хороший профи, хороший форум, спасибо за ответы... вопрос в ЛС прямой задал, ответа нету... Н....а тогда форум нужен......
NewMember вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Delphi 2009 - проблема с установкой компонента TComPort cadil Компоненты Delphi 8 05.09.2010 03:27
RS232, Библиотека Игоря Павлова TComPort xBugiman Компоненты Delphi 11 12.06.2010 13:41
Delphi 2009: проблема с работой компоненты TComPort cadil Компоненты Delphi 10 01.04.2010 10:55