重要なお知らせ

「教えて! goo」は2025年9月17日(水)をもちまして、サービスを終了いたします。詳細はこちら>

電子書籍の厳選無料作品が豊富!

PICからPCにデータ(電圧:最大値5)を受信させようとしています。

受信には C++を用いたプログラムを自作したいのですが、
どうしてもうまくいかなかったため投稿させていただきました。

症状としては、まずポートを開く事すら出来ていません。
RS232c {USBで変換) が接続されているポートはCOM1です。
ポートが開くか確かめるプログラムとしては、次のようなソースを使いました。

#include<windows.h>
#include<iostream>
using namespace std;

int main(void){
HANDLE hCom;
hCom = CreateFile(
(LPCWSTR)"COM1",
GENERIC_READ | GENERIC_WRITE,
0,
NULL,
OPEN_EXISTING,
FILE_ATTRIBUTE_NORMAL,
NULL
);
if (hCom == INVALID_HANDLE_VALUE) {
cout<<"シリアルポートを開くことが出来ませんでした。\n"<<endl;
return false;
}
CloseHandle( hCom );
return 0;
}


これを実行すると「シリアルポートを開くことが出来ませんでした。」としかなりません。
( (LPCWSTR)"COM1"となっているのは、「'CreateFileW' : 1 番目の引数を 'const char [5]' から 'LPCWSTR' に変換できません。」
 と出てしまったためです。)

ハイパーターミナルを用いてCOM1からデータを受信できていることは確認しましたので、
通信が出来ていないわけではないようなのです。

ありふれた質問である事は重々承知の上ですが、
このソースでシリアルポートが開けない理由を教えていただければ幸いです。

環境:Visual C++ 2008 Express Edition
Microsoft Windows XP Version 2002 Service Pack 3

A 回答 (3件)

> (LPCWSTR)"COM1",


キャストしてエラーを隠しただけでは、データ型は変換されませんよ。

TEXT("COM1")
としておけば良いんじゃないかな。
    • good
    • 0
この回答へのお礼

無事動かす事が出来ました!
(LPCWSTR)"COM1"としただけではキャストされないんですね。

アドバイス有難う御座いました。

お礼日時:2008/11/02 05:26

VC2008は標準でUnicode版のライブラリが使われます


先の回答者のように TCHAR.Hなどをインクリュードして _TまたはTEXTマクロなどで文字列くくるといった方法と

VC2008のメニューから プロジェクト > プロパティ
左ペインで 構成のプロパティ > 全般を選択す
右ペインの文字セットを『マルチバイト文字セットを使用する』に変更して
プロジェクト > リビルド
などを実行しましょう
    • good
    • 0
この回答へのお礼

マルチバイト文字を使用するでも動かす事が出来ました。

アドバイス感謝です!

お礼日時:2008/11/02 05:32

●補足


TEXT()マクロを使うのに、
#include <wchar.h>
が必要かも。
    • good
    • 0
この回答へのお礼

#include<wchar.h>はインクルードしなくても動きましたが、心配なので一応入れておきます。

補足説明有難う御座います。

お礼日時:2008/11/02 05:27

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