Камрад
|
COM-port (RS232)
низкий уровень - взять описание микросхемы последовательного порта, почитать - там все сигналы, логика работы - команды-ответы-диаграммы..
что выведено на разъем DB9 или DB25 - см. хотя бы по линку выше.
сильно примерно (забыл уже почти все, в т.ч. правильную терминологию ) - есть линии приема, передачи, управляющие (квитирования?), ну, и конечно - "земли" (общая и сигнальная, кажись). Сигнал - утверждяют, что +\- 12 В, хотя возможны разночтения - через COM нормально работают всякие GPS и эхолоты по NMEA, где-то там они совместимости достигают, хотя рассчитаны под другие, вроде бы, границы..
В компе работа с периферией идет посредством записи-чтения в порты ввода-вывода (не то же самое, что СОМ-порт, а фактически диапазон адресов, которые можно читать-писать) . Соответственно СОМ - известен базовый адрес порта ВВ (см. BIOS, если не автомат, иначе - ресурсы в списке устройств). Логика работы (что записал - что получилось - где прочитать) не подскажу.. В Дельфи не работал, а в Паскале - 20 лет назад, но, как вспоминается - порты ВВ там (в Паскале) были представлены массивом байт Port или слов PortW, соответственно читать-писать - работа с элементами массива, примерно так (используемые в примере адреса и значения - абстрактные):
code:
const
MovePort : word = $222;
SwitchPort : word = $300
.....
port[MovePort]:=$0F;
SwitchByte:= port[SwitchPort] and $0F;
Учти, в приличной операционке (Windows NT, 2000, XP) далеко не в любой порт дают доступ прикладным программам (в смысле прямой работы, в обход драйвера), может, придется поставить что-нибудь типа драйвера totalio, открывающего все порты..
Если работа на таком низком уровне не нужна - "кури" описание функции, позволяющей управлять отдельными сигналами СОМ-порта (определение из Win32, в Delphi может быть определена чуть по-другому):
BOOL EscapeCommFunction(
HANDLE hFile, // handle to communications device
DWORD dwFunc // extended function to perform
);
Описание портов (немного)
SERIAL PORT
Изменено: LazyFox, 21-11-2005 в 11:30
|