![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
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);
...