プロが教える店舗&オフィスのセキュリティ対策術

コンソールで動作するポート通信プログラムを書いたのですが、
Win95上で動作しません。どうしてダメなのかがわかりません。
おわかりになる方がいらっしゃったら
ご教授いただければと思います。

Modeコマンド発行と通信を行う実行モジュールを
記述したバッチファイルを、VBのSHELLで実行しています。
実行モジュールはBorland C++Builder 5でコンパイルしています。

95上でもfopenは実行されています。
なお、2000上では問題なく動作しています。

よろしくお願いいたします。


以下実行モジュールのコード(抜粋)です。

 //ポートオープン
 fi=fopen("COM2","r");

 //20文字以上になるか、エンターの入力があったら受信終了
 while (fs>0){
   memset(c,'\0',sizeof(c));

   s=fread(c,sizeof( char ), 1,fi);

   if (c[0] == '\r') break;
   if (c[0] == '\n') break;
   strcat(ReadBuf,c);
   fs=fs-s;
 }
 //ポートクローズ
 fclose(fi);

A 回答 (1件)

逆に質問です。


開発マシン(Win2000)と実行しているマシン(Win95)は同じマシンですか?
それとも開発マシンと実行しているマシンは別のマシンですか?
実行モジュールを直接DOS窓で実行するとどうなりますか?
Win95のマシンにはCOM2はありますか?
Win95用ではなくて、Win2000用にアプリを作っていませんか?
C++Builder5でコンソールアプリというとWin32API使用でしょうか?
それともDOSでも動かしたいのでしょうか?
ところで、Win95でfopenしていることはどうやって確認しましたか?
そもそも、C++Builderをお使いなら専用のシリアルポート制御のコンポーネントがあると思いますので、それを使ってみては?

この回答への補足

katouka09様

レスありがとうございます。わかりにくくて申し訳ありません。
「MODEコマンドを発行」と書きましたので
自分の中では「DOS画面のプログラム」と書いた気になっていました。

開発は2000、テスト機は95で、別のマシンです。
これのほかに実機(95)があります。
作成した実行モジュールのDOS画面からの実行はできませんでした。
通信環境は正しく整っているとお考えください。
APIは試しました。実機でだけ動作しませんでした。
fopenは2000上ではデバッガで、
テスト機上では戻り値の画面表示で確認しています。
ただし内部的が正常に動作したかはわかりません。
エラーなく終了してきたと言うだけです。
コンポーネントというのは、GUIの部品という認識でよろしいでしょうか?
今回はDOS画面上でのプログラムなので使えません。

補足日時:2004/09/21 18:54
    • good
    • 0

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