Где находится исходный код Gadgeteer.StorageDevice?

Я пытаюсь отладить некоторые неожиданные действия с модулем GHI Gadgeteer SDCard, в результате чего сохранение файла на SDCard без вывода сообщений не приводит к появлению файла.

Исходный код для модуля SDCard доступен (из корневого каталога перейдите в раздел Main / Modules / GHIElectronics / SDCard / Software / SDCard / SDCard_42 / SDCard_42.cs). Строка в моем коде, которая не делает то, что я ожидаю,

sdCard.GetStorageDevice().WriteFile("picture.bmp", picture.PictureData);

Глядя на исходный код GHI GetStorageDevice() это просто:

public StorageDevice GetStorageDevice()
{
    return _device;
}

а также _device объявлен как

private StorageDevice _device;

Скачивая код я вижу что _device имеет тип Gadgeteer.StorageDevice, Где я могу найти исходный код для этого класса?

2 ответа

Решение

Я получил ответ на форуме TINYCLR. Он находится в Main/GadgeteerCore/Gadgeteer42/Utilities.cs текущая версия (на момент написания): http://gadgeteer.codeplex.com/SourceControl/changeset/view/24955

Модуль SD-карты

Вы должны сначала смонтировать sdCard прежде чем вы сможете использовать его:

sdCard.MountSDCard();

Чтобы убедиться, что вы видите это, вы должны заранее "подключить" обработчики событий Mounting и Unmounting, хотя:

void ProgramStarted() {
  sdCard.SDCardMounted += new SDCard.SDCardMountedEventHandler(sdCard_SDCardMounted);
  sdCard.SDCardUnmounted += new SDCard.SDCardUnmountedEventHandler(sdCard_SDCardUnmounted);
}

void sdCard_SDCardUnmounted(SDCard sender) {
  Debug.Print("The SD card has been unmounted");
  Debug.Print("DO NOT try to access it without mounting it again first");
}

void sdCard_SDCardMounted(SDCard sender, GT.StorageDevice SDCard) {
  Debug.Print("SD card has been successfully mounted. You can now read/write/create/delete files");
  Debug.Print("Unmount before removing");
}

Если ни одна из этих проблем не является вашей, я бы предложил GetStorageDevice() позвоните следующим образом:

string rootDirectory = sdCard.GetStorageDevice().RootDirectory;
// What format is `picture`?
// I am going to assume System.Drawing.Bitmap for this example.
picture.Save(rootDirectory + "\\picture.bmp", ImageFormat.Bmp;

Если вы не можете использовать метод Bitmap.Save, вы должны использовать другие традиционные методы StreamWriter.

Однако я не могу проверить это, чтобы увидеть, работает ли он, поскольку у меня нет одного из этих модулей SD-карт. Я только что посмотрел пример кода в руководстве по модулю SD-карты.

Если это поможет, проголосуй. Если это решит вашу проблему, отметьте это как ответ.

Другие вопросы по тегам