Вверх ↑
Этот топик читают: Гость
Ответов: 4
Рейтинг: 1
#1: 2010-08-10 00:53:34 ЛС | профиль | цитата
Доброго всем времени...
Есть необходимость получить содержимое MMF. В HiAsm, как я понял для этой задачи предназначен компонент SharedStream.
И с ним у меня возникли некоторые проблемы. Для изучения этого компонента я взял третий пример из Wiki по этому компоненту.
Пример работает, две запущенные программы прекрасно обмениваются между собой данными, сторонние программы для просмотра MMF тоже все видят. Но при попытке прочитать MMF созданный другим приложением, программа из примера видит только первые четыре байта... Причем смещение по байтам тоже почему-то не работает. Не подскажете почему так происходит?
карма: 0

0
Разработчик
Ответов: 26153
Рейтинг: 2127
#2: 2010-08-10 02:15:11 ЛС | профиль | цитата
Нифига не понял. Кто чего читает, кто чего создает, когда создает... Нельзя ли по пунктам расписать
------------ Дoбавленo в 02.15:
Anderer писал(а):
Причем смещение по байтам тоже почему-то не работает

А Remapping делается в этом случае
карма: 22

1
Голосовали:Anderer
Ответов: 4
Рейтинг: 1
#3: 2010-08-10 09:34:14 ЛС | профиль | цитата
Попробую описать поподробнее.
Программа нужна вот для этого девайса: http://www.youtube.com/watch?v=1mOiDk25lAY
Игра хранит значения (скорость, РПМ, топливо и т.д.) в MMF. Задача их оттуда выдернуть.
Чтобы игру постоянно не гонять я использовал софтину из этого комплекта: http://www.x-simulator.de/forum/download/file.php?id=531&sid=bb914b0eea98a47fa1e999821fb12fda
Я взял программу из третьего примера к SharedStream. И пытался прочитать этот файл. Но кроме первых четырех байт я ничего не вижу, почему-то.
Remapping не помогает. С ним вообще ничего не читается.
карма: 0

0
Разработчик
Ответов: 26153
Рейтинг: 2127
#4: 2010-08-10 12:06:02 ЛС | профиль | цитата
Anderer писал(а):
Чтобы игру постоянно не гонять я использовал софтину из этого комплекта

Еще раз -- можно конкретнее: как запускаем софтину, что прописываем в полях. Насколько я понимаю, то это должен быть эмулятор этого устройства. Предупреждаю сразу -- ни игру, ни, тем более, девайс ставить никто не будет, а потому необходимо добиться результата без использования игры и девайса, только на эмуляторах.

Короче, опиши по пунктам свои действия с читалкой и тестером, которые ты предложил к рассмотрению
карма: 22

0
Ответов: 4
Рейтинг: 1
#5: 2010-08-10 12:24:52 ЛС | профиль | цитата
Создаю MMF с помощью вот этого:

При чтении выходит вот что:

Программа:

Add(DataToFile,1143428,490,392)
{
Type=1
Point(doPosition)
Point(Position)
link(onGet,7194148:doText,[])
link(Stream,11748904:Stream,[])
}
Add(SharedStream,11748904,490,329)
{
CoreName="test"
Point(PageMem)
Point(Position)
Point(FileOffset)
}
Add(Timer,1658253,378,399)
{
link(onTimer,1143428:doGet,[])
}
Add(Timer,11573609,378,329)
{
link(onTimer,11748904:doOpen,[])
}
Add(Memo,7194148,560,371)
{
Left=10
Top=5
Width=160
Height=100
}
Add(MainForm,11176470,343,224)
{
Left=20
Top=105
Width=190
Height=160
Caption="MemoryMapFile"
Point(onClose)
}
карма: 0

0
файлы: 1code_19926.txt [612B] [79]
Разработчик
Ответов: 26153
Рейтинг: 2127
#6: 2010-08-10 15:12:25 ЛС | профиль | цитата
Вообще-то, doGet читает последовательность данных а не все сразу. Вот пример, который читает 22-а тестовых байта

code_19927.txt
карма: 22

0
файлы: 1code_19927.txt [765B] [106]
Ответов: 4
Рейтинг: 1
#7: 2010-08-10 20:27:39 ЛС | профиль | цитата
nesco, большое спасибо. Заработало )
карма: 0

0
7
Сообщение
...
Прикрепленные файлы
(файлы не залиты)