Цитата(GrayCat @ Oct 14 2005, 16:27)
Действительно, для небыстрой пересылки маленьких пакетов можно обойтись только линиями RX, TX. Хотя, очень желательно еще линию DCD завести, чтобы всегда "независимо" знать, что связь есть. Прочие RTS-CTS, DTR-DCR нужны когда пересылаются большие блоки данных, не влазящие в буфера.
Базовый набор команд у всех модемов более/менее одинаков (называют их Hayes-совместимыми).
Инициализация: "ATZ"
Набор номера: "ATD1234567"
на вызываемом модеме выдается "RING"
говоришь ему "Поднять трубу": "ATA"
модемы договариваются, соединяются...
...выдают слово "CONNECT чего-то там с чем-то там"
ВСЕ, соединение установлено, пихаемые в порт байтики появляются с другой стороны, и наоборот

Чтобы прекратить связь: "+++ATH"
Конечно, нужно предусмотреть обработку неудач соединения ("NO DIAL TONE",
"BUSY", "NO CARRIER" и т.п.).
Всяческие настройки модемов обычно можно сделать предварительно, затем записать их им в память.
Подробнее -- см. в полных инструкциях на модемы. В свое время очень хорошо были расписаны, например, модемы US Robotics.
Я советую послать строку инита.
ATE0V0
Тогда модем будет отвечать цифр. командами
CONNECT - 1
RING -2
NO DIALTONE -6
BUSY - 7
Тогда будет проще
void Tel_Ok(void)
{
index_in-- ;
if (index_in>1) return;
switch (buffer_in[0])
{
case '1':// CONNECT
break;
case '2':// RING
break;
case '6':// NO DIALTONE
break;
case '7':// BUSY
break;
}
}
Успехов