C言語のシリアル通信について
C++でプログラムを書き、シリアル通信(RS232C)を使ってデバイスを動かしたいと試みているのですがよくわからないのでアドバイスお願いします。(OSはlinux)
デバイス特有の命令を送るところがよくわかりません。(命令はキャラクタではなくバイナリで送らなければなりません。)
命令はバイナリデータです。
例、
char i[]={255,20,0,10};
↑このようなデータです。
このようなデータを送る際はfwrite関数を使うということは調べたのですがどのように表すかわからないので教えていただきたいです。
初めのシリアルポートを開く際に”wb”をつけないといけないみたいですがどのようにつければいいのでしょうか。
fd=open("/dev/ttyS0",O_RDWR|O_NOCTTY|O_NONBLOCK);
if(fd<0)
{
printf("erroe\n");
exit(-1);
}
↑自分が書いたポートを開く時のプログラムです。最初の行の最後に”wb"を付け足せば良いのですか。
上記の例のような命令を送るとすると
fwrite(&i,sizeof(char),4,fd);
return 0;
で良いでしょうか。warningがでて動作しないのでアドバイスよろしくお願いします。
説明が下手で申し訳ありません。一番わからない点はシリアル通信で命令を送るときのポートオープンとfwriteを使った命令を送る形式です。どうぞよろしくお願いします。