COMポートの列挙後・・・

解決


DEEPS  2005-05-26 23:04:17  No: 57585

こんにちは。
使用可能なCOMポートを列挙後、
コンボボックスに入れたいのですが
以下のソースで無事に入れることは出来ました。

  int i;
  char buf[5];
  CString com,test,buf1;
  i=1;
  test = "COM";

  for(i=1;i<=10;i++){
    sprintf(buf,"%d",i);
    com = test + buf;

  HANDLE iComm;
  iComm = CreateFile(com,GENERIC_READ | GENERIC_WRITE,0,NULL,OPEN_EXISTING,0,NULL);
  
  if(iComm != INVALID_HANDLE_VALUE)
  {
    combo2.AddString(com+"\r\n");
  }
  CloseHandle(iComm);
  }

日本語のOSでは問題なくコンボボックスのリストに
COM1
COM2
と出たのですが、英語のOSでソフトを起動したところ
COM1||
COM2||
と「||」が出てしまいます。
これを出ないようにするにはどうすればよろしいでしょうか。
教えて下さい。

環境はWINXPSP2  VC++.NETです。


うにゅ  2005-05-26 23:09:45  No: 57586

改行コードが問題では?"\n"もしくは"\r"に変更してみてください。
Windows95以降もしくはUNIXならば"\n"だけで改行可能ですし


YuO  2005-05-26 23:23:35  No: 57587

コンボボックスって複数行の文字列を追加できましたっけ?
単純に
combo2.AddString(com);
では,何か問題点があるのでしょうか?


DEEPS  2005-05-26 23:32:24  No: 57588

>うにゅ様
ありがとうございます。
早速試してみましたが”¥n”では”|”になりました。

>YuO様
目的を言い忘れておりました。
(com)のみですと「|」は入りません。しかし、
作成したソフトにはCOMポートやボーレート、ストップビットなどの選択項目があり、その設定値をiniファイルに保存したいのです。

iniの中身(例)

COM1
9600
1

と各設定値を改行して保存したいのです。


YuO  2005-05-27 00:39:10  No: 57589

そもそも,表示しないデータを文字列で持つから問題になるのでは?
SetItemDataを使うなどしてみてはどうでしょう。


DEEPS  2005-05-27 00:49:35  No: 57590

>YuO様
ありがとうございました。
SetItemDataを使いました。

無事、解決致しました。


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加