激凹みから立ち直る方法

VC++から数値データ(0-100)を送信し、Arduinoに接続されているファンを受信した数値でPWMコントロールしたいのですが、接続を確立したその後からプログラミングの仕方がわかりません。

どのようにしてデータを送信すればよいのでしょうか?

以下のようにして接続を行っています。

//COMポートハンドル
HANDLE hComm;
hComm = CreateFileA("\\\\.\\COM3", GENERIC_READ | GENERIC_WRITE, 0, 0, OPEN_EXISTING, FILE_FLAG_OVERLAPPED, 0);


//ポートの接続確認
printf("Arduino COM") ;
if (hComm == INVALID_HANDLE_VALUE)
printf(":not opened\n") ;
else{
DCB lpTest;
GetCommState(hComm,&lpTest);
lpTest.BaudRate = CBR_9600;
lpTest.ByteSize = 8;
lpTest.Parity = NOPARITY;
lpTest.StopBits = ONESTOPBIT;
SetCommState(hComm,&lpTest);
printf(":OPENED\n") ;
WriteFile(hComm, buf,strlen(buf),&write, NULL);
}
//COMポートハンドルの解放
CloseHandle(hComm);


なおArduino側のプログラムは以下のものを使用しています。
//読み取り値の変数
int val=0;

void setup(){
//シリアル通信開始
Serial.begin(9600);
}

void loop(){
//データが0個より多いときの時
if(Serial.available()>0){
//データの読み込み
val=Serial.read();
//合図用データ送信(1バイト)
Serial.print(65,BYTE);
}
//アナログ出力(11番ピン)に読み込み値を入れる
analogWrite(11,val);
}

A 回答 (1件)

>WriteFile(hComm, buf,strlen(buf),&write, NULL);


のところを……

char val;

val = 50;
WriteFile(hComm, &val, sizeof(val), &write, NULL);

って感じでしょうか。
WriteFile()した後に1バイトのReadFile()が必要かも知れませんが。
>//合図用データ送信(1バイト)
>Serial.print(65,BYTE);
を受け取る為に。
# まぁ、受け取らずに捨ててもいいでしょうけどね。
    • good
    • 0

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


おすすめ情報