Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Микроконтроллеры (MCU) и микропроцессоры (MPU) > Дублирование данных на при чтении с COM


Автор: Apimpl 29.12.2007, 20:13
Здравствуйте.
Столкнулся с небольшим непониманием.
При записи в COM порт и последующем чтении из него, во входном буфере оказывается как только что записанная информация, так и ответ на неё от устройства.
Например:
Цитата(шлем)

ATZ

Цитата(получаем)

ATZ
OK

Опыта работы с этим нету, на форуме ответа не нашел...
В чем причина вообще такого поведения? Один буфер отправки,приема ? 0_о
Можно ли как-то этого избежать?..Не совсем удобно получать ответы...

Автор: Den64 29.12.2007, 20:38
Apimpl  я тоже так делаю, у меня всё нормально... 
Может у меня алгоритмы другие. Желательно б кусочек исходника.

Автор: Apimpl 29.12.2007, 21:36
Что-то в этом стиле:
Код

SerialPort _serialPort;
_serialPort = new SerialPort("COM8");
_serialPort.DataReceived += new SerialDataReceivedEventHandler(_serialPort_DataReceived);
_serialPort.Write("ATZ\r");

Ну и handler события:
Код

void _serialPort_DataReceived(object sender, SerialDataReceivedEventArgs e)
{
    Console.WriteLine(((SerialPort)sender).ReadExisting());
}

На выходе получаю то, о чем уже писал...
На c++ помнится получал теже результаты...
Может какие особенности есть ? )

Автор: Ivan. 30.12.2007, 06:56
Я так понимаю, ты с компа на устройство передаешь, а устройство отвечает? Может у тебя устройство повторяет то что ты говоришь и при етом отвечает.
Например я делаю так: на ADM485 есть пины принимать и передавать. Прием у меня стоит всегда, а передачей я управляю. В таком случаи я буду слышать и то, что мне приходит и то, что я передаю, если во время передачи я получаю не то, что передавал, значит вместе со мной говорит ктото еще (выявляем колизию и затыкаемся).

Автор: Apimpl 30.12.2007, 10:04
Ну вроде модем на ATZ должен говорить только OK, в моем случае это bluetooth модем сотового.
Т.е. это нормально? 0_о

Автор: Apimpl 3.1.2008, 20:10
"проблема" решилась...
все верно,так и должно быть... =) всем спасибо...

Автор: mgr 2.2.2009, 03:50
>"проблема" решилась...
>все верно,так и должно быть... =) всем спасибо...


Здравствуйте. Науглил эту порослую мохом тему.
У меня та же проблема.

Так как решилась проблема? Почему событие DataReceived два раза срабатывает? (при отключенном модеме ниразу)
Через гипертерминал набираю "АТ" - приходит "ОК", "АТ" модем не повторяет после меня.
Пролейте свет пожалуйста, ато бубен куплю

Автор: xvr 2.2.2009, 19:20
Цитата(mgr @ 2.2.2009,  03:50)
Через гипертерминал набираю "АТ" - приходит "ОК", "АТ" модем не повторяет после меня.
Пролейте свет пожалуйста, ато бубен куплю

Модем немедленно отправляет то что получил обратно. Так что те "AT", которые вы видите в Hyperterminal, на самом деле приходят от модема.
Включите локальное эхо в Hyperterminal - сразу увидите

Автор: mgr 3.2.2009, 01:25
Тогда всё становится на свои места.
В таком случае вопрос на засыпку: можно ли как-то отключить "эхо" ? (Возможно командой АТЕ0, или какой-то другой)

Автор: smalcom 8.2.2009, 12:56
ATE0 отключает эхо. Прим.: После ATZ обычно опять включается эхо

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)