初心者です。
マイコンへのプログラム書き込み時に、

・HEXファイルの容量(エクスプローラ等で表示されるテキストファイルでの容量)=実際にマイコンのメモリに書き込まれる容量

上記、正しいでしょうか?
よろしくお願い致します。

A 回答 (1件)

違います。



HEXファイルはテキストですので、1バイトの情報を表すのに2文字(=2バイト)使っています。
それ以外にも、アドレスやチェックサム、さらには改行文字などが付加されています。
結果として、実際に書き込まれるサイズよりもずっと大きくなります。
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

Q復元ポイントの作成とイメージファイル等のバックアップとの違いについて

今晩は、宜しくお願いします。

復元ポイントの作成とイメージファイル等のバックアップとの違いについて教えて下さい。

Windowsで復元ポイントからシステムを復元させる方法があり、
また、イメージファイル等にバックアップをとり、復元させる方法もありますが
この両者はどのように違うのでしょうか。

復元ポイントの作成とは、その時点のシステムの設定等だけを保存しているという
ことでしょうか。

また、イメージファイル等のバックアップを作成するということは
システム設定と作成したファイル等もイメージファイルとして一括してバックアップ
されるのでしょうか。

イメージファイルの復元時に、作成したファイル等もイメージファイルから
復元されるのなら、同じ名前のファイルがあった場合には、
イメージファイル作成時の古い情報のファイルになってしまうのでしょうか。

以上、宜しくお願いします。

Aベストアンサー

【システムの復元】
Windowsが使用するシステムファイルのバックアップと復元。
ユーザーファイルには影響しない。
HDDの中に作成されるので、Windowsが起動しない環境では使用出来ない。

【システム修復ディスクの作成】
Windowsの起動時にF8を押下して起動するセーフモードから「コンピューターの修復」「システム回復オプション」を、外部記憶装置(CD、USBメモリなど)から起動出来るようにする。
Windows自体が起動しなくなった場合に、外部記憶装置から「システム回復オプション」が起動出来るようになる。修復されるのは、選択した項目により異なる。
WindowsREを利用。
https://msdn.microsoft.com/ja-jp/library/hh825173.aspx

【バックアップと復元】
システムのバックアップを作成し、ハードディスクなどが壊れた場合に備えパソコン内部のデータを全てバックアップ・復元出来る。
Windowsのインストールディスクや、システム修復ディスクから復元が可能。
システムもユーザーデータもバックアップを取った時点の状態に戻る。

【システムの復元】
Windowsが使用するシステムファイルのバックアップと復元。
ユーザーファイルには影響しない。
HDDの中に作成されるので、Windowsが起動しない環境では使用出来ない。

【システム修復ディスクの作成】
Windowsの起動時にF8を押下して起動するセーフモードから「コンピューターの修復」「システム回復オプション」を、外部記憶装置(CD、USBメモリなど)から起動出来るようにする。
Windows自体が起動しなくなった場合に、外部記憶装置から「システム回復オプション」が起動出来るようになる。...続きを読む

QPING JPEGファイルのExif規格のコメント部を読み込み・書き込みするプログラムソース

以前、表記処理のできるフリーソフトをフリーソフトを教えていただいた者です。
http://oshiete1.goo.ne.jp/qa3911520.html
プログラムの中で計算した結果を、画像ファイルのコメント部に書き込むプログラムをC言語で作成しようと思っています。そこで、
int WriteComment(FILE *fd、char *コメント文字列)
int ReadComment(FILE *fd、char *コメント文字列)
のような関数を内部で使いたいのですが、このような関数ありませんか?あるいは、自作するための参考になるようなお手本となるソースリストありませんか?

Aベストアンサー

 こんにちは。

 「libpng」
 http://www.libpng.org/

 「libexif」
 http://libexif.sourceforge.net/

 一応参考程度に。

 以下PNGからコメントを表示する
static void dump(png_textp p)
{
const char* pszCompress = p->compression == PNG_TEXT_COMPRESSION_zTXt ? "あり" : "なし";
::printf("[キーワード: %s][コメント: %s][圧縮: %s]\n", p->key, p->text, pszCompress);
}

int ReadPNG(FILE* pf)
{
png_structp png_ptr = png_create_read_struct(PNG_LIBPNG_VER_STRING, NULL, NULL, NULL);
if(png_ptr == NULL)
{
return 0;
}

png_infop info_ptr = png_create_info_struct(png_ptr);
if(info_ptr == NULL)
{
png_destroy_read_struct(&png_ptr, NULL, NULL);
return 0;
}

if(setjmp(png_jmpbuf(png_ptr)))
{
png_destroy_read_struct(&png_ptr, &info_ptr, NULL);
return 0;
}

png_init_io(png_ptr, pf);
png_set_sig_bytes(png_ptr, 0);
png_read_png(png_ptr, info_ptr, 0, NULL);

//ココでテキスト部を参照する
for(int i = 0; i < info_ptr->num_text; ++i)
dump(&info_ptr->text[i]);

png_read_end(png_ptr, info_ptr);
png_destroy_read_struct(&png_ptr, &info_ptr, NULL);

return 1;
}

int main()
{
FILE* pf = fopen("PNGファイル名", "rb");
ReadPNG(pf);
fclose(pf);
return 0;
}

 以下JPEGからEXIFを表示する
int main()
{
    ExifData* p = exif_data_new_from_file("JPEGファイル名");
    exif_data_dump(p);
    exif_data_free(p);
    return 0;
}

 こんにちは。

 「libpng」
 http://www.libpng.org/

 「libexif」
 http://libexif.sourceforge.net/

 一応参考程度に。

 以下PNGからコメントを表示する
static void dump(png_textp p)
{
const char* pszCompress = p->compression == PNG_TEXT_COMPRESSION_zTXt ? "あり" : "なし";
::printf("[キーワード: %s][コメント: %s][圧縮: %s]\n", p->key, p->text, pszCompress);
}

int ReadPNG(FILE* pf)
{
png_structp png_ptr = png_create_read_struct(PNG_LIBPNG_VER_STRING, ...続きを読む

Q救出ファイル復元 2の機能について

「救出ファイル復元 2」で画像ファイルJPEGの他にRAWファイル、拡張子(CR2)を復元出来るでしょうか。

キャノンの一眼デジカメを使っているのですが、他の復元ソフトでは、復元出来ませんでした。

Aベストアンサー

Vectorあたりで『ディスク・ファイル復旧』の項目で探せばみつかりそうですが。
要は,"復元ソフトで復元できるファイルがソフトに登録されている拡張子だけしかできない"ことですので,拡張子を選択できる復元ソフトを捜せばいいと思われます。

参考URL:http://www.vector.co.jp/vpack/filearea/win/util/disk/care/

QマイコンのCプログラミングで未使用のプログラム領域のアドレスを指定して読み込みできる?

いまPICマイコンのプログラミングをしています。コンパイラはCSSというものを使っています。

設定した値を読み込んでその値でタイマーを動かそうと思っているのですが、12F509というマイコンはEEPROM領域がないので、なんとかしてこれを実現するにはと思い2kワードのプログラミング領域を半分くらいしか使っていないことに気づいたので、その領域の一番後ろの0x07FF番地に何かしらデータを書いてその番地にアクセスしてそこからタイマーの時間を呼び出そうと思ったのですが、このようなことはできるのでしょうか?

C言語だとポインターを使えばよかったと思うのですが、その場合どのように書いたら良いのでしょうか?

ご教授よろしくお願い致します。

たぶん、
unsinged char *timer_add;

timer_add = (unsigned char *)0x07FF;


get_value = timer_add;

これでよかったでしょうか?

Aベストアンサー

アドレスを直接書いて、アクセスする方法も上記回答のとおり
直せばいけますが、もともと const でデータ定義すれば
済むように思います。
以下 CCSコンパイラの仕様です。

ノート:CCSのconst(定数)修飾子は常にデータがプログラム・メモリーに置かれることを意味し、そのデータは `読取専用`です。これはconst(定数)修飾子が単純に `読取専用`としているANSI定義には従っていません。

Q削除した画像ファイルの取り出しまたは復元方法

ごみ箱に入れてから削除したファイルの復元方法を教えてください。

以前にも同様の質問をしたのですが、その際に教えていただいた方法で確かにいくつかのファイルは復元することができました。

しかし、一番復元したい画像ファイル(jpeg形式)が復元できません、同時期に同じく削除したファイルは無事に取り出せたのですが肝心のファイルは取り出せません。指定するファイル名、フォルダ名などの間違いはないのですが何が原因で復元できないのか理解できません。

良きアドバイスをいただければ助かります。
宜しくお願いいたします。

Aベストアンサー

こういったファイル復元ソフトを利用してファイルを復活させます。

●FileRecovery(フリーウェア)

消去・欠損したファイルを復元するソフト。
http://www.pcinspector.de/download.htm

●復元(フリーウェア)
http://www.vector.co.jp/soft/win95/util/se192983.html

■FINALDATA(ファイナルデータ)フォトリカバリー3.0(有料)
http://www.finaldata.ne.jp/f_8_3.html

当然ながら復元できる確立は有料ソフトのほうが高いです。

これらを使っても復元できない場合はファイルが上書きされて完全に消えている可能性が高いです。

Qエディットボックスの内容をテキストファイルに書き込み・読み込みしたい

プログラム初心者です。

VS2005を使用してWindowsアプリケーションの実装を行っているのですが、数個あるエディットボックスの内容を1つのテキストファイルに書き込み、そして後々に読み込みを行いたいと考えています。私の場合、エディットボックスに入力するのは数値のみなので、数値の書き込み・読み込みを行いたいのですがうまくいきません。

そこで質問なんですが、数個のエディットボックスのデータを格納する方法として、それぞれに変数を用いていいのでしょうか。
ex) edit0 = GetDlgItemInt(hDlg, IDC_EDIT1, NULL, TRUE);
edit1 = GetDlgItemInt(hDlg, IDC_EDIT2, NULL, TRUE);

それとも、1つの変数を配列として用いたほうがいいのでしょうか。
ex) edit[0] = GetDlgItemInt(hDlg, IDC_EDIT1, NULL, TRUE);
edit[1] = GetDlgItemInt(hDlg, IDC_EDIT2, NULL, TRUE);

もし前者として、その場合はWriteFileで書き込む(読み込む)場合どのようにしたら良いのでしょう。WriteFileを連続で書くとなると、上書きになるのか後ろから追加されるのかイメージがついていない状態です。

わかりずらい説明で申し訳ありません。
ご教授お願いいたします。

プログラム初心者です。

VS2005を使用してWindowsアプリケーションの実装を行っているのですが、数個あるエディットボックスの内容を1つのテキストファイルに書き込み、そして後々に読み込みを行いたいと考えています。私の場合、エディットボックスに入力するのは数値のみなので、数値の書き込み・読み込みを行いたいのですがうまくいきません。

そこで質問なんですが、数個のエディットボックスのデータを格納する方法として、それぞれに変数を用いていいのでしょうか。
ex) edit0 = GetDlgItemInt(hDlg...続きを読む

Aベストアンサー

 こんばんは。
 WriteFile()/ReadFile()を連続で呼ぶと、ファイルポインタが後方へ移動します。
 ファイルポインタを任意の場所に移動する場合はSetFilePointer()を使用します(先頭に戻したい場合など)。
 参考程度に。

 以下は「書き込み後・読み取り後」にファイルハンドルを閉じる場合。

#include<windows.h>

void wfile(LPCTSTR file)
{
//本当はGetDlgItemInt()を使用してエディットボックスから数値を持ってくる
INT edit0 = 123;
INT edit1 = 456;
DWORD dwComplete = 0;

HANDLE hFile = ::CreateFile(file, GENERIC_WRITE, 0, NULL, CREATE_ALWAYS, NULL, NULL);

::WriteFile(hFile, &edit0, sizeof(edit0), &dwComplete, NULL);
::WriteFile(hFile, &edit1, sizeof(edit1), &dwComplete, NULL);

::CloseHandle(hFile);
}

void rfile(LPCTSTR file)
{
INT edit0 = 0;//123が入る筈
INT edit1 = 0;//456が入る筈
DWORD dwComplete = 0;

HANDLE hFile = ::CreateFile(file, GENERIC_READ, 0, NULL, OPEN_EXISTING, NULL, NULL);

::ReadFile(hFile, &edit0, sizeof(edit0), &dwComplete, NULL);
::ReadFile(hFile, &edit1, sizeof(edit1), &dwComplete, NULL);

//此処でSetDlgItemInt()を使用してエディットボックスに数値を送る

::CloseHandle(hFile);
}

int main()
{
LPCTSTR file = TEXT("edit.txt");
::wfile(file);
::rfile(file);
return 0;
}

 以下はファイルを閉じずに先頭へ戻す場合。

void wfile(HANDLE hFile)
{
INT edit0 = 123;
INT edit1 = 456;
DWORD dwComplete = 0;

::WriteFile(hFile, &edit0, sizeof(edit0), &dwComplete, NULL);
::WriteFile(hFile, &edit1, sizeof(edit1), &dwComplete, NULL);
}

void rfile(HANDLE hFile)
{
INT edit0 = 0;
INT edit1 = 0;
DWORD dwComplete = 0;

::ReadFile(hFile, &edit0, sizeof(edit0), &dwComplete, NULL);
::ReadFile(hFile, &edit1, sizeof(edit1), &dwComplete, NULL);
}

int main()
{
HANDLE hFile = ::CreateFile(TEXT("edit.txt"), GENERIC_READ | GENERIC_WRITE, 0, NULL, CREATE_ALWAYS, NULL, NULL);
::wfile(hFile);
//此処でファイルポインタを先頭に戻す
::SetFilePointer(hFile, 0, NULL, FILE_BEGIN);
::rfile(hFile);
::CloseHandle(hFile);
return 0;
}

 こんばんは。
 WriteFile()/ReadFile()を連続で呼ぶと、ファイルポインタが後方へ移動します。
 ファイルポインタを任意の場所に移動する場合はSetFilePointer()を使用します(先頭に戻したい場合など)。
 参考程度に。

 以下は「書き込み後・読み取り後」にファイルハンドルを閉じる場合。

#include<windows.h>

void wfile(LPCTSTR file)
{
//本当はGetDlgItemInt()を使用してエディットボックスから数値を持ってくる
INT edit0 = 123;
INT edit1 = 456;
DWORD dwComplete = 0;

HANDL...続きを読む

Q「ウイルス感染ファイル」削除後のシステム復元でどうなる?

ウイルスバスターで幾つかのウイルス感染ファイル発見し全て削除しましたが、感染したファイルはシステムファイルでしたので少し心配でしたが削除しました。
そこで教えて頂きたいのですが、感染した日付以前でシステムの復元をする事によって削除されたシステムファイルは復元できるのでしょうか?一度削除されたシステムファイルはシステムの復元をしても二度と復元しないのでしょうか?

Aベストアンサー

以下WindowsXPという前提で・・・

>システムファイルでしたので少し心配でしたが削除しました。
通常、このままではシステムエラーが発生します。
しかし、Windowsには自動復旧機能があり、削除されたファイルをハードディスク上にあるCabファイルから呼び出して復旧させるようになっています。
従って、殆どの場合、削除されたシステムファイルを手動でインストールする必要はありません。

☆SFCの実行
もしシステムエラーが出る場合SFC(System File Checker)の実行をお勧めします。

1.CDドライブにOSのインストールディスクを入れておく。
2.「スタート」「コマンドプロンプト」または「ファイル名を指定して実行」で
「sfc /scannow」と入力して「OK」

「Windows XP professional のディスクを入れてください」という表示が出ることがありますがHome Editionであれば「無視」を選んでスキップしてください

>感染した日付以前でシステムの復元をする事によって削除されたシステムファイルは復元できるのでしょうか?
出来ないことはないでしょうが、あまりお勧めできません。
現在の状態が正常でない。
過去の状態の方が快適に操作できる。
という場合、それがいいかもしれません。
しかし、Windowsの設定というのは非常に広範囲にわたっており、現在と過去を比較して、どちらが適正かを判断するのは容易ではありません。
また、過去の復元ポイントの中には不正な設定が含まれている場合があり、間違って、そのポイントを選択することもあります。
ウィルス対策ソフトのサイトでは一旦復元設定を無効にして、過去の復元ポイントを全て消去することを推奨しています。

>一度削除されたシステムファイルはシステムの復元をしても二度と復元しないのでしょうか?
間違った操作をすると汚染されたファイルが復元されてしまいます。
一旦復元設定を無効にして、過去の復元ポイントを全て消去することで汚染されたファイルは二度と復元しません。

以下WindowsXPという前提で・・・

>システムファイルでしたので少し心配でしたが削除しました。
通常、このままではシステムエラーが発生します。
しかし、Windowsには自動復旧機能があり、削除されたファイルをハードディスク上にあるCabファイルから呼び出して復旧させるようになっています。
従って、殆どの場合、削除されたシステムファイルを手動でインストールする必要はありません。

☆SFCの実行
もしシステムエラーが出る場合SFC(System File Checker)の実行をお勧めします。

1.CDドライ...続きを読む

QFlashROMにデータを書き込むには?(組み込み開発初心者)

組み込み開発に携わってまだ日の浅い者ですので
質問の内容もわかりにくいかと思いますがよろしくお願いいたします。

ルネサスMPU(sh)でFlashROM(S29JL064H)
http://www.spansion.com/jp/products/S29JL064H.html
にデータを書き込むための以下の関数を作成したのですが
うまく書き込むことができず困っています。
FlashROMのデータシートでは0xAA、0x55、0xA0のWriteコマンドを
送ってからデータを2バイト書き込むことができるとあったので
そのようにしたつもりなのですが、書き込むことができません。

この場合、どのような対処をするものなのでしょうか?
また、サンプルや参考になるHPがあれば教えてください。


#define FRM_START_ADDRS(0x02000000)
#define FRM_WRITE_CMD(address,data)*((WORD16*)(address)) = (data)

INT hFRM_Write(
WORD16*srcAddr,
WORD16*dstAddr,
UINTnumWords
)
{
UINT count;

for(count=0; count < numWords; count++)
{

if( *dstAddr != 0xFFFF)// 領域がクリアされていることを確認する
return FRM_NOT_ERASED;

FRM_WRITE_CMD(FRM_START_ADDRS + 0x555,0xAA);
FRM_WRITE_CMD(FRM_START_ADDRS + 0x2AA,0x55);
FRM_WRITE_CMD(FRM_START_ADDRS + 0x555,0xA0);

*dstAddr = *srcAddr;
dstAddr++;
srcAddr++;
}

return FRM_OK;
}

組み込み開発に携わってまだ日の浅い者ですので
質問の内容もわかりにくいかと思いますがよろしくお願いいたします。

ルネサスMPU(sh)でFlashROM(S29JL064H)
http://www.spansion.com/jp/products/S29JL064H.html
にデータを書き込むための以下の関数を作成したのですが
うまく書き込むことができず困っています。
FlashROMのデータシートでは0xAA、0x55、0xA0のWriteコマンドを
送ってからデータを2バイト書き込むことができるとあったので
そのようにしたつもりなのですが、書き込むことができません...続きを読む

Aベストアンサー

お手持ちの基板の回路図を確認してみて下さい。
FlashのA0がSHのA1に接続されていませんか?

この場合、最初のコマンド発行を例に挙げますと、
リニアアドレス0x555へ書き込んだつもりでも
デバイスにとっては0x2AAにライトアクセスが
発生したとしか受け取ってもらえません。

0xAAAへ書き込むことでデバイスに
対して0x555へのライトアクセスを発行することができます。

データシートにバイトアクセス用のプログラムコマンドが
記述してありますので、そちらのご利用を。

また、連続書き込みの為には、書き込みの完了を待たねばなりません。
デバイスが書き込み中の場合、リードアクセスの度に
トグルするビットがありますので、2度読みして同一の値が取得できたら完了と判断するのが実装が簡単です。
(少々手抜きですが、テストには十分)

とりあえず、最低限直さねばならないトコだけ。
引っかかり易いところなので、確認してみて下さい。

Q復元ソフトのふと感じた疑問 -ファイル名を削除したい-

先日、復元ソフトを使用していたときに感じたことなのですが
(使用ソフトは「復元」です。)
ファイルを復元する際の手順で削除したファイルが検索できますよね。
このファイル検索の時に、HITしないようにファイル名を完全に削除したい場合はどのようにすればいいのでしょうか??

例えば、「●●との秘密旅行001.jpg」のファイルを削除したとします。
その後、復元ソフトで検索をかけるとファイルを復元しなくてもファイル名を見ただけで怪しいファイルとわかってしまいますよね。
復元ソフトの検索で、表示されなくする方法か、別名に変える方法があるのなら教えてください。

Aベストアンサー

95159さんが求めていらっしゃるのは以下の方法ではないでしょうか。

フリーの復元ソフトに「DataRecovery」というものがあります。このフリーソフトには「削除したファイル」の名前を時間をかけず簡単に消去できる機能が付いています。

『DataRecovery』
http://www.vector.co.jp/soft/win95/util/se382922.html

■使い方
起動させる→該当ドライブをクリック→[スキャン]ボタンをクリック→削除したファイルの表示完了→「目的のファイルが見つかりましたか?」と出てきたら[キャンセル]をクリック→名前を消去したいファイルをクリックするか、名前を消去したい複数ファイルを左クリックしながら選択する→[消去]ボタンをクリック→[OK]をクリック

これで、名前を消せます。しかしながら完璧ではなくて、一部消せないこともあります。
(「DataRecovery」を再起動してもう一度ドライブをスキャンすると消せなかったファイルが表示されます)

参考URL:http://www.vector.co.jp/soft/win95/util/se382922.html

95159さんが求めていらっしゃるのは以下の方法ではないでしょうか。

フリーの復元ソフトに「DataRecovery」というものがあります。このフリーソフトには「削除したファイル」の名前を時間をかけず簡単に消去できる機能が付いています。

『DataRecovery』
http://www.vector.co.jp/soft/win95/util/se382922.html

■使い方
起動させる→該当ドライブをクリック→[スキャン]ボタンをクリック→削除したファイルの表示完了→「目的のファイルが見つかりましたか?」と出てきたら[キャンセル]をクリック→名...続きを読む

QC言語の初心者の中の初心者です

フリーのコンパイラをとったのですが、バッチ、ファイルとして認識されまえせんとか指定されたファイルが見つかりませんと表示されます。どこからダウンロードしたのか忘れてしまいましたが、インターネットソース名はcmdとなってます。
Microsoft windows XP[Version5.1.2600]
(C)Copyright 1985-2001 Microsoft corp.
C:\Documents and settings\yuki>
上のプログラムが表示されてるのですが >のあとに何と打ち込めばいいのでしょう?yukiはこのパソコンに入れた名前です。#include <stdio.h>
        main()
{
printf("abcde\n");
}
などと入力してみましたがファイルが見つからないとか出てしまいました。何か必要なプログラムがあるのでしょうか?

Aベストアンサー

C言語の前に先ずはコンパイラって何、という知識はあった方が良いですね。
とりあえずGNUプロジェクトのCygwinを入れてみてはどうでしょうか?
CygwinとはWindows上でUNIXコマンドが利用できるソフトで、
gccというコンパイラもインストールオプションで入れる事が出来ます。
インストール後は、Cygwinコンソール上から、
$ gcc hogehoge.c
でコンパイルが出来ますよ。
またわからない事がありましたら、補足で質問してください。

参考URL:http://cygwin.com/


人気Q&Aランキング

おすすめ情報