реклама на сайте
подробности

 
 
 
Reply to this topicStart new topic
> Как обойти кэширование файлов с mass storage?
Dog Pawlowa
сообщение Jun 5 2014, 11:09
Сообщение #1


Гуру
******

Группа: Свой
Сообщений: 2 702
Регистрация: 14-07-06
Пользователь №: 18 823



Требуется организовать двухсторонний обмен данными между дивайсом и компьютером WIN/MAC, самое простое , удобное и платформо-независимое - это mass storage.
Компьютер читает один и тот же файл, а прибор подставляет новые данные.
Почти все работает, но компьютер не читает однажды прочитанный файл, использует данные из кэша.

Кто виноват - понятно. Что делать?


--------------------
Уходя, оставьте свет...
Go to the top of the page
 
+Quote Post
GetSmart
сообщение Jun 5 2014, 15:25
Сообщение #2


.
******

Группа: Участник
Сообщений: 4 005
Регистрация: 3-05-06
Из: Россия
Пользователь №: 16 753



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


--------------------
Заблуждаться - Ваше законное право :-)
Go to the top of the page
 
+Quote Post
Timmy
сообщение Jun 6 2014, 05:42
Сообщение #3


Знающий
****

Группа: Участник
Сообщений: 835
Регистрация: 9-08-08
Из: Санкт-Петербург
Пользователь №: 39 515



Цитата(Dog Pawlowa @ Jun 5 2014, 19:19) *
Требуется организовать двухсторонний обмен данными между дивайсом и компьютером WIN/MAC, самое простое , удобное и платформо-независимое - это mass storage.
Компьютер читает один и тот же файл, а прибор подставляет новые данные.
Почти все работает, но компьютер не читает однажды прочитанный файл, использует данные из кэша.

Кто виноват - понятно. Что делать?

Открывать файл с запретом кэширования пробовали? На WIN это точно можно.
Go to the top of the page
 
+Quote Post
mdmitry
сообщение Jun 6 2014, 08:13
Сообщение #4


Начинающий профессионал
*****

Группа: Свой
Сообщений: 1 215
Регистрация: 25-10-06
Из: СПб
Пользователь №: 21 648



Цитата(Dog Pawlowa @ Jun 5 2014, 19:19) *
Почти все работает, но компьютер не читает однажды прочитанный файл, использует данные из кэша.

Может в программе явно сбрасывать кэш или открывать без кэширования.


--------------------
Наука изощряет ум; ученье вострит память. Козьма Прутков
Go to the top of the page
 
+Quote Post
Dog Pawlowa
сообщение Jun 6 2014, 22:15
Сообщение #5


Гуру
******

Группа: Свой
Сообщений: 2 702
Регистрация: 14-07-06
Пользователь №: 18 823



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


--------------------
Уходя, оставьте свет...
Go to the top of the page
 
+Quote Post
GetSmart
сообщение Jun 7 2014, 02:07
Сообщение #6


.
******

Группа: Участник
Сообщений: 4 005
Регистрация: 3-05-06
Из: Россия
Пользователь №: 16 753



Цитата(Dog Pawlowa @ Jun 7 2014, 06:25) *
На сегодня выяснил - чтение диска по номеру сектора не кэшируется, как минимум один вариант для Win есть.

Может возникнуть конфликт с кэшем. Например, если перезаписать в обход файловой системы весь диск, а система при выключении питания запишет уже поверх записанного свой кэш. Чтобы этого не было, нужно отключать том (если на нём есть ФС, известная ОС).


--------------------
Заблуждаться - Ваше законное право :-)
Go to the top of the page
 
+Quote Post
gerber
сообщение Jun 7 2014, 05:44
Сообщение #7


Знающий
****

Группа: Участник
Сообщений: 750
Регистрация: 1-11-11
Пользователь №: 68 088



Цитата(Dog Pawlowa @ Jun 5 2014, 19:19) *
Требуется организовать двухсторонний обмен данными между дивайсом и компьютером WIN/MAC, самое простое , удобное и платформо-независимое - это mass storage.
Компьютер читает один и тот же файл, а прибор подставляет новые данные.
Почти все работает, но компьютер не читает однажды прочитанный файл, использует данные из кэша.

Вопрос с завидной регулярностью поднимается на форуме.
Вариантов два:
1) при обновлении данных в файле со стороны устройства передёргивать "флэшку", то есть имитировать отключение её от USB-порта и повторное включение. Например, путём отключения/подключения pullup-резистора на линии D+.
2) отказаться от Mass Storage в пользу MTP (Media Transfer Protocol) устройства. Из минусов - поддержка MTP-устройств появилась в винде, начиная с "семёрки". Для XP придётся устанавливать соответствующий драйвер. В MTP-протоколе есть уведомления хоста об изменениях в файловой системе устройства, по которым винда перечитывает файлы.
Побороть кэширование какими-то штатными методами не представляется возможным.


--------------------
"... часами я мог наблюдать, как люди работают." (М. Горький)
Go to the top of the page
 
+Quote Post

Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 29th June 2025 - 13:48
Рейтинг@Mail.ru


Страница сгенерированна за 0.01384 секунд с 7
ELECTRONIX ©2004-2016