Экспертная система Delphi.int.ru

Сообщество программистов
Общение, помощь, обмен опытом

Логин:
Пароль:
Регистрация | Забыли пароль?

Delphi.int.ru Expert

Другие разделы портала

Переход к вопросу:

#   

Статистика за сегодня:  


Лучшие эксперты

Подробнее »



Вопрос # 980

/ вопрос открыт /

Здравствуйте, уважаемые эксперты!
Формулировка проблемы: Имеется некий прибор, связанный с компом по COM. О приборе ничего не известно, но есть .exe программа, работающая с этим прибором. Работает, но не так, как мне нужно для полного счастья:).
Вопрос: Как отследить протокол обмена прибора с компом?! Зная протокол я смогу написать свою программу, делающую то же, но так, как это нужно мне.
Спасибо!

Loki Вопрос ожидает решения (принимаются ответы, доступен мини-форум)

Вопрос задал: Loki (статус: Посетитель)
Вопрос отправлен: 15 октября 2007, 13:30
Состояние вопроса: открыт, ответов: 1.

Ответ #1. Отвечает эксперт: Вадим К

Здравствуйте, Loki!
Идём на эту страничку http://www.microsoft.com/rus/technet/sysinternals/utilities/Portmon.mspx и по ссылке внизу качаем утилиту PortMon. Она позволят "мониторить", тоесть подсматривать весь протокол обмена по COM и LPT. Под 2000/ХР есть возможность задать какой именно порт следить и в каком формате данный выводить (бинарный/текстовый). есть фильтрация и подсветка по маске.
также можно сохранить в файл.

Ответ отправил: Вадим К (статус: Академик)
Время отправки: 15 октября 2007, 14:06


Мини-форум вопроса

Всего сообщений: 6; последнее сообщение — 29 октября 2007, 17:25; участников в обсуждении: 2.
Loki

Loki (статус: Посетитель), 22 октября 2007, 16:31 [#1]:

Все отлично получилось, PortMon дал мне именно то, что мне было нужно! Я получаю теперь с прибора нужную мне информацию, и могу управлять им из своей программы. Подключаюсь при помощи известного компонента ComPort. От прибора получаю значение измеренного параметра, в виде 5 байт. Кто скажет, как преобразовать их в Real?
Loki

Loki (статус: Посетитель), 22 октября 2007, 16:33 [#2]:

Спасибо, Вадим К! Спасибо огромное, это именно то, что мне было нужно!!!
Вадим К

Вадим К (статус: Академик), 22 октября 2007, 16:38 [#3]:

Ну мало как вы их можете получить.
хотя бы пример полученных байт и значения, которое ему соответствует (у вас же программа так я понял готовая есть)
Галочка "подтверждения прочтения" - вселенское зло.
Loki

Loki (статус: Посетитель), 22 октября 2007, 17:06 [#4]:

Спасибо, Вадим К! Пример получаемых данных - 43 68 31 D4 21 (Н). Значение, которому этот набор соответствует - 3,391. Наверное, есть какой-то общеизвестный способ, да? Заранее спасибо!
Вадим К

Вадим К (статус: Академик), 22 октября 2007, 17:29 [#5]:

не встречал я представления в виде 40 бит. может быть, что последний байт - это какое то crc
Можете почитать здесь
http://en.wikipedia.org/wiki/IEEE_floating-point_standard
если не прийдёте к решение - соберите подборку чисел 5-10. будем думать
Галочка "подтверждения прочтения" - вселенское зло.
Loki

Loki (статус: Посетитель), 29 октября 2007, 17:25 [#6]:

Уважаемый Вадим К, уважаемый Магистр! Огромное спасибо Вам, что приняли участие в моей проблеме! Проблема решена, спасибо!
Как я и предполагал, есть стандартный способ, заложенный в Паскале. Вот он:
var Num : record
Case Byte Of
0: (by: Array [1..5] Of Byte);
1: (fl: Single);
end;
Buf : Array [1..5] Of Byte;
Number : Real;
begin
{.......................................................}
Num.by:=Buf;
Number:=Num.fl;
{--------------------------------------------}
end;

Подсказал решение Мастер Фаронов, в своем учебнике по Турбо-Паскалю, года эдак 1995:)...

Вопрос закрыт, Спасибо!

Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте.

Версия движка: 2.6+ (26.01.2011)
Текущее время: 22 февраля 2025, 11:32
Выполнено за 0.03 сек.