Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

COM порт дубль 2 [D6, WinXP]


Phantomouse ©   (2004-12-14 12:46:00) 

Приветствую!

И снова я озадачен небольшой (для знающих) проблемой. После долгих мучений с разными COMпонентами решил сделать обмен с COMом через ReadFile и WriteFile. Но если посылать в COM и получать из него числа (байты, HEX... не знаю как правильно назвать) получается, то послат текст - проблема. Соответственно получить его - тоже.

Далее. Согласно протоколу:

Прием и передача байта осуществляется последовательным потоком 11 бит:  1 стартовый бит, 8 бит данных (младшими битами вперед), 9-ый бит данных 0 или 1, 1 стоповый бит...

Передачу информации по протоколу 0 всегда начинает ЭВМ с  команды синхронизации, в которой восемь бит данных содержат номер весов (от 0 до 99), а девятый бит данных устанавливается в 1. Все остальные команды и данные передаются с девятым битом данных, равным 0.

Как передать комаду с девятым битом 1 или 0. А конкретно как настроить КОМ-порт, чтобы эти команды соответствовали схеме
СТАРТОВЫЙ_БИТ-8БИТ_ДАННЫХ-ДЕВЯТЫЙ_БИТ
???

Вот и все :-). Если что-то непонятно объяснил - поясню конкретнее... Хотелось бы получить хотя-бы небольшие примерчики кода :-).


DiamondShark   (2004-12-14 13:03:00) [1]


var
 dcb: TDCB;
 ...
begin
 ...
 GetCommState(hPort, dcb);
 dcb.Parity := MARKPARITY;   // 9-й бит = 1 или
 //dcb.Parity := SPACEPARITY; // 9-й бит = 0
 SetCommState(hPort, dcb);
 ...


Наверх

Титульная страница Поиск, карта сайта Написать письмо