質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
86.02%
C

C言語は、1972年にAT&Tベル研究所の、デニス・リッチーが主体となって作成したプログラミング言語です。 B言語の後継言語として開発されたことからC言語と命名。そのため、表記法などはB言語やALGOLに近いとされています。 Cの拡張版であるC++言語とともに、現在世界中でもっとも普及されているプログラミング言語です。

Arduino

Arduinoは、AVRマイコン、単純なI/O(入出力)ポートを備えた基板、C言語を元としたArduinoのプログラム言語と、それを実装した統合開発環境から構成されたシステムです。

Q&A

解決済

ArduinoとPC間の相互通信を行いたい、

SHIN_gen
SHIN_gen

総合スコア1

C

C言語は、1972年にAT&Tベル研究所の、デニス・リッチーが主体となって作成したプログラミング言語です。 B言語の後継言語として開発されたことからC言語と命名。そのため、表記法などはB言語やALGOLに近いとされています。 Cの拡張版であるC++言語とともに、現在世界中でもっとも普及されているプログラミング言語です。

Arduino

Arduinoは、AVRマイコン、単純なI/O(入出力)ポートを備えた基板、C言語を元としたArduinoのプログラム言語と、それを実装した統合開発環境から構成されたシステムです。

3回答

0グッド

1クリップ

442閲覧

投稿2022/12/08 09:36

イメージ説明
arduino-PC間の通信を行いたいです。下記サイトを参考にしましたがArduino側で「windows.h:No such file or directory」と出ます。これの解決策を教えていただきたいです。

https://monitorgazer.blogspot.com/2013/06/carduinoled.html

実現したいこと

上記URLにあるようにC言語でArduinoとシリアル通信してLEDを制御したいです。

発生している問題・エラーメッセージ

Arduino:1.8.19 (Windows 10), ボード:"Seeeduino XIAO, Arduino, Off, USART"

Serial_sample.c:2:9: fatal error: windows.h: No such file or directory

#include<windows.h>

^~~~~~~~~~~

compilation terminated.

exit status 1

windows.h: No such file or directory

「ファイル」メニューの「環境設定」から
「より詳細な情報を表示する:コンパイル」を有効にすると
より詳しい情報が表示されます。

該当のソースコード

Arduino側のソースコード(Arduino言語)
const int LED = 10;
int incomingByte = 0; // for incoming serial data

void setup() {
Serial.begin(9600); // opens serial port, sets data rate to 9600 bps
pinMode(LED,OUTPUT);
digitalWrite(LED,LOW);
}

void loop() {

// send data only when you receive data: if (Serial.available() > 0) { incomingByte = Serial.read(); if(incomingByte == 1){ digitalWrite(LED,HIGH); } } delay(10);

}

PC側のソースコード(C言語)
#include<windows.h>
#include<stdio.h>
#include<stdlib.h>
#include<stdbool.h>

HANDLE arduino;
bool Ret;

void main(void){
BYTE data = 1;
//1.ポートをオープン
arduino = CreateFile("COM7",GENERIC_WRITE,0,NULL,OPEN_EXISTING,FILE_ATTRIBUTE_NORMAL,NULL);
//2014/01/22追記 これでつながらない場合には"\\.\COM7"とするとつながるかもしれません。

if(arduino == INVALID_HANDLE_VALUE){
printf("PORT COULD NOT OPEN\n");
system("PAUSE");
exit(0);
}
//2.送受信バッファ初期化
Ret = SetupComm(arduino,1024,1024);
if(!Ret){
printf("SET UP FAILED\n");
CloseHandle(arduino);
system("PAUSE");
exit(0);
}
Ret = PurgeComm(arduino,PURGE_TXABORT|PURGE_RXABORT|PURGE_TXCLEAR|PURGE_RXCLEAR);
if(!Ret){
printf("CLEAR FAILED\n");
CloseHandle(arduino);
exit(0);
}
//3.基本通信条件の設定
DCB dcb;
GetCommState(arduino,&dcb);
dcb.DCBlength = sizeof(DCB);
dcb.BaudRate = 9600;
dcb.fBinary = TRUE;
dcb.ByteSize = 8;
dcb.fParity =NOPARITY;
dcb.StopBits = ONESTOPBIT;

Ret = SetCommState(arduino,&dcb);
if(!Ret){
printf("SetCommState FAILED\n");
CloseHandle(arduino);
system("PAUSE");
exit(0);
}
//4.送信
DWORD dwSendSize;
DWORD dwErrorMask;

Ret = WriteFile(arduino,&data,sizeof(data),&dwSendSize,NULL);
if(!Ret){
printf("SEND FAILED\n");
CloseHandle(arduino);
system("PAUSE");
exit(0);
}
printf("FINISH\n");
CloseHandle(arduino);
system("PAUSE");
}

試したこと

普通に通信なしでArduinoのみでLEDを光らせることはできました。
ライブラリをインクルードするためにライブラリマネージャーでwindows.hを探しましたがありませんでした。
windows.hそのものは「C:\MinGW\include」に存在していました。
PC側のソースコードはVisual codeで書いております。

補足情報(FW/ツールのバージョンなど)

ここにより詳細な情報を記載してください。

以下のような質問にはグッドを送りましょう

  • 質問内容が明確
  • 自分も答えを知りたい
  • 質問者以外のユーザにも役立つ

グッドが多くついた質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

気になる質問をクリップする

クリップした質問は、後からいつでもマイページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

下記のような質問は推奨されていません。

  • 間違っている
  • 質問になっていない投稿
  • スパムや攻撃的な表現を用いた投稿

適切な質問に修正を依頼しましょう。

jbpb0

2022/12/08 22:29

質問の画像では「PC側のソースコード(C言語)」をArduino IDEに入力してますが、Arduino IDEに入力するのは「Arduino側のソースコード(Arduino言語)」だけです 「PC側のソースコード(C言語)」は、visual studioとか(MinGWの)gccとかのパソコン用のコンパイラでコンパイルします こちらは、visual studioを使う参考例です (コードの参考ではなく、visual studioを使うということの参考) https://monitorgazer.blogspot.com/2014/12/visualstudioarduinowin32cc.html
SHIN_gen

2022/12/12 03:50

画像上ではWindowsのソースコードをArduinoに入れようとしているからエラーが出ているということですね。 Visual studioを使ってみます。 ありがとうございます。

回答3

1

とりあえず、そのエラーメッセージの解説を行いますと、そのファイルが見つからない、とおっしゃってます。
windows.h というファイルがどこにも存在しないので、そのエラーが出ています

投稿2022/12/08 11:18

y_waiwai

総合スコア86072

SHIN_gen👍を押しています

良いと思った回答にはグッドを送りましょう。
グッドが多くついた回答ほどページの上位に表示されるので、他の人が素晴らしい回答を見つけやすくなります。

下記のような回答は推奨されていません。

  • 間違っている回答
  • 質問の回答になっていない投稿
  • スパムや攻撃的な表現を用いた投稿

このような回答には修正を依頼しましょう。

1

windows.hはあくまでWindows上で動くソフトを開発するときにつかうものなので、arduinoにもっていっても意味がないです。
arduinoの側はarduinoのSerialPort classとかを使います。

投稿2022/12/08 10:34

matukeso

総合スコア1427

SHIN_gen👍を押しています

良いと思った回答にはグッドを送りましょう。
グッドが多くついた回答ほどページの上位に表示されるので、他の人が素晴らしい回答を見つけやすくなります。

下記のような回答は推奨されていません。

  • 間違っている回答
  • 質問の回答になっていない投稿
  • スパムや攻撃的な表現を用いた投稿

このような回答には修正を依頼しましょう。

0

ベストアンサー

Arduino IDEは、Arduinoで動くプログラムを開発するためのツールです。
Windowsで動くプログラムは作れません。

Windows用の開発ツールとしてはとりあえずVisual Studio community editionをお薦めしておきますが、C/C++のプログラムを開発するにはちょっと作業が必要です。
他にもいくつも選択肢はありますが、code::blocks (中身はMinGWのgcc)でもコンパイルが通ることは確認しました(動作はさせてみていません)。
流行りとしてはVisual Studio Code(先述のVisual Studioとは別物)+MinGWのgccですが、うまく行けばいいのですがどこかセットアップにハマりポイントがあるようでもあります。

投稿2022/12/08 23:23

thkana

総合スコア7338

良いと思った回答にはグッドを送りましょう。
グッドが多くついた回答ほどページの上位に表示されるので、他の人が素晴らしい回答を見つけやすくなります。

下記のような回答は推奨されていません。

  • 間違っている回答
  • 質問の回答になっていない投稿
  • スパムや攻撃的な表現を用いた投稿

このような回答には修正を依頼しましょう。

回答へのコメント

SHIN_gen

2022/12/12 03:52

ArduinoとWindows.hのファイルを同じところに入れていた結果のミスでした。 terapadで作ったものでVisual studio、使ってみます。 ありがとうございました。

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
86.02%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問

同じタグがついた質問を見る

C

C言語は、1972年にAT&Tベル研究所の、デニス・リッチーが主体となって作成したプログラミング言語です。 B言語の後継言語として開発されたことからC言語と命名。そのため、表記法などはB言語やALGOLに近いとされています。 Cの拡張版であるC++言語とともに、現在世界中でもっとも普及されているプログラミング言語です。

Arduino

Arduinoは、AVRマイコン、単純なI/O(入出力)ポートを備えた基板、C言語を元としたArduinoのプログラム言語と、それを実装した統合開発環境から構成されたシステムです。