hidebun の回答履歴

全363件中341~360件表示
  • (C#)ファイルに書き込みできるかの判定

    C#2.0を使って書き込みができるファイルかどうかを判定する方法を探しております。書き込み可能ファイルであっても、以下のパターン2のような場合には書き込みができないわけですが、パターン1なのかパターン2なのかをC#のコードにより判別したいと考えています。 (パターン1) テキストエディタ1でファイル1を開き、その状態でテキストエディタ2で同じファイル1を開く。エディタ2でファイルを変更・保存してエディタ1をアクティブにすると、他のソフトで変更された旨の表示が出て、変更を反映することができる。 (パターン2) 例えばexcelでCSVファイルを開き、同じCSVファイルをテキストエディタで開く。その状態ではエディタによりファイルを変更・保存することができない。 ご存じの方がいらっしゃいましたらご教授お願いします。

    • kary
    • 回答数1
  • 継承元の関数はオーバーロードできないのですか?

    #include <stdlib.h> /* 動物クラス */ class CAnimal{ public: int type; void init(int); void prt(void); }; /* 犬クラス */ class CDog : public CAnimal{ public: void init(void); }; /*------------ 動物クラス ------------*/ void CAnimal::init(int t){ type = t; } void CAnimal::prt(void){ printf("%d\n", type); } /*------------ 犬クラス ------------*/ void CDog::init(void){ type = 10; } /*------------ メイン関数 ------------*/ void main(void) { CDog dog; dog.init(1); dog.prt(); } メイン関数の「dog.init(1)」(下から3行目)でコンパイルエラーが出ます。継承元の関数はオーバーロードできないのでしょうか? 参考書にはそんなこと書いてありませんし、検索しても似たような事例が見つかりません。 初歩的なことですみませんが、どなたか教えていただけないでしょうか。

    • jeddom
    • 回答数3
  • 継承元の関数はオーバーロードできないのですか?

    #include <stdlib.h> /* 動物クラス */ class CAnimal{ public: int type; void init(int); void prt(void); }; /* 犬クラス */ class CDog : public CAnimal{ public: void init(void); }; /*------------ 動物クラス ------------*/ void CAnimal::init(int t){ type = t; } void CAnimal::prt(void){ printf("%d\n", type); } /*------------ 犬クラス ------------*/ void CDog::init(void){ type = 10; } /*------------ メイン関数 ------------*/ void main(void) { CDog dog; dog.init(1); dog.prt(); } メイン関数の「dog.init(1)」(下から3行目)でコンパイルエラーが出ます。継承元の関数はオーバーロードできないのでしょうか? 参考書にはそんなこと書いてありませんし、検索しても似たような事例が見つかりません。 初歩的なことですみませんが、どなたか教えていただけないでしょうか。

    • jeddom
    • 回答数3
  • 構造体の中の構造体

    typedef struct number{ int x; struct number *next; }Num; 初心者な質問で申し訳ないんですが、構造体の中に構造体があるのはどう解釈していいんでしょうか? typedef struct number{ int x; int y; }Num; の場合はNum a,b;がint a.x,a.y,b.x,b.yとなるのは分かるんですが・・・

  • 【gcc・cygwin】multiple definitionエラーの解決法

    こんにちは。 C言語のプログラミングをしているのですが、 multiple definition of '関数名'と出てしまいます。 ・コンパイルするファイル program1.c(main文) program2.c(関数) program3.c(関数) すべてのソースファイルが、 header.hをincludeしています。 header.hではすべての関数のプロトタイプ宣言がされています。 program2.cに書いてある関数、test()はすべてのソースファイルで使用しています。 ・cygwin上で実行したコマンド gcc -Wall program1.c program2.c program3.c -o test ・エラーの文章 (パス省略)/ccst1v2u.o:program2.c:(.text+0x0): mult iple definition of `_test' (パス省略)/ccyUr2Ku.o:program1.c:(.text+0x0): first defi ned here このような事態に陥った場合の解決方法はどのようにすればよいでしょうか? 先輩から引き継いだ、もともと一つのソースファイルに書かれていた多数の関数を、利便性のために分割したところこのようなエラーが発生しました。 先輩から引き継いだもののため、本当の関数名など細かいことをこちらに書き込めないのですが、 出来る範囲で補足いたします。 どうかよろしくお願いいたします。

  • 【gcc・cygwin】multiple definitionエラーの解決法

    こんにちは。 C言語のプログラミングをしているのですが、 multiple definition of '関数名'と出てしまいます。 ・コンパイルするファイル program1.c(main文) program2.c(関数) program3.c(関数) すべてのソースファイルが、 header.hをincludeしています。 header.hではすべての関数のプロトタイプ宣言がされています。 program2.cに書いてある関数、test()はすべてのソースファイルで使用しています。 ・cygwin上で実行したコマンド gcc -Wall program1.c program2.c program3.c -o test ・エラーの文章 (パス省略)/ccst1v2u.o:program2.c:(.text+0x0): mult iple definition of `_test' (パス省略)/ccyUr2Ku.o:program1.c:(.text+0x0): first defi ned here このような事態に陥った場合の解決方法はどのようにすればよいでしょうか? 先輩から引き継いだ、もともと一つのソースファイルに書かれていた多数の関数を、利便性のために分割したところこのようなエラーが発生しました。 先輩から引き継いだもののため、本当の関数名など細かいことをこちらに書き込めないのですが、 出来る範囲で補足いたします。 どうかよろしくお願いいたします。

  • 【gcc・cygwin】multiple definitionエラーの解決法

    こんにちは。 C言語のプログラミングをしているのですが、 multiple definition of '関数名'と出てしまいます。 ・コンパイルするファイル program1.c(main文) program2.c(関数) program3.c(関数) すべてのソースファイルが、 header.hをincludeしています。 header.hではすべての関数のプロトタイプ宣言がされています。 program2.cに書いてある関数、test()はすべてのソースファイルで使用しています。 ・cygwin上で実行したコマンド gcc -Wall program1.c program2.c program3.c -o test ・エラーの文章 (パス省略)/ccst1v2u.o:program2.c:(.text+0x0): mult iple definition of `_test' (パス省略)/ccyUr2Ku.o:program1.c:(.text+0x0): first defi ned here このような事態に陥った場合の解決方法はどのようにすればよいでしょうか? 先輩から引き継いだ、もともと一つのソースファイルに書かれていた多数の関数を、利便性のために分割したところこのようなエラーが発生しました。 先輩から引き継いだもののため、本当の関数名など細かいことをこちらに書き込めないのですが、 出来る範囲で補足いたします。 どうかよろしくお願いいたします。

  • Hintの表示が直ぐに消えてしまう!

    TFormにTimageがあり、マウスがTImageの上を通過するとヒントが表示されるようにしております。 ヒントは通常、マウスカーソルの直下に表示されますが、ヒントの文面が長い→ヒントの表示される領域が大きく、画面の下側にはみ出そうになると通常、表示位置を補正します。ところが、一瞬表示された後、消えてしまいます。 ヒントの文面が短い場合、問題なく表示されるのですが、文章が大きい場合、上記のように一瞬表示の後、消えてしまいます。 ヒントの文面が長いのも問題とは思いますが、何か設定が必要でしょうか。 どなたが対策方法を教えて頂けないでしょうか。 PC環境はWindowsXp Home edition, Borland C++Builder6 Proです。 宜しくお願いいたします。

  • Hintの表示が直ぐに消えてしまう!

    TFormにTimageがあり、マウスがTImageの上を通過するとヒントが表示されるようにしております。 ヒントは通常、マウスカーソルの直下に表示されますが、ヒントの文面が長い→ヒントの表示される領域が大きく、画面の下側にはみ出そうになると通常、表示位置を補正します。ところが、一瞬表示された後、消えてしまいます。 ヒントの文面が短い場合、問題なく表示されるのですが、文章が大きい場合、上記のように一瞬表示の後、消えてしまいます。 ヒントの文面が長いのも問題とは思いますが、何か設定が必要でしょうか。 どなたが対策方法を教えて頂けないでしょうか。 PC環境はWindowsXp Home edition, Borland C++Builder6 Proです。 宜しくお願いいたします。

  • __threadを使うコードで、分割コンパイル→リンクを行うには?

    下記コードをビルド中、下記リンカエラーが出てしまい その解決方法を伺いたく質問させて頂きました。 ■コード [ t.hpp ] struct C { static int m; static void f(); }; [ a.cpp ] #include "t.hpp" __thread int C::m; [ b.cpp ] #include "t.hpp" void C::f(){ m = 0; } void main(){} ■リンカエラー C::m: TLS definition in a.obj section .tbss mismatches non-TLS reference in Debug/b.obj (静的メンバ変数C::mは a.cppでTLSとして定義されたけど、C::mを参照しているb.cppでは、非TLS扱いだから合わないよ!) ■試した事 ・t.hppのstatic int m; に、__threadを付加 → 付けないのと同じ扱いだった ・a.cppのコードをb.cppに統合したらOK → __thread変数の定義部と参照部を同じファイルにすると良さそう。が、会社の政治的な理由で不可... ■環境 ある組み込み環境でのGCC4.0.2 一日中試しましたが惨敗でした。ファイル構成を変えずにTLSの静的メンバ変数が使える方法をお教え頂けないでしょうか。どうか宜しくお願い致します。

    • noname#32535
    • 回答数2
  • Platform SDK

    Visual Studio 2005で開発を行っているのですが、コンパイラでPlatform SDKを使いたいのですが、どのように設定を行えばよいのでしょうか?

  • 突然ネットに繋がらなくなります どうして?

    コレガ製の「BAR WL」というルーターを使って複数のPCでインターネット接続が出来る環境にあります。  使用しているとルーターの調子が悪いのでしょうか?すべてのPCが突然ネットに繋がらなくなります。(フォルダー共有は出来ています)  セキュリティーソフトは各機まちまちですが、問題発生時は一斉に繋がらなくなります。  現在の対応策は、アダプターを引っこ抜いて電源を切り、数十秒おいてから挿しなおす方法で騙し騙し使っています。  これはもうルーターの寿命なのでしょうか?   よろしくお願いいたします。

  • シリアル通信でのデータ受信

    シリアル通信にてデータを連続的に受信するプログラムを つくりたいと思っています. 以下のプログラムを作成して, main関数のcountを増やして,繰り返しreadを行おうとすると, 出力結果として, 時,分,秒,ID,値B,値C,値Dというフォーマットで 0, 9,30, 1,514,708,542,290 0, 9,30, 2,515,707,542,288 0, 9,30, 3,514,709,542,287 0, 9,30, 4,514,707,543,289 0, 9,30, 5,514,708,542,289 0, 9,30, 6,514,708,542,292 0, 9,30, 7,514,708,542,291 0, 9,30, 8,514,708,542,289 0, 9,30, 9,514,708,543, 0, 9,39,35,514,708,542,289 (この後フが連続) フフフフフフフフフフフフフフフ ク 0, 9,39,36,514,708,542,290 0, 9,39,37,515,709,541,291 0, 9,39,38,514,707,542,286 0, 9,39,39,514,708,542,281 0, 9,39,40,514,708,542,284 0, 9,39,41,514,707,542,286 0, 9,39,42,514,707,542,290 0, 9,39,43,514,709,542,290 0, 9,30, 9,514,708,543, 0, 9,39,35,514,708,542,289 フフフフフフフフフ・・・再びフ となってしまいます. 問題としては ・フがたくさんでてきてしまう. ・1サイクルの最後で改行ができていない ・1サイクルが終わって次のサイクルに入る時までの 間にデータが失われている. ・2サイクル目になぜか1サイクル目の値が残っている? などがあります. どなたか解決方法を教えていただけると大変助かります. よろしくお願いします. ------------------------------- #include "stdafx.h" #include <stdlib.h> #include <windows.h> #include <string.h> #include <stdio.h> #define COM_PORT_NAME "COM2" #define BAUD_RATE 57600 #define BYTE_SIZE 5000 //250 #define PARITY NOPARITY //EVENPARITY #define STOP_BIT TRUE #define F_PARITY ONESTOPBIT HANDLE hComm; // シリアルポートとの通信ハンドル bool ComInit() { // シリアルポートを開ける hComm = CreateFile( COM_PORT_NAME, /* シリアルポートの文字列 */ GENERIC_READ | GENERIC_WRITE, /* アクセスモード:読み書き */ 0, /* 共有モード:他からはアクセス不可 */ NULL, /* セキュリティ属性:ハンドル継承せず */ OPEN_EXISTING, /* 作成フラグ: */ FILE_ATTRIBUTE_NORMAL, /* 属性: */ NULL /* テンプレートのハンドル: */ ); if (hComm == INVALID_HANDLE_VALUE) { printf("シリアルポートを開くことが出来ませんでした。\n"); return false; } // 通信属性を設定する DCB dcb; GetCommState(hComm, &dcb); /* DCB を取得 */ dcb.BaudRate = BAUD_RATE; dcb.ByteSize = BYTE_SIZE; dcb.Parity = PARITY; dcb.fParity = STOP_BIT; dcb.StopBits = F_PARITY; SetCommState(hComm, &dcb); /* DCB を設定 */ return true; } void ComEnd() { // ハンドルを閉じる CloseHandle(hComm); } bool ReadData(char *buff, unsigned int max_size) { DWORD dwErrors; /* エラー情報 */ COMSTAT ComStat; /* デバイスの状態 */ DWORD dwCount; /* 受信データのバイト数 */ DWORD dwRead; /* ポートから読み出したバイト数 */ ClearCommError(hComm, &dwErrors, &ComStat); dwCount = ComStat.cbInQue; FILE *fid; fid=fopen("test.txt", "w"); printf("%d %d\n", dwCount, max_size); fprintf(fid,"%d %d\n", dwCount, max_size); fclose(fid); if (dwCount > max_size) { printf("バッファサイズが足りません。\n"); return false; } if(hComm != NULL){ ReadFile(hComm, buff, dwCount, &dwRead, NULL); if (dwCount != dwRead) { printf("データの受け取りに失敗しました。\n"); return false; } } return dwRead; } int main(int argc, char* argv[]) { char buff[BYTE_SIZE]; int count = 0; int data_length; FILE *fid2; fid2=fopen("test2.txt","w"); ComInit(); while(1){ if(count == 2) break; count++; data_length=ReadData(buff, strlen(buff)); printf("%s ",buff); fprintf(fid2, "%s ",buff); } fclose(fid2); ComEnd(); return 0; }

    • HIIYO
    • 回答数4
  • シリアル通信でのデータ受信

    シリアル通信にてデータを連続的に受信するプログラムを つくりたいと思っています. 以下のプログラムを作成して, main関数のcountを増やして,繰り返しreadを行おうとすると, 出力結果として, 時,分,秒,ID,値B,値C,値Dというフォーマットで 0, 9,30, 1,514,708,542,290 0, 9,30, 2,515,707,542,288 0, 9,30, 3,514,709,542,287 0, 9,30, 4,514,707,543,289 0, 9,30, 5,514,708,542,289 0, 9,30, 6,514,708,542,292 0, 9,30, 7,514,708,542,291 0, 9,30, 8,514,708,542,289 0, 9,30, 9,514,708,543, 0, 9,39,35,514,708,542,289 (この後フが連続) フフフフフフフフフフフフフフフ ク 0, 9,39,36,514,708,542,290 0, 9,39,37,515,709,541,291 0, 9,39,38,514,707,542,286 0, 9,39,39,514,708,542,281 0, 9,39,40,514,708,542,284 0, 9,39,41,514,707,542,286 0, 9,39,42,514,707,542,290 0, 9,39,43,514,709,542,290 0, 9,30, 9,514,708,543, 0, 9,39,35,514,708,542,289 フフフフフフフフフ・・・再びフ となってしまいます. 問題としては ・フがたくさんでてきてしまう. ・1サイクルの最後で改行ができていない ・1サイクルが終わって次のサイクルに入る時までの 間にデータが失われている. ・2サイクル目になぜか1サイクル目の値が残っている? などがあります. どなたか解決方法を教えていただけると大変助かります. よろしくお願いします. ------------------------------- #include "stdafx.h" #include <stdlib.h> #include <windows.h> #include <string.h> #include <stdio.h> #define COM_PORT_NAME "COM2" #define BAUD_RATE 57600 #define BYTE_SIZE 5000 //250 #define PARITY NOPARITY //EVENPARITY #define STOP_BIT TRUE #define F_PARITY ONESTOPBIT HANDLE hComm; // シリアルポートとの通信ハンドル bool ComInit() { // シリアルポートを開ける hComm = CreateFile( COM_PORT_NAME, /* シリアルポートの文字列 */ GENERIC_READ | GENERIC_WRITE, /* アクセスモード:読み書き */ 0, /* 共有モード:他からはアクセス不可 */ NULL, /* セキュリティ属性:ハンドル継承せず */ OPEN_EXISTING, /* 作成フラグ: */ FILE_ATTRIBUTE_NORMAL, /* 属性: */ NULL /* テンプレートのハンドル: */ ); if (hComm == INVALID_HANDLE_VALUE) { printf("シリアルポートを開くことが出来ませんでした。\n"); return false; } // 通信属性を設定する DCB dcb; GetCommState(hComm, &dcb); /* DCB を取得 */ dcb.BaudRate = BAUD_RATE; dcb.ByteSize = BYTE_SIZE; dcb.Parity = PARITY; dcb.fParity = STOP_BIT; dcb.StopBits = F_PARITY; SetCommState(hComm, &dcb); /* DCB を設定 */ return true; } void ComEnd() { // ハンドルを閉じる CloseHandle(hComm); } bool ReadData(char *buff, unsigned int max_size) { DWORD dwErrors; /* エラー情報 */ COMSTAT ComStat; /* デバイスの状態 */ DWORD dwCount; /* 受信データのバイト数 */ DWORD dwRead; /* ポートから読み出したバイト数 */ ClearCommError(hComm, &dwErrors, &ComStat); dwCount = ComStat.cbInQue; FILE *fid; fid=fopen("test.txt", "w"); printf("%d %d\n", dwCount, max_size); fprintf(fid,"%d %d\n", dwCount, max_size); fclose(fid); if (dwCount > max_size) { printf("バッファサイズが足りません。\n"); return false; } if(hComm != NULL){ ReadFile(hComm, buff, dwCount, &dwRead, NULL); if (dwCount != dwRead) { printf("データの受け取りに失敗しました。\n"); return false; } } return dwRead; } int main(int argc, char* argv[]) { char buff[BYTE_SIZE]; int count = 0; int data_length; FILE *fid2; fid2=fopen("test2.txt","w"); ComInit(); while(1){ if(count == 2) break; count++; data_length=ReadData(buff, strlen(buff)); printf("%s ",buff); fprintf(fid2, "%s ",buff); } fclose(fid2); ComEnd(); return 0; }

    • HIIYO
    • 回答数4
  • USB機器のCプログラミングについて

     まったくの初心者です。  HID.DLL(標準)を使用するようUSB機器(入力機器です)から データをリードしてファイルにはき出すためのアプリケーションを作成したいのですが、どなたかご教授していただけないでしょうか。 手順(オープンからリードまで)がわかる一連の何か例題みたいなもの があれば助かります。

  • シリアル通信でのデータ受信

    シリアル通信にてデータを連続的に受信するプログラムを つくりたいと思っています. 以下のプログラムを作成して, main関数のcountを増やして,繰り返しreadを行おうとすると, 出力結果として, 時,分,秒,ID,値B,値C,値Dというフォーマットで 0, 9,30, 1,514,708,542,290 0, 9,30, 2,515,707,542,288 0, 9,30, 3,514,709,542,287 0, 9,30, 4,514,707,543,289 0, 9,30, 5,514,708,542,289 0, 9,30, 6,514,708,542,292 0, 9,30, 7,514,708,542,291 0, 9,30, 8,514,708,542,289 0, 9,30, 9,514,708,543, 0, 9,39,35,514,708,542,289 (この後フが連続) フフフフフフフフフフフフフフフ ク 0, 9,39,36,514,708,542,290 0, 9,39,37,515,709,541,291 0, 9,39,38,514,707,542,286 0, 9,39,39,514,708,542,281 0, 9,39,40,514,708,542,284 0, 9,39,41,514,707,542,286 0, 9,39,42,514,707,542,290 0, 9,39,43,514,709,542,290 0, 9,30, 9,514,708,543, 0, 9,39,35,514,708,542,289 フフフフフフフフフ・・・再びフ となってしまいます. 問題としては ・フがたくさんでてきてしまう. ・1サイクルの最後で改行ができていない ・1サイクルが終わって次のサイクルに入る時までの 間にデータが失われている. ・2サイクル目になぜか1サイクル目の値が残っている? などがあります. どなたか解決方法を教えていただけると大変助かります. よろしくお願いします. ------------------------------- #include "stdafx.h" #include <stdlib.h> #include <windows.h> #include <string.h> #include <stdio.h> #define COM_PORT_NAME "COM2" #define BAUD_RATE 57600 #define BYTE_SIZE 5000 //250 #define PARITY NOPARITY //EVENPARITY #define STOP_BIT TRUE #define F_PARITY ONESTOPBIT HANDLE hComm; // シリアルポートとの通信ハンドル bool ComInit() { // シリアルポートを開ける hComm = CreateFile( COM_PORT_NAME, /* シリアルポートの文字列 */ GENERIC_READ | GENERIC_WRITE, /* アクセスモード:読み書き */ 0, /* 共有モード:他からはアクセス不可 */ NULL, /* セキュリティ属性:ハンドル継承せず */ OPEN_EXISTING, /* 作成フラグ: */ FILE_ATTRIBUTE_NORMAL, /* 属性: */ NULL /* テンプレートのハンドル: */ ); if (hComm == INVALID_HANDLE_VALUE) { printf("シリアルポートを開くことが出来ませんでした。\n"); return false; } // 通信属性を設定する DCB dcb; GetCommState(hComm, &dcb); /* DCB を取得 */ dcb.BaudRate = BAUD_RATE; dcb.ByteSize = BYTE_SIZE; dcb.Parity = PARITY; dcb.fParity = STOP_BIT; dcb.StopBits = F_PARITY; SetCommState(hComm, &dcb); /* DCB を設定 */ return true; } void ComEnd() { // ハンドルを閉じる CloseHandle(hComm); } bool ReadData(char *buff, unsigned int max_size) { DWORD dwErrors; /* エラー情報 */ COMSTAT ComStat; /* デバイスの状態 */ DWORD dwCount; /* 受信データのバイト数 */ DWORD dwRead; /* ポートから読み出したバイト数 */ ClearCommError(hComm, &dwErrors, &ComStat); dwCount = ComStat.cbInQue; FILE *fid; fid=fopen("test.txt", "w"); printf("%d %d\n", dwCount, max_size); fprintf(fid,"%d %d\n", dwCount, max_size); fclose(fid); if (dwCount > max_size) { printf("バッファサイズが足りません。\n"); return false; } if(hComm != NULL){ ReadFile(hComm, buff, dwCount, &dwRead, NULL); if (dwCount != dwRead) { printf("データの受け取りに失敗しました。\n"); return false; } } return dwRead; } int main(int argc, char* argv[]) { char buff[BYTE_SIZE]; int count = 0; int data_length; FILE *fid2; fid2=fopen("test2.txt","w"); ComInit(); while(1){ if(count == 2) break; count++; data_length=ReadData(buff, strlen(buff)); printf("%s ",buff); fprintf(fid2, "%s ",buff); } fclose(fid2); ComEnd(); return 0; }

    • HIIYO
    • 回答数4
  • シリアル通信でのデータ受信

    シリアル通信にてデータを連続的に受信するプログラムを つくりたいと思っています. 以下のプログラムを作成して, main関数のcountを増やして,繰り返しreadを行おうとすると, 出力結果として, 時,分,秒,ID,値B,値C,値Dというフォーマットで 0, 9,30, 1,514,708,542,290 0, 9,30, 2,515,707,542,288 0, 9,30, 3,514,709,542,287 0, 9,30, 4,514,707,543,289 0, 9,30, 5,514,708,542,289 0, 9,30, 6,514,708,542,292 0, 9,30, 7,514,708,542,291 0, 9,30, 8,514,708,542,289 0, 9,30, 9,514,708,543, 0, 9,39,35,514,708,542,289 (この後フが連続) フフフフフフフフフフフフフフフ ク 0, 9,39,36,514,708,542,290 0, 9,39,37,515,709,541,291 0, 9,39,38,514,707,542,286 0, 9,39,39,514,708,542,281 0, 9,39,40,514,708,542,284 0, 9,39,41,514,707,542,286 0, 9,39,42,514,707,542,290 0, 9,39,43,514,709,542,290 0, 9,30, 9,514,708,543, 0, 9,39,35,514,708,542,289 フフフフフフフフフ・・・再びフ となってしまいます. 問題としては ・フがたくさんでてきてしまう. ・1サイクルの最後で改行ができていない ・1サイクルが終わって次のサイクルに入る時までの 間にデータが失われている. ・2サイクル目になぜか1サイクル目の値が残っている? などがあります. どなたか解決方法を教えていただけると大変助かります. よろしくお願いします. ------------------------------- #include "stdafx.h" #include <stdlib.h> #include <windows.h> #include <string.h> #include <stdio.h> #define COM_PORT_NAME "COM2" #define BAUD_RATE 57600 #define BYTE_SIZE 5000 //250 #define PARITY NOPARITY //EVENPARITY #define STOP_BIT TRUE #define F_PARITY ONESTOPBIT HANDLE hComm; // シリアルポートとの通信ハンドル bool ComInit() { // シリアルポートを開ける hComm = CreateFile( COM_PORT_NAME, /* シリアルポートの文字列 */ GENERIC_READ | GENERIC_WRITE, /* アクセスモード:読み書き */ 0, /* 共有モード:他からはアクセス不可 */ NULL, /* セキュリティ属性:ハンドル継承せず */ OPEN_EXISTING, /* 作成フラグ: */ FILE_ATTRIBUTE_NORMAL, /* 属性: */ NULL /* テンプレートのハンドル: */ ); if (hComm == INVALID_HANDLE_VALUE) { printf("シリアルポートを開くことが出来ませんでした。\n"); return false; } // 通信属性を設定する DCB dcb; GetCommState(hComm, &dcb); /* DCB を取得 */ dcb.BaudRate = BAUD_RATE; dcb.ByteSize = BYTE_SIZE; dcb.Parity = PARITY; dcb.fParity = STOP_BIT; dcb.StopBits = F_PARITY; SetCommState(hComm, &dcb); /* DCB を設定 */ return true; } void ComEnd() { // ハンドルを閉じる CloseHandle(hComm); } bool ReadData(char *buff, unsigned int max_size) { DWORD dwErrors; /* エラー情報 */ COMSTAT ComStat; /* デバイスの状態 */ DWORD dwCount; /* 受信データのバイト数 */ DWORD dwRead; /* ポートから読み出したバイト数 */ ClearCommError(hComm, &dwErrors, &ComStat); dwCount = ComStat.cbInQue; FILE *fid; fid=fopen("test.txt", "w"); printf("%d %d\n", dwCount, max_size); fprintf(fid,"%d %d\n", dwCount, max_size); fclose(fid); if (dwCount > max_size) { printf("バッファサイズが足りません。\n"); return false; } if(hComm != NULL){ ReadFile(hComm, buff, dwCount, &dwRead, NULL); if (dwCount != dwRead) { printf("データの受け取りに失敗しました。\n"); return false; } } return dwRead; } int main(int argc, char* argv[]) { char buff[BYTE_SIZE]; int count = 0; int data_length; FILE *fid2; fid2=fopen("test2.txt","w"); ComInit(); while(1){ if(count == 2) break; count++; data_length=ReadData(buff, strlen(buff)); printf("%s ",buff); fprintf(fid2, "%s ",buff); } fclose(fid2); ComEnd(); return 0; }

    • HIIYO
    • 回答数4
  • 関数について

    C言語の関数プログラムで、月を入力すると季節を表示する関数を作っているのですが、上手くいきません・・・。何か違うのでしょうか。 #include <stdio.h> void month(int a) { switch(a) { case '3': case '4': case '5': printf("春です。"); break; case '6': case '7': case '8': printf("夏です。"); break; case '9': case '10': case '11': printf("秋です。"); break; case '12': case '1': case '2': printf("冬です。"); break; default: printf("そのような月はありません。"); break; } } int main(void) { int m; printf("月を表示してください:"); scanf("%d",&m); month(m); return 0; }

  • 現在のドライブを調べたい

    VisualC++についてです。 現在のハードディスクドライブのボリューム名を調べるにはどのようにすれば良いのでしょうか? GetLogicalDrives() を使用すると接続されているドライブの一覧?が取得できるとのことですが、それ以上は手がつけられない状況です。いまOSが起動しているHDDを識別するにはどのようにすれば良いでしょうか?

  • windows.hがincludeされない

    http://www.microsoft.com/japan/msdn/vstudio/express/visualc/usingpsdk/を見ながら何度も試したのですがどうしてもwindows.hがインクルードされません。上記のページに書いてあること以外に必要な作業があるのでしょうか?

    • colt402
    • 回答数5