アプリ版:「スタンプのみでお礼する」機能のリリースについて

現在開発環境QT5.3を使用しシリアル通信のプログラムを組んでいるんですが
以下のエラーが発生し、調査を行っても不明なため質問させていただきました


OS:WindowsXP
開発環境:QT
目的:RS422通信

まずシリアル通信ポートがパソコンに標準でついていないため、インターフェースから
PCIタイプのシリアル通信ボードを購入し、取り付けました
メーカの自己診断、メーカの送受信は確認し文字の送受信を確認しました。
デバイスマネージャで確認し、"COM3"と"COM4"であることを確認しました。
そこでQTでプログラムを組んでいくとCreateFile関数でエラーが発生することを確認しました
GetLastError関数の戻り値を確認すると0を返すことを確認しました。
以下が今回記述したプログラムのソースコードとなります。

#include <windows.h>
#inlclude <stdio.h>
#include <stdlib.h>
#include <string.h>

void MainWindow::Serial_open()
{
HANDLE hPort;
SetLastError(NO_ERROR);
hPort = CreateFile((LPWSTR)"COM3",GENERIC_WRITE |
GENERIC_READ,0,NULL,OPEN_EXISTING,FILE_ATTRIBUTE_NORMAL,NULL);
if(hPort==INVALID_HANDLE_VALUE)
{
DWORD dw = GetLastError(); //ここで戻り値0がくる。
}
}

以上よろしくお願いします

A 回答 (3件)

QTの開発環境は全然知りませんが、



コード上不都合があるとすると、LPWSTR の部分と思われます。

↓この辺りをヒントにしてみてください。(同じ開発環境のCOM PORTに関するサンプルコードがあれば、それも参考になるはず)
http://www.atmarkit.co.jp/fdotnet/dotnettips/025 …

色々検索すると、開発環境は異なりますが、類似問題で解決している例が多々見つかります。
    • good
    • 0

たぶん正確な文言は


「キャストしてください」
ではないと思うが....

さておき, よしんばそういうメッセージだったとしてもそれは
キャストすればプログラマの思った通りの結果が得られる
と言っているわけじゃないだろう.

つまり「キャストしてごまかすのではなく『キャストしなくてもいい』ように変更する」のが正解だと思われる.
    • good
    • 1

全然わからんけど, とりあえず CreateFile の第1引数


(LPWSTR)"COM3"
に違和感を持った. なぜキャストがある?

この回答への補足

これはですね、"COM3"で行うと、キャストしてくださいと
エラーが発生するために行っています。

補足日時:2014/10/02 14:39
    • good
    • 0

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