1

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;

タイプ_deviceGadgeteer.StorageDevice. そのクラスのソース コードはどこにありますか?

4

2 に答える 2

1

SDカードモジュール

sdCard使用する前に、まずマウントする必要があります。

sdCard.MountSDCard();

ただし、これを確実に確認するには、事前にマウント済みイベントハンドラーとマウント解除済みイベントハンドラーを「接続」する必要があります。

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カードモジュールチュートリアルのサンプルコードを見たところです。

それが役に立ったら、投票してください。それがあなたの問題を解決するならば、それを答えとしてマークしてください。

于 2013-02-13T14:51:23.817 に答える
1

TINYCLR フォーラムで回答を得ました。現在Main/GadgeteerCore/Gadgeteer42/Utilities.csのバージョン (執筆時点) は次のとおりです。http://gadgeteer.codeplex.com/SourceControl/changeset/view/24955#200043

于 2013-02-14T11:50:12.543 に答える