Форум программистов, компьютерный форум, киберфорум
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 8, средняя оценка - 5.00
Pigmalion
23 / 20 / 3
Регистрация: 18.06.2013
Сообщений: 83
#1

Bin файл из Modbus. Прочитать из файла область памяти - C++

20.07.2013, 14:15. Просмотров 1137. Ответов 20
Метки нет (Все метки)

Доброго времени суток!
Подскажите пожалуйста, у меня есть bin-файл из которого нужно достать данные полученные устройством и хранящиеся в ячейках памяти, т.е. смещение адреса - 0002h, адрес в MODBUS 0001h соответствует сетевому адресу прибора или прочитать из файла область 0x12 … 0x19 и обнаружить аббревиатуру и т.д и т.п.
Сначала думал, что воспользуясь hex-редактором получится это сделать, но не вышло, похоже что надо читать файловый поток данных и как-то обращаться к этим ячейкам и считывать информацию. Подскажите примерный план реализации на C++ и необходимый материал для этого. Заранее благодарен.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
20.07.2013, 14:15
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Bin файл из Modbus. Прочитать из файла область памяти (C++):

Данные записать в файл F1.txt, затем прочитать оттуда, обрабатывались и записывались в бинарный файл F2.bin с проверкой - C++
Никак не получается отладить в BC++ 3.1. Как сделать в классах так, чтобы введённые данные записывались в файл F1.txt, затем читались...

Прочитать файл в обратном порядке т.е. встать в конец файла и прочитать до начальной позиции - C++
подскажите пожалуйста как можно прочитать файл в обратном порядке т.е. стать в конец файла и прочитать до начальной позиции?

Прочитать bin и записать его в структуру - C++
Здравствуйте. Пытаюсь прочитать бинарный файл и записать его в структуру. Файл начинается с такой последовательности: 44 65 4d 4f 38 02....

Закачка файла и перевод в область памяти типа PVOID - C++
В общем моя программа скачивает библиотеку, грузит ее в память и из памяти библиотека грузится в процесс посредством manual mapping. Но...

Прочитать и переписать из текстового файла в текстовый файл - C++
Ребята, добрый всем день. Помогите, пожалуйста, новичку. У меня имеется файл, его нужно прочитать построчно и переписать этот файл в...

Прочитать данные из xlsx файла и записать в другой файл - C++
Всем бодрой пятнички!:) Соскучилась я за вами, потому обращаюсь с вопросом.:gwink: Всегда была слаба в теме работы с файлами. А тут...

20
Pigmalion
23 / 20 / 3
Регистрация: 18.06.2013
Сообщений: 83
20.07.2013, 18:56  [ТС] #16
Да, файл дали вместе с заданием. Как именно создавался файл, я не знаю.
0
alsav22
5426 / 4821 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
20.07.2013, 20:03 #17
МСИ файл, только в служебной области не совпадают с таблицей 2 положение года и месяца.
Кликните здесь для просмотра всего текста
0 25
1 20
2 38
3 13
4 5
5 32
6 3
7 99
8 3
9 0
a 0
b 0
c 0
d 0
e 0
f 0
10 0
11 0
12 0
13 0
14 0
15 0
16 0
17 0
18 0
19 0
1a 0
1b 51
1c 48
1d 51
1e 50
1f 48
20 0
21 0
22 0
23 0
24 0
25 0
26 0
27 0
28 0
29 0
2a 0
2b 0
2c 48
2d 48
2e 48
2f 51
30 0
31 0
32 0
33 0
34 0
35 0
0
Pigmalion
23 / 20 / 3
Регистрация: 18.06.2013
Сообщений: 83
20.07.2013, 20:24  [ТС] #18
Это значения из hex-редактора, переписанные в столбик, и как вы из этого набора поняли, что это МСИ файл? Как вы думаете, что значит заполненная одинаковыми числами область в конце?
0
alsav22
5426 / 4821 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
20.07.2013, 20:44 #19
Цитата Сообщение от Pigmalion Посмотреть сообщение
и как вы из этого набора поняли, что это МСИ файл?
0x12 … 0x19 сигнатуры нет; эти области: 0x10… 0x1F и 0x20… 0x2F явно совпадают с таблицей 2, потом идут 0 до 0x80, где у МСИ начинается статусная область; если перевести первые пять байт (0 - 4) c ДДК, то получится:14 часов 19 минут, 26 мая 013 года. Правда прийдётся поменять порядок следования месяца и года, но это может и опечатка в таблице.
1
Pigmalion
23 / 20 / 3
Регистрация: 18.06.2013
Сообщений: 83
20.07.2013, 23:44  [ТС] #20
Спасибо за подробное объяснение. Но эта часть файла была более менее понятна, больше интересует продолжение, где как я понял тоже должны быть данные, а там сплошные hhhh.
0
alsav22
5426 / 4821 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
21.07.2013, 08:59 #21
Цитата Сообщение от Pigmalion Посмотреть сообщение
а там сплошные hhhh.
Там 0xFFFF.
интерпретировать первый код 0xFFFF как окончание области
, добавлю, области данных. Начинается с 200 адреса. Все данные расположены до этого. Область всех (вместе со служебной информацией) данных 512 байтов. Реально меньше. Количество байт статуса (0x80-0x81) 32, т.е. последний байт статуса: 80 + 20 = A0. Таблица - это статус или статус часть таблицы? В описании:
Если сигнатура отстутствует, следует учитывать, что даже если объем данных указан больше чем реально они записаны
, т.е. может не совпадать. Если судить по таблице:
007Fh Код температуры для коррекции данных мл. байт
, то последний байт с данными по адресу: 80 + 7F = FF. Реальные значение есть до адреса B6 (смещение 36), дальше 0.
Смущает запись даты. Если считать, что опечатки нет, то сначала идёт месяц, потом год. Плучается 13 месяц, 5 год. В описании же есть оговорка:
Определение же корректности файла МСИ в случае отсутствия аббревиатуры можно произвести просканировав на корректность, например, время снятия динамограммы.
0
21.07.2013, 08:59
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
21.07.2013, 08:59
Привет! Вот еще темы с ответами:

Прочитать массив из файла, изменить, вывести в другой файл - C++
Вот задание: Вот мой код: #include "stdafx.h" using namespace std; int main() { const int n = 10;

Из текстового файла прочитать четные числа и записать их в другой файл (С++) - C++
Из текстового файла прочитать четные числа и записать их в другой файл без использования массива (код С++)

Найти максимальный и минимальный элемент,и вывести их в файл и Прочитать массив из файла. - C++
Первая задача Найти максимальный и минимальный элемент,и вывести их в файл Вторая задача Прочитать массив из файла. 1)Количество...

Из текстового файла прочитать четные числа и записать их в другой файл без использования массива (код С++) - C++
Код есть только перед чтением файла нужно его создать, внести 15 чисел и закрыть, через ofstream. #include <iostream> #include...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
21
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru