![]() |
|
Модераторы: Snowy, bartram, MetalFan, bems, Poseidon, Riply |
![]()
|
|
| SergeySamara |
|
||||
|
Новичок Профиль Группа: Участник Сообщений: 4 Регистрация: 11.12.2009 Репутация: нет Всего: нет |
Уважаемые знатоки! Помогите пожалуйста в решении такой задачи.
Есть массив байт принятый с COM порта, данные передаются с микроконтроллера в следующем формате: 1). Zag -заголовок, символ "F" в ASCII, длина 1 байт. 2). Status тип - Iteger Byte, длина 1 байт.(0,1,2,3) 3). SP, тип - Iteger Word, длина 2 байт.(0...50) 4). PV, тип - Iteger Word, длина 2 байт.(-55...0...128) 5). Prop, тип - Iteger Byte, длина 1 байт.(-100...0...100) 6). Intergal, тип - Iteger Byte, длина 1 байт.(-100...0...100) 7). Diff, тип - Iteger Byte, длина 1 байт.(-100...0...100) 8). PID_Out, тип - Iteger Byte, длина 1 байт.(-100...0...100) 9). CCP1L, тип - Iteger Byte, длина 1 байт.(0...100) 10). перевод каретки, тип - символ "#13" длина 1 байт. Итого передается 12 байт. Вопрос в следующем: какой тип массива (DataCom) мне использовать в функции чтения ReadFile(ComHandle, DataCom, 255, Count, nil), и как собрать принятые байты SP1, SP2 в одну переменную SP, а так же как правильно сделать приведение остальных типов к типу Strig или Integer. Прошу не пинать ногами, т.к. на Delphi писал очень давно, а сейчас пишу в основном на MPASM. Преобразованные данные будут либо писаться в лог и может ещё заноситься в таблицу DBGrid для последующего построения графиков. Вот извращенный мною код, исходники которого я использовал с этого сайта.
Это сообщение отредактировал(а) bartram - 13.12.2009, 19:37 |
||||
|
|||||
| ~FoX~ |
|
||||
![]() НЕ рыжий!!! ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2819 Регистрация: 8.10.2003 Где: Зеленоград Репутация: 0 Всего: 68 |
SergeySamara, Ой... Не сильно вникал, но имхо проще использовать не массив, а все таки структуру типа
Дальше собираем массив структуры
Теоретически в него должно попасть то что выбирит ReadFile, если конечно структуры совпадают... |
||||
|
|||||
| SergeySamara |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 4 Регистрация: 11.12.2009 Репутация: нет Всего: нет |
~Fox~ Спасибо! переписал под структуру, но все-таки вернусь в вопросу о том как собрать принятые байты SP1, SP2 в одну переменную SP, а так же как правильно сделать приведение остальных типов к типу Strig или Integer.
Это сообщение отредактировал(а) SergeySamara - 13.12.2009, 21:25 |
|||
|
||||
| ~FoX~ |
|
|||
![]() НЕ рыжий!!! ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2819 Регистрация: 8.10.2003 Где: Зеленоград Репутация: 0 Всего: 68 |
SergeySamara, Зачем? В SP как и в PV попадет интеджер, не надо будет его побайтово собирать...
FloatToStr, IntToStr, StrToInt и еже сними... Это сообщение отредактировал(а) ~FoX~ - 13.12.2009, 21:29 |
|||
|
||||
| SergeySamara |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 4 Регистрация: 11.12.2009 Репутация: нет Всего: нет |
дело в том что SP и PV передаются побайтово т.е. - привожу структуру принятых данных в HEX :
46 01 01 40 01 38 09 64 00 64 5A 0D 'F' /stat/1й байтSP/2й байтSP/1й байт PV/2й байт PV/Prop/ и т.д. а вот как собрать 1й и 2 байт.... На всякий привожу код со структурой
|
|||
|
||||
| Romikgy |
|
||||||
![]() Любитель-программер ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7326 Регистрация: 11.5.2005 Где: Porto Franco Odes sa Репутация: 13 Всего: 146 |
мой вариант %)
и вместо
юзать
-------------------- Владение русской орфографией это как владение кунг-фу — истинные мастера не применяют его без надобности. |
||||||
|
|||||||
| SergeySamara |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 4 Регистрация: 11.12.2009 Репутация: нет Всего: нет |
Спасибо большое всем ответившим. В общем разобрался, прога готова - друг, для которого это собственно писалось в восторге
Привожу окончательный код, может кому пригодиться:
|
|||
|
||||
![]()
|
| Правила форума "Delphi: WinAPI и системное программирование" | |
|
|
Запрещено: 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, bartram, MetalFan, bems, Poseidon, Rrader, Riply. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Delphi: WinAPI и системное программирование | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |