Перейти к содержанию
    

в общем задача в том чтоб управлять устройством вне зависимости от операционной системы скажем линукс

или виндовс.

 

Пришёл к выводу что надо оформить устройство сопряжения как диск

в котором например три текстовых файла.

кидая байт в файл 1.txt мы дёргаем портА ,

данные в текстовом файле 2.txt отвечают за конфигурацию портов и таймеров к примеру.

Файл 2.txt содержит входные данные.

типа первый байт в файле данные АЦП второй третий данные таймера 4-тый байт , данные с портА

И по мере фантазии...

 

в общем хочу сделать так .

подскажите или киньте ссылки.

Спасибо.

Изменено пользователем ветерок

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

 

Это слишком сложно в реализации!

К тому же проще имитировать не SD а MMC (покрайней мере не надо поддерживать сразу несолько линий данных)

 

К тому же что бы перехватывать запись в файлы вам надо будет еще и файловую систему имитировать.

 

Есть еще такая вещь как SDIO вот это специально для управления, но без аппаратной реализации, будет такой гемор...

 

Самое логичное ваше устройство подключить через USB или UART

для авр кстати USB софтом реализован. (лоу спид)

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

да это скучно и это вчерашний день...

 

для устройства нужны драйвера....

а тут просто диск.

и по управлять устройством можно через любой текстовый редактор.

 

с FAT конечно это напряг будет слегонца.

 

можно реализовать и по SPI ведь все SD MMC поддерживают а значит и картридеры.

 

ну и насчёт эмуляции USB low speed протокола от егора например.

я думаю эмулятор SD карты это несколько проще.

 

А прикиньте сколько софта надо писануть было...

а юзерам?

Юзерам надо разобраться в исходниках где чего там что нажать что за что отвечает, как происходит взаимосвязь устройства с приложением и так далее...

 

а тут юзеру говориш вот те текстовый файл первый байт порт А второй порт Б

третий чтние,всё сохранить .

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

можно реализовать и по SPI ведь все SD MMC поддерживают а значит и картридеры.

нет не значит!

это для того что бы карту можно было на простом устройстве считать!

если вы сделаете только spi скорее всего ваша карта не будет работать на большинстве устройств.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

да это скучно и это вчерашний день...

Ну если важен процесс...

 

для устройства нужны драйвера....

USB-HID, или прикинуться виртуальным Serial.

 

с FAT конечно это напряг будет слегонца.

Ну да, слегонца. FAT придется реализовывать наизнанку.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

а тут юзеру говориш вот те текстовый файл первый байт порт А второй порт Б

третий чтние,всё сохранить .

только надо учесть что данные пишутся по секторам (или даже сразу по кластерам)

к тому же еще кеш есть, т.е. операционка вообще может потом решиь записать файл!

отключиь кеш конечно можно но для этого нужно файл специальным образом открывать...

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

ну хорошо прикинусь я HID

мне прийдётся ещё воротить на делфи си басике и или в асме прогу чтоб всем этим управлять.

 

я думаю что все рарт ридеры знать SPI просто обязаны.

а вот SD и MMC не обязаны

потому как сложнее в реализации.

некоторые ридеры поэтому и медленные.(я так думаю)

 

"FAT"

будет с изюминкой,это верно :)

 

важен результат конечно больше.

 

Мне вот видится что это решение гораздо интереснее тем что управлять элементарно устройством,в голой ОС без каких либо сторонних программ.

 

Ну вот с простого самого тот же светодиод...

 

чтоб его зажечь надо как минимум загрузить делфи и как минимум понять что к чему "прикручено" в программе

она кстати (Delphi)не бесплатная? если кого-то это интересует :)

 

а в случае с SD картой

нам нужен любой бесплатный язык,любое бесплатное средство автоматизации типа nncron, hotkey и так делее...

 

которые позволяют работать с файлами на чтение и запись...

и вуаля!

 

ниодно решение другое не может дать такого быстрого старта.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

я думаю что все рарт ридеры знать SPI просто обязаны.

а вот SD и MMC не обязаны

потому как сложнее в реализации.

некоторые ридеры поэтому и медленные.(я так думаю)

 

SD MMC как раз обязаны!

а вот ридеры нет.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

чтоб его зажечь надо как минимум загрузить делфи и как минимум понять что к чему "прикручено" в программе

она кстати (Delphi)не бесплатная? если кого-то это интересует :)

Чего это вы зациклились на Дельфи? Есть более стандартные и более дешёвые языки Си =)

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

только надо учесть что данные пишутся по секторам (или даже сразу по кластерам)

к тому же еще кеш есть, т.е. операционка вообще может потом решиь записать файл!

отключиь кеш конечно можно но для этого нужно файл специальным образом открывать...

 

а как может это навредить ?

ведь мы записывая в первый байт файла 1.тхт не трогаем место в секторе для второго байта .

может я что-то упускаю ?

 

 

Чего это вы зациклились на Дельфи? Есть более стандартные и более дешёвые языки Си =)

это вы зациклились,мне вообще языки не интересны тут.

Разве это так сложно понять?

 

 

в общем я понял что такой реализации нет раз дело не пошло дальше дискуссии :)

Изменено пользователем ветерок

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

кидая байт в файл 1.txt мы дёргаем портА ,

данные в текстовом файле 2.txt отвечают за конфигурацию портов и таймеров к примеру.

Файл 2.txt содержит входные данные.

Дурь-то какая :(. Для конечных пользователей нынче просто Web интерфейсы делают.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

а как может это навредить ?

тем что сразу весь сектор записывается. и тем что количество записей из программы не будет равно физическому количеству записей на диск

т.е. вы записали в 1 байт потом во второй потом снова в первый, а на диск пойдет одна запись, а информация о первом значении первого байта вообще пропадет

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

тем что сразу весь сектор записывается. и тем что количество записей из программы не будет равно физическому количеству записей на диск

т.е. вы записали в 1 байт потом во второй потом снова в первый, а на диск пойдет одна запись, а информация о первом значении первого байта вообще пропадет

Я реализовал MassStorage (на AVR). И могу сказать, что кэширование от компа в сторону девайса отключается легко, и по умолчанию, кстати, отключено. А вот наоборот, т.е. от девайса, всё кэшируется и как отключить я не знаю. У девайса нет никаких средств сказать ОС, что данный файл изменён. Я пишу логи в файлы, поэтому данная проблема меня касается и напрягает. Но я знаю всего лишь единственное решение - посекторное чтение. Да, тогда ничего не кэшируется, но файл, а тем более текстовый, таким образом считать без установки к.л. программ считать не удастся. Ксати м.б. кто мне подскажет как отключить это самое кэширование под win?

Кстати реализация файловой системы не в пример легче, чем реализация собственно MassStorage. И ещё я не знаю будет-ли работать MassStorage на LowSpeed. Бывает-ли LowSpeed Bulk EP? Что-то мне помнится, что на LowSpeed поддерживается ТОЛЬКО контрольный канал и InterruptIn/Out передачи. Смотреть описание лень т.к. я уверен, что топикстартер откажется от своей затеи.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

т.е. от девайса, всё кэшируется и как отключить я не знаю.

А открывать с FILE_FLAG_NO_BUFFERING пробовали?

там правда еще тогда для чтения буфера надо VirtualAlloc ом создавать... но все это в MSDN описано.

 

 

У девайса нет никаких средств сказать ОС, что данный файл изменён.

Хотя да, операционка не может подумать что кто то кроме нее мог изменить файл.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

А открывать с FILE_FLAG_NO_BUFFERING пробовали?

там правда еще тогда для чтения буфера надо VirtualAlloc ом создавать... но все это в MSDN описано.

Не помню т.к. давно это было. Но при случае прочту и попробую. Хотя для меня самое лучшее решение - это если лог как текстовый файл смотреть можно было-бы. Т.е. ничего не запускать вообще, а взять какой-нибудь блокнот и просто посмотреть. Кстати иногда и обновляется. По времени что-ли? Но реально прочесть самый последний лог - только передёрнуть девайс.

Хотя да, операционка не может подумать что кто то кроме нее мог изменить файл.

Да пусть бы думала что угодно. Пусть была-бы возможность кэширование на чтение отключить.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...