Форум: "Основная";
Текущий архив: 2002.07.29;
Скачать: [xml.tar.bz2];
ВнизComPort Найти похожие ветки
← →
AlekseyK (2002-07-15 18:32) [0]Кто пользовалься компонентом 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;
как получить только ОК
и есть ли другие компоненты которыми можно получить только ответ?
← →
Pingo (2002-07-16 05:10) [1]Если просто, то можно так.
На форму кинь 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.
А вообще-то с этой компонентой демки неплохие идут...
И вопрос формулируй четче, может я и не понял что ты хотел.
← →
-=Sergeante=- (2002-07-16 10:21) [2]Я так понял, что ты работаешь с модемом? Тогда если модем посылает тебе ответ на твою команду, то просто анализируй ответ модема на вхождение строки OK
← →
AlekseyK (2002-07-16 13:00) [3]Дело в том что в OnRxChar процедура readstr выдает все принятые и посланные Char
Здесь мажет быть и модем и миниАТС и все остальное
когда устройство отвечает мне, после посланной мной командой, мне нужен только ответ а не запрос+какието символы+ответ
В приведенный выше примере если в место label8 будет edit то результат выходит AT |||OK ||
тоже самое если мне на циске нужно получить список сидящих юзерав
посылаю who
потом читаю методом AlekseyK © (15.07.02 18:32)
получу
who
User1
User2
хотя who мне не нужен
← →
-=Sergeante=- (2002-07-16 14:04) [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 16:21) [5]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-17 11:40) [6]Что она стринг - это понятно...
Честно говоря, логика такого поведения компоенента мне не ясна.
← →
wal (2002-07-17 13:06) [7]
> Дело в том что в OnRxChar процедура readstr выдает все принятые
> и посланные Char
В корне ошибочное утверждение. Просто модем сам выдает (по умолчанию) то, что бринял от тебя, то есть эхо.
Страницы: 1 вся ветка
Форум: "Основная";
Текущий архив: 2002.07.29;
Скачать: [xml.tar.bz2];
Память: 0.45 MB
Время: 0.007 c