//リアルタイムモニタ用 角度rawデータを読み、10回合計値だけ出す。 #include #include #include #include #include #define STX 0x02 #define ETX 0x03 using namespace std; int main(){ printf("Content-type: text/plain\n\n"); //cgi形式に対応するための記述 char serial_dev[]="/dev/ttyUSB0";//シリアルデバイス名 //OLM100のデバイスファイルを指定します。 //USBコネクタにこれしか刺さっていない場合は //多分変更しなくて大丈夫です。 int fd; fd=open(serial_dev,O_RDWR | O_NOCTTY); //ファイルをオープンする。返り値は「ファイル記述子(ファイルディスクリプター)」 //負値の時はファイルオープンに失敗 if(fd < 0){ cout <<"cannot open "<< serial_dev << endl; cout <<"cannot open "<< serial_dev << endl; exit(1); } char rqcom[30]; char ascom[200]; sprintf(rqcom, "%c%s%c",STX,"050101",ETX); //リクエストコマンドの生成 int wnum, rnum; wnum = write(fd, rqcom, strlen(rqcom)); int i=0; int j=0; while(j<11){ rnum = read(fd, (char *)&ascom[i], 1); if(ascom[i]==STX){ ascom[i]=' '; } if(ascom[i]==ETX){ ascom[i]='\n'; j++; } i++; if (i>190) {//エラーにより無限ループを回避する処理 break; } } cout << ascom << endl; sprintf(rqcom, "%c050100%c",STX,ETX); write(fd, rqcom, strlen(rqcom)); exit(0); // return 0; }