Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: Общие вопросы > ком порт, как отключить приемник во время передачи


Автор: casusnur 15.5.2017, 22:00
Всем добра. Сделал электронную поделку и хочу установить с ней связь по одному проводу.
Нужно отключить приемник ком порта во время передачи.
Проблема в том что приемник всегда принимает данные во время передачи от компа к микроконтроллеру, я пробовал играться с flow control но данные либо не отправляются, либо usb-com зависает. Мне нужно получить ответ от контроллера без переданных на него данных. Как это можно сделать? Пробовал с AsyncFree, с ComPort Library и в лоб с WinApi. Не помогло..

Как можно подобное реализовать правильно? Пока сделал через жо, работает, но выполняет ненужные операции..
 
Код

procedure Send;
begin
  txEn:=true;
  AfComPort1.WriteString(TxData);
end;

procedure TForm1.AfComPort1DataRecived(Sender: TObject; Count: Integer);
begin
if txEn then
  if Count>=Length(TxData) then
              begin
              AfComPort1.PurgeRX;
              txEn:=false;
              end;
if not txen then Memo1.text:=Memo1.text+AfComPort1.ReadString;
end;

Автор: Romikgy 16.5.2017, 09:10
rs232 - это двунаправленный последовательный порт... у него нет отдельно работающих модулей для приема и передачи.... они синхронизированы!

т.е. нельзя выключать что то одно , ком порт или работает весь или не работает весь.... после передачи можно сразу обнулять данные према

Автор: casusnur 16.5.2017, 16:11
например было переданно 6 байт, планируется принять 5. а принято сначала 5, потом 6..
на каком этапе обнулять?

Автор: Romikgy 17.5.2017, 12:58
если передача по одному проводу , то не может быть что бы ответ пришел раньше запроса!
если у вас другие случаи и такое развитие ситуации возможно тогда анализатор трафика надо внедрять.

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