Модераторы: Snowy, MetalFan, bems, Poseidon

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> AsyncFree104 отлов байта, приём побайтно информации с контроллера 
:(
    Опции темы
northener
Дата 24.1.2012, 21:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1361
Регистрация: 2.9.2010

Репутация: 12
Всего: 20



Почитай про 
QueryPerformanceCounter, QueryPerformanceFrequency
Это поможет максимально точно измерить время получения очередного сигнала.


--------------------
Но только лошади летают вдохновенно.
Иначе лошади разбились бы мгновенно!
PM MAIL   Вверх
Darkblue
Дата 24.1.2012, 22:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 10
Регистрация: 20.1.2012

Репутация: нет
Всего: нет



Спасибо 
PM MAIL   Вверх
northener
Дата 25.1.2012, 01:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1361
Регистрация: 2.9.2010

Репутация: 12
Всего: 20



Цитата(Darkblue @  24.1.2012,  22:31 Найти цитируемый пост)
Спасибо

Вот тут уж вообще почти не за что.
Вчера смог только указать более точные способы измерения интервалов времени, чем стандартный таймер.
Но.
Цитата(Darkblue @  24.1.2012,  21:06 Найти цитируемый пост)
делаю логический анализатор

Логический анализатор чего? И для чего?
Поскольку Windows не является ОС реального времени "время получения ответа по СОМ-порту от внешнего устройства вашей программой от времени ответа на ваш запрос к устройству" может различаться от раза к разу далеко не на миллисекуды. (Скорость передачи по СОМ-порту тут почти не при чём). И даже не на десятки/сотни миллисекунд. А на секунды!
Вы бы свою задачу представили бы полностью. Можно мне в личку или на почту, если что-то смущает.



--------------------
Но только лошади летают вдохновенно.
Иначе лошади разбились бы мгновенно!
PM MAIL   Вверх
Strannix
Дата 6.2.2012, 13:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 4
Регистрация: 6.2.2012

Репутация: нет
Всего: нет



Может мой вопрос немного не по теме, использую тот же пакет компанентов для работы с портом, на пк реализована раздача GPS данных через виртуальные порты GPSGate, порт открывается данные в терминале идут, но когда пытаешься считать данные именно с порта в строку например так s:=AfComPort1.ReadString; ничего не происходит тоесть данных в переменной нет.Из потрта необходимо считать определенные строки с данными а дальше дело техники, прошу помощи. Вот какие данные отображаются в окне терминала 

$GPRMC,094812,A,5027.09199,N,04433.97236,E,9.91,328.3,060212,0.0,E*4D
$GPGLL,5027.09199,N,04433.97236,E,094812,A*2D
$GPGGA,094812,5027.09199,N,04433.97236,E,1,5,0.0,0.0,M,0.0,M,,*40
$GPVTG,328.3,T,328.3,M,9.91,N,18.35,K*70
$GPRMC,094813,A,5027.09434,N,04433.97009,E,9.91,328.3,060212,0.0,E*40


PM MAIL   Вверх
northener
Дата 6.2.2012, 13:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1361
Регистрация: 2.9.2010

Репутация: 12
Всего: 20



Цитата(Strannix @  6.2.2012,  13:24 Найти цитируемый пост)
когда пытаешься считать данные именно с порта в строку например так s:=AfComPort1.ReadString

Процедура ReadString ожидает получения признака "конец строки". Как правило это LFCR или что-то одно из них. Если этих символов в принимаемой информации нет, данная процедура ничего не вернет.


--------------------
Но только лошади летают вдохновенно.
Иначе лошади разбились бы мгновенно!
PM MAIL   Вверх
Strannix
Дата 6.2.2012, 13:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 4
Регистрация: 6.2.2012

Репутация: нет
Всего: нет



каким же образом тогда образом можно считать данные?получиться ли считать буфер как в предыдущем примере программы?я пробовал с буфером эксперементировать точно так как в примере результа также нет натолкните пожалуста на примлемое решение данного вопроса

Добавлено через 1 минуту и 20 секунд
есть ще вариант считывания необходимой информации непосредсвенно из лог файла но это не рационально и сопряжено с дополнительными проблемами
PM MAIL   Вверх
northener
Дата 6.2.2012, 13:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1361
Регистрация: 2.9.2010

Репутация: 12
Всего: 20



Цитата(Strannix @  6.2.2012,  13:35 Найти цитируемый пост)
я пробовал с буфером эксперементировать точно так как в примере

Покажи свой код.


--------------------
Но только лошади летают вдохновенно.
Иначе лошади разбились бы мгновенно!
PM MAIL   Вверх
Strannix
Дата 6.2.2012, 13:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 4
Регистрация: 6.2.2012

Репутация: нет
Всего: нет



var
  Form1: TForm1;
  Buff: byte = ($12);
  ReadBuffer: array of byte;
  z,count,poz,i:integer;
  s:string;

implementation

{$R *.dfm}

procedure TForm1.FormCreate(Sender: TObject);
begin
i:= AfComPort1.InBufSize;
SetLength(ReadBuffer,i);
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
AfComPort1.ComNumber :=strtoint(LabeledEdit1.Text);
AfComPort1.Open;
end;

procedure TForm1.AfComPort1DataRecived(Sender: TObject; Count: Integer);
begin
AfComPort1.ReadData(ReadBuffer[Poz], count);
z:=ReadBuffer[Poz];
Inc(Poz,count);
memo1.Lines.Add(inttostr(z));
poz:=0;
count:=0
end;
PM MAIL   Вверх
northener
Дата 6.2.2012, 13:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1361
Регистрация: 2.9.2010

Репутация: 12
Всего: 20



Цитата(Strannix @  6.2.2012,  13:41 Найти цитируемый пост)
z:=ReadBuffer[Poz];
Inc(Poz,count);
memo1.Lines.Add(inttostr(z));
poz:=0;
count:=0

Зачем же так бездумно копировать чужой пример? Автор топика принимал от внешнего устройства только один байт в ответ на свою команду.
Попробуй переписать сей кусок кода так:
Код

  for i:=Poz to Poz+Count do
    Memo1.Text:=Memo1.Text+IntToStr(ReadBuffer[i])+',';
  Poz:=0;



--------------------
Но только лошади летают вдохновенно.
Иначе лошади разбились бы мгновенно!
PM MAIL   Вверх
Strannix
Дата 6.2.2012, 14:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 4
Регистрация: 6.2.2012

Репутация: нет
Всего: нет



попробовал в мемо одни 0, и я до этого пробовал в цикле считать данные из буфера только концом цикла указывал InBufSize,
PM MAIL   Вверх
northener
Дата 6.2.2012, 14:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1361
Регистрация: 2.9.2010

Репутация: 12
Всего: 20



Параметры СОМ-порта установлены правильно? Скорость, количество бит, четность, количество стоп-бит.
Кроме того обычно у подобных компонент СОМ-порта есть событие типа OnError. Попробуй его задействовать.


--------------------
Но только лошади летают вдохновенно.
Иначе лошади разбились бы мгновенно!
PM MAIL   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Для новичков"
SnowyMetalFan
bemsPoseidon
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

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

  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Для новичков | Следующая тема »


 




[ Время генерации скрипта: 0.1113 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.