ロボットとか
ロボットとかのブログ

Visual Studio 2008でシリアル通信をしようとしたところ
'CreateFileW' : 1 番目の引数を 'const char [5]' から 'LPCWSTR' に変換できません
とでた.
調べてみたところ解決方法は,プロジェクト→プロパティ→構成のプロパティ→全般→文字セット→「マルチバイト文字セットを使用する/設定なし」を選択で解決.
'CreateFileW' : 1 番目の引数を 'const char [5]' から 'LPCWSTR' に変換できません
とでた.
調べてみたところ解決方法は,プロジェクト→プロパティ→構成のプロパティ→全般→文字セット→「マルチバイト文字セットを使用する/設定なし」を選択で解決.
#include "stdafx.h"
#include "windows.h"
#include "time.h"
#include "stdio.h"
#include "ctype.h"
int _tmain(int argc, _TCHAR* argv[])
{
time_t t,t0;
HANDLE hComm; /* シリアルポートのハンドル */
DCB dcb; /* 通信パラメータ */
char* str="a"; /* 送信データを格納する */
DWORD writesize; /* ポートへ書き込んだバイト数 */
hComm = CreateFile(
"COM1",/* シリアルポートの指定 */
GENERIC_READ | GENERIC_WRITE, /* アクセスモード */
0, /* 共有モード */
NULL, /* セキュリティ属性 */
OPEN_EXISTING, /* 作成フラグ */
FILE_ATTRIBUTE_NORMAL, /* 属性 */
NULL /* テンプレートのハンドル */
);
if (hComm == INVALID_HANDLE_VALUE) {
printf("シリアルポートを開くことが出来ませんでした。\n");
return false;
}
GetCommState(hComm, &dcb); /* DCB を取得 */
dcb.BaudRate = 9600;
dcb.ByteSize = 8;
dcb.Parity = NOPARITY;
dcb.StopBits = ONESTOPBIT;
SetCommState(hComm, &dcb); /* DCB を設定 */
COMMTIMEOUTS CommTimeout;
GetCommTimeouts(hComm,&CommTimeout);
CommTimeout.ReadIntervalTimeout = 3000;
CommTimeout.ReadTotalTimeoutMultiplier = 3000;
CommTimeout.ReadTotalTimeoutConstant = 3000;
CommTimeout.WriteTotalTimeoutMultiplier = 3000;
CommTimeout.WriteTotalTimeoutConstant = 3000;
SetCommTimeouts(hComm,&CommTimeout);
t0 = time(NULL);
while(1){
t = time(NULL);
if((t-t0)>0){
if(str=="b"){
str="a";
}else{
str="b";
}
printf("%s\n\r", str);
WriteFile(hComm, str, strlen(str), &writesize, NULL);/* シリアルポートに書き込み */
t0 = time(NULL);
}
}
CloseHandle(hComm);
return 0;
}
#include "windows.h"
#include "time.h"
#include "stdio.h"
#include "ctype.h"
int _tmain(int argc, _TCHAR* argv[])
{
time_t t,t0;
HANDLE hComm; /* シリアルポートのハンドル */
DCB dcb; /* 通信パラメータ */
char* str="a"; /* 送信データを格納する */
DWORD writesize; /* ポートへ書き込んだバイト数 */
hComm = CreateFile(
"COM1",/* シリアルポートの指定 */
GENERIC_READ | GENERIC_WRITE, /* アクセスモード */
0, /* 共有モード */
NULL, /* セキュリティ属性 */
OPEN_EXISTING, /* 作成フラグ */
FILE_ATTRIBUTE_NORMAL, /* 属性 */
NULL /* テンプレートのハンドル */
);
if (hComm == INVALID_HANDLE_VALUE) {
printf("シリアルポートを開くことが出来ませんでした。\n");
return false;
}
GetCommState(hComm, &dcb); /* DCB を取得 */
dcb.BaudRate = 9600;
dcb.ByteSize = 8;
dcb.Parity = NOPARITY;
dcb.StopBits = ONESTOPBIT;
SetCommState(hComm, &dcb); /* DCB を設定 */
COMMTIMEOUTS CommTimeout;
GetCommTimeouts(hComm,&CommTimeout);
CommTimeout.ReadIntervalTimeout = 3000;
CommTimeout.ReadTotalTimeoutMultiplier = 3000;
CommTimeout.ReadTotalTimeoutConstant = 3000;
CommTimeout.WriteTotalTimeoutMultiplier = 3000;
CommTimeout.WriteTotalTimeoutConstant = 3000;
SetCommTimeouts(hComm,&CommTimeout);
t0 = time(NULL);
while(1){
t = time(NULL);
if((t-t0)>0){
if(str=="b"){
str="a";
}else{
str="b";
}
printf("%s\n\r", str);
WriteFile(hComm, str, strlen(str), &writesize, NULL);/* シリアルポートに書き込み */
t0 = time(NULL);
}
}
CloseHandle(hComm);
return 0;
}
PR

この記事にコメントする
この記事へのトラックバック
この記事にトラックバックする:

プロフィール
名前:H238/ながつき |
このブログについて: |
ロボットについての勉強などを中心に勝手に書いていきます.あくまで本人のメモなので期待しないように. ちなみにブログデザインは趣味. |


ブログ内検索
[活動101] [活動102] [活動103]
[SH2] [マイコン]
[電子回路]
[プログラム] [VS] [OpenCV]
[知能ロボ]
[プレゼン] [CAD]


カレンダー
03 | 2025/04 | 05 |
S | M | T | W | T | F | S |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |


カテゴリー


最新CM
[11/13 SLT-A65]
[12/01 siawase]
[05/01 H238]
[05/01 H238]
[05/01 ねこう]


アーカイブ


