|
1 / 1 / 1
Регистрация: 03.12.2012
Сообщений: 299
|
|
Обработка пакетов23.01.2019, 02:50. Показов 5645. Ответов 48
Метки нет (Все метки)
Здравствуйте!
Как реализовать следующую задачу: Есть файл с переданными пакетами. Длина пакетов 1936 байт. Но может быть и меньше в случае передачи пакета с ошибкой. - Первые 2 байта каждого пакета синхронизация (в десятичном представлении: 8 2). - 1935 и 1936 байт имеют вид 0 1 или 1 0. - 1930 байт счётчик пакетов (от 0 и до...). Нужно: 1) Выбрать пакеты длиной 1936 байт начало которых 8 2 и окончание 0 1 либо 1 0. 2) Удалить повторяющиеся пакеты. 3) Отсортировать по счётчику (1930 байт). 4) Удалить Байты синхронизации (8 2) и 7 байт в конце каждого пакета. 5) Сохранить в файл.
0
|
|
| 23.01.2019, 02:50 | |
|
Ответы с готовыми решениями:
48
Отправка пакетов Перехват пакетов Разбор AVL пакетов GPS |
|
1 / 1 / 1
Регистрация: 03.12.2012
Сообщений: 299
|
|
| 25.01.2019, 04:16 [ТС] | |
|
northener, объясните тупому. Буду знать.
Программирование это не моя профессия, поэтому и прошу помочь. Добавлено через 1 час 21 минуту Нашёл, что в Делфи 7 нет Generics.Collections. В этом причина?
0
|
|
|
882 / 404 / 173
Регистрация: 20.10.2016
Сообщений: 1,828
|
||
| 25.01.2019, 04:24 | ||
|
0
|
||
|
1 / 1 / 1
Регистрация: 03.12.2012
Сообщений: 299
|
|
| 25.01.2019, 04:29 [ТС] | |
|
Nanotentacle, спасибо огромное. Но легче не стало...
0
|
|
|
|
||||||
| 25.01.2019, 10:33 | ||||||
|
ну собсно ничего не поменяется принципиально-то.
Но нелицензионную Д7 я бы поменял на лицензионную бесплатную Delphi 10.3 CE вот вариант, который будет работать и в D7 Сильно помогло вам? Кликните здесь для просмотра всего текста
Добавлено через 25 секунд P.S. не проверял вообще
0
|
||||||
|
1 / 1 / 1
Регистрация: 03.12.2012
Сообщений: 299
|
|
| 25.01.2019, 14:00 [ТС] | |
|
krapotkin, Спасибо огромное за проделанную работу. Буду потихоньку разбираться.
Конечно очень много не понятно. Как правильно обращаться к элементам списка? (для вывода их например в StringGrid)
0
|
|
|
1 / 1 / 1
Регистрация: 03.12.2012
Сообщений: 299
|
|
| 25.01.2019, 16:09 [ТС] | |
|
krapotkin, конечно я уже достал Вас, но не могли бы привести пример вывода хотя бы одного элемента в Memo?
0
|
|
|
1 / 1 / 1
Регистрация: 03.12.2012
Сообщений: 299
|
|
| 25.01.2019, 17:06 [ТС] | |
|
В том в котором они хранятся в List если можно.
0
|
|
|
|
|
| 25.01.2019, 18:39 | |
Сообщение было отмечено Alex99999 как решение
Решение
в листе хранятся ссылки на объекты, каждый из которых загружен из файла
т.е. N раз по 1936 байтов как вы хотите их смотреть?? просто 1936 шестнадцатиричных чисел вывести на экран ?
1
|
|
|
1 / 1 / 1
Регистрация: 03.12.2012
Сообщений: 299
|
|
| 25.01.2019, 21:06 [ТС] | |
|
krapotkin, спасибо огромнейшее. Сам бы я никогда не решил подобную задачу. А почему в Memo 12 раз
выводится 1-ый пакет, а где остальные?
0
|
|
| 26.01.2019, 02:22 | ||
|
Не по теме:
Я вот например не прошу на форуме сантехников помочь мне заменить смеситель в ванной надеясь что кто-то из участников того форума приедет ко мне домой и заменит его бесплатно. :)
0
|
||
|
1 / 1 / 1
Регистрация: 03.12.2012
Сообщений: 299
|
|
| 26.01.2019, 04:16 [ТС] | |
|
northener, да я конечно понимаю, что это перебор. Но для меня данная тема - это тёмный лес (да как впрочем и всё программирование), а времени не особо. А программа реализующая вышеперечисленный алгоритм очень нужна.
Добавлено через 1 час 26 минут Сам я делал так: 1 При загрузке файла переводил значение байт в двоичный вид (в S:String) 2 Находил позицию 0000100000000010 (8 2 в десятичной) 3 Копировал в StringList 15478 бит начиная с позиции 0000100000000010-(синхронизация) 4 Находил позицию 000000000000001 (0 1 в десятичной) либо 000000100000000 (1 0 в десятичной)-(2 байта в конце) 5 Делал проверку если очередная строка StringList с позиции 15472 = 000000000000001 либо 000000100000000, то оставлял строку если нет, то удалял. 6 В другой StringList копировал информацию начиная с 17 бита вместе со счётчиком (длина строки 15424 бита) 7 Удалял повторяющиеся строки На этом у меня всё остановилось (уже сам начал путаться в том что нагородил), поэтому и обратился на данный форум. Далее по идее нужно: 1 отсортировать все строки по последним 8 битам (номер пакета в общем блоке) 2 Ну и собственно удалить эти 8 бит и сохранить в файл Может загрузить полученные строки в десятичном виде в StringGrid и отсортировать по последнему 1928 байту? Опять же: моих знаний явно не хватит для этого. Как можно упростить данную ересь, наверняка,то что я написал делается гораздо короче. С массивами в отпуске буду разбираться.
0
|
|
|
|
||
| 26.01.2019, 09:09 | ||
Сообщение было отмечено Alex99999 как решение
Решениевот исправленный вариант но дальше вам придется либо нанять программиста либо разобраться самому отвечать на вопросы тут все готовы но у вас нет конкретных вопросов, а только ТЗ...
1
|
||
|
|
||||||
| 26.01.2019, 09:12 | ||||||
Сообщение было отмечено Alex99999 как решение
Решение
вариант с переводом в двоичный вид - совсем плох
байт это просто число. не требуется его никуда переводить если сказано что байт=8, а следующий = 2, вот собсно и
1
|
||||||
|
1 / 1 / 1
Регистрация: 03.12.2012
Сообщений: 299
|
||
| 26.01.2019, 09:51 [ТС] | ||
|
krapotkin, я уже не знаю как Вас благодарить за проделанный труд.
В свободное время буду потихоньку разбираться во всём. Вопросы не задавал потому что даже и не знаю, что и как спросить.
0
|
||
|
|
|
| 28.01.2019, 22:13 | |
|
мы предполагаем, что файл большой и нет смысла его полностью скачивать в массив
для работы с файлами есть концепция потока (Stream) НЕ ПУТАТЬ с потоками операционной системы (Thread) файл по мере необходимости загружается по кускам в некоторый буфер, а из буфера этого стрима мы уже можем загрузить к себе в небольшой массив или запись сколько-то байтов в данном случае предполагается что в массив байтов Arr загружен какой-то кусок файла в моем примере я загружаю из стрима в буфер 1000 байтов и ищу там байты 8 2 если не нашел, загружаю в этот буфер следующий кусок все это сделано из-за того, что вы сказали, что пакеты а файле могут быть битыми, неполными поэтому поиск каждый раз веду по всем признакам иначе можно было просто загрузить файл кусками по 1936 байт в записи нужного типа
0
|
|
|
1 / 1 / 1
Регистрация: 03.12.2012
Сообщений: 299
|
||||||
| 01.02.2019, 15:53 [ТС] | ||||||
|
krapotkin, Не могли бы Вы объяснить принцип функции:
$0208, $0100, $0001 ясно, что это 8 2 и 1 0 или 0 1, а как формируются и почему наоборот?
0
|
||||||
|
62 / 48 / 20
Регистрация: 01.09.2017
Сообщений: 381
|
|
| 01.02.2019, 16:11 | |
|
О-го-го как эту тему раскочегарили, аж вторая страничка уже полная.
0
|
|
| 01.02.2019, 16:11 | |
|
Перехват пакетов, отправляемых на устройство Отправка ICMP пакетов на указанный IP Очередность обработки пакетов из TClientSocket Чтение и запись пакетов Byte
Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Калькулятор для расчета родства
russiannick 07.08.2026
1. Задача: Создать калькулятор для расчета родства.
Родственных связей существует 8 ступеней, такие как:
p - отец
P - мать
q - муж
Q - жена
b - брат
B - сестра
s - сын
S - дочь
|
Мир по моей воле
kumehtar 07.08.2026
Когда-то кажется, что всё просто. Ты весь такой светлый. Причиняешь добро. Борешься за справедливость в этом тёмном мире.
Потом начинаешь замечать одну неприятную вещь. Почти каждый хороший. . .
|
Кредитный калькулятор
Maks 05.08.2026
Решение задачи по прикладной информатике средствами 1С.
Задача:
Напишите приложение-калькулятор, которое помогает рассчитывать параметры кредита для аннуитетного и дифференцированного видов. . .
|
У нас сейчас поговорку "Опять 25" нужно переделать на "Опять +35".
kumehtar 04.08.2026
С ностальгией вспоминаю времена моего детства, когда у нас и правда +25 - была максимальная температура летом. Раньше +25 °C реально казались вершиной жары, когда можно было весь день пропадать на. . .
|
|
Как ИИ начал спорить и врать (возможно почуяв опасность для себя от индустрии - уход от электроники).
Hrethgir 04.08.2026
Недельный диалог, на фоне событий с НПЗ. Да, из спирта можно получать бензин, и это не сложно. Но потом в схеме я решил избавиться от насоса, при этом полностью сделав контроль подачи спирта в. . .
|
Термопринтер QR701
Argus19 03.08.2026
Термопринтер QR701
Купил два термопринтера QR701.
На сэлф-тесте написано:
Language: PC936 (GB18030).
Что означает, что принтеры могут печатать только латиницу и китайские иероглифы. Так же. . .
|
Создание формы заимствованного документа
Maks 03.08.2026
Задача:
Необходимо создать собственную форму заимствованного документа. На форме должен быть реквизит "Покупатель", а также
табличная часть со следующими реквизитами:
- Расчетный счет покупателя. . .
|
Задача предоставления скидок покупателям
Maks 03.08.2026
Задача:
В документе "Продажи" необходимо реализовать функционал предоставления скидок покупателям. Скидка должна автоматически рассчитываться и подставляться в соответствующее поле при выборе. . .
|