Показать сообщение отдельно
  #4  
Старый 24.10.2022, 21:58
Аватар для Electronic_Arts
Electronic_Arts Electronic_Arts вне форума
Местный
 
Регистрация: 13.07.2006
Адрес: на земле
Сообщения: 562
Версия Delphi: Delphi 11
Репутация: 18
Восклицание

Мужик ты не представляешь как я рад снова видеть тебя тут.

- Нет. Вот представь два устройства которые общаются между собой по и я тот кто подключился к этой сети и перехватываю зашифрованные данные и нужно их дешифровать грубо говоря.
Вот например: Первый девайс посылает второму запрос что бы узнать IMEI и я перехватил этот запрос и начал обработку.
Text:=Comport.ReadAnsiString; //Пакет данных

Код:
2022-10-18 12:19:56: 
     Sim900_Write-81: 
     AT Send, len is 9 AT+CGSN
if pos('AT+CGSN', Text)<>0 then
//вот тут должен уже получить IMEI
А имеи придет в следующем пакете в форме в следующем цикле для меня а если смотреть на время ответ приходит в эту же секунду
Код:
2022-10-18 12:19:56: 
     Module_Wait_Sync-373: 
     AT Recv, len is 25 
868895056178897
И как перехватывать и обрабатывать такие данные если в одной секунде приходят 10-30 пакетов. Возможности собрать а потом обработать нету потому что чем медлить тем больше информации накопиться и парсить будет не выгодно по времени. К примеру девайс уже отключился а мой софт еще даже дату не смог парсить ИМЕИ к примеру.


Я многое сейчас заново вспоминаю много времени прошло.
Мучают вопрос на которые сможешь только ты ответить.
1. Если после перехвата if pos('AT+CGSN', Text)<>0 then передать данные на обработку к другой процедуре она будет параллельно работать?


Вот например

Код:
Text:=Comport.ReadAnsiString;
if pos('AT+CGSN', Text)<>0 then
begin
 //парсим данные тут

end;

if pos('GSN', Text)<>0 then
begin
 //парсим данные тут

end;
if pos('CSQ', Text)<>0 then
begin
 //парсим данные тут

end;
или после перехвата передать данные процедуре
Код:
Text:=Comport.ReadAnsiString;
if pos('AT+CGSN', Text)<>0 then
begin
 AT_CGSN:=STRING(Text);
 AT_CGSN; //процедура

end;

if pos('GSN', Text)<>0 then
begin
 GSN:=STRING(Text); 

 GSN; //процедура
end;
if pos('CSQ', Text)<>0 then
begin
 CSQ:=STRING(Text); 

 CSQ; //процедура

end;
втором случае как бы передаем пакет процедуре идем дальше.
Какой из них быстрее или разницы не будет??
__________________
Нет ничего не возможного. Вопрос только во времени...
Ответить с цитированием