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

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

ComPort [D6, NT4, Win2k]


AlekseyK ©   (2002-07-15 18:32:00) 

Кто пользовалься компонентом Com Port. Как получит только ответ без запроса

procedure TForm1.ComPort1RxChar(Sender: TObject; Count: Integer);
begin
comport1.ReadStr(a,count);
label8.Caption:=label8.Caption+a;
end;
дает
at

ok

если было
procedure TForm1.Button2Click(Sender: TObject);
begin
post := "at";
post := post+#13;
ComPort1.WriteStr(post);
end;
как получить только ОК
и есть ли другие компоненты которыми можно получить только ответ?


wal   (2002-07-17 13:06:00) [1]


> Дело в том что в OnRxChar процедура readstr выдает все принятые
> и посланные Char

В корне ошибочное утверждение. Просто модем сам выдает (по умолчанию) то, что бринял от тебя, то есть эхо.


-=Sergeante=-   (2002-07-17 11:40:00) [2]

Что она стринг - это понятно...
Честно говоря, логика такого поведения компоенента мне не ясна.


AlekseyK   (2002-07-16 16:21:00) [3]

aэто переменная типа string
TComDataPacket не использую

object ComPort1: TComPort
BaudRate = br9600
Port = "COM2"
Parity.Bits = prNone
StopBits = sbOneStopBit
DataBits = dbEight
Events = [evRxChar, evTxEmpty, evRxFlag, evRing, evBreak, evCTS, evDSR, evError, evRLSD, evRx80Full]
FlowControl.OutCTSFlow = False
FlowControl.OutDSRFlow = False
FlowControl.ControlDTR = dtrEnable
FlowControl.ControlRTS = rtsEnable
FlowControl.XonXoffOut = True
FlowControl.XonXoffIn = True
OnAfterOpen = ComPort1AfterOpen
OnAfterClose = ComPort1AfterClose
OnRxChar = ComPort1RxChar
OnError = ComPort1Error
Left = 424
Top = 8
end


-=Sergeante=-   (2002-07-16 14:04:00) [4]

Чесно говоря, не замечал такого за этим компанентом. Работаю с ним довольно давно, и он весьма успешно справлялся. Такое впечатление, что где-то каким-то образом зылазит эхо передаваемых данных.

Напиши значения свойств TComPort, используешь ли TComDataPacket

И что там за переменка такая "a"
procedure TForm1.ComPort1RxChar(Sender: TObject; Count: Integer);
begin
comport1.ReadStr( a,count);
label8.Caption:=label8.Caption+ a;
end;


AlekseyK   (2002-07-16 13:00:00) [5]

Дело в том что в OnRxChar процедура readstr выдает все принятые и посланные Char
Здесь мажет быть и модем и миниАТС и все остальное
когда устройство отвечает мне, после посланной мной командой, мне нужен только ответ а не запрос+какието символы+ответ
В приведенный выше примере если в место label8 будет edit то результат выходит AT |||OK ||
тоже самое если мне на циске нужно получить список сидящих юзерав
посылаю who
потом читаю методом AlekseyK © (15.07.02 18:32)
получу
who
User1
User2
хотя who мне не нужен


-=Sergeante=-   (2002-07-16 10:21:00) [6]

Я так понял, что ты работаешь с модемом? Тогда если модем посылает тебе ответ на твою команду, то просто анализируй ответ модема на вхождение строки OK


Pingo   (2002-07-16 05:10:00) [7]

Если просто, то можно так.
На форму кинь Terminal. Соедини с ComPort1. На OnChar:

procedure TForm1.TerminalChar(Sender: TObject; Ch: Char);
begin
if Ch<>#13 then
begin
if Ch<>#10 then Edit1.Text:=Edit1.Text+Ch;
end else
begin
Memo1.Lines.Add(Edit1.Text);
Edit1.Text:="";
end;
end;

Получишь в Memo построчно поток с COM"a.
А вообще-то с этой компонентой демки неплохие идут...
И вопрос формулируй четче, может я и не понял что ты хотел.


Наверх

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