前提・実現したいこと
linux初心者です。
ubuntu18.04LTS上で力センサを使ったプログラムを組もうとしています。
DAQ(Data Acquisition Board)はNational InstrumentsのPCI-6224です。
付属のドライバはwindowsにしか対応していませんでした。調べたところlinuxではcomediというものが使えるということなので下記を参考にしてインストールしました。
https://www.comedi.org/index.html
https://qiita.com/ProjectM_TACCMI/items/aabf1a324b03ccf3813b
発生している問題・エラーメッセージ
https://www.comedi.org/doc/writingprograms.html
にあるチュートリアルのプログラムをビルドしようとしました。
/* * Tutorial example #1 * Part of Comedilib * * Copyright (c) 1999,2000 David A. Schleef <ds@schleef.org> * * This file may be freely modified, distributed, and combined with * other software, as long as proper attribution is given in the * source code. */ #include <stdio.h> /* for printf() */ #include <comedilib.h> int subdev = 0; /* change this to your input subdevice */ int chan = 0; /* change this to your channel */non-kernel-space code int range = 0; /* more on this later */ int aref = AREF_GROUND; /* more on this later */ int main(int argc,char *argv[]) {include comedi_t *it; int chan = 0; lsampl_t data; int retval; it = comedi_open("/dev/comedi0");non-kernel-space code if(it == NULL) { comedi_perror("comedi_open"); return 1; } retval = comedi_data_read(it, subdev, chan, range, aref, &data); if(retval < 0) { comedi_perror("comedi_data_read"); return 1; } ~/comedilib/demo$ cc tut11.c -lcomedi -lm -o tut11 In file included from tut11.c:13:0: /usr/local/include/comedilib.h:32:2: error: #error linux/comedilib.h should not be included by non-kernel-space code #error linux/comedilib.h should not be included by non-kernel-space code ^~~~~ printf("%d\n", data); return 0; }
このとき次のようなエラーが出ました。
~/comedilib/demo$ cc tut1.c -lcomedi -lm -o tut1 In file included from tut11.c:13:0: /usr/local/include/comedilib.h:32:2: error: #error linux/comedilib.h should not be included by non-kernel-space code #error linux/comedilib.h should not be included by non-kernel-space code ^~~~~
エラーメッセージを検索にかけてもヒットせず、non-kernel-space codeの意味もわからず手詰まっています。何卒ご助力願います。
試したこと
comedilib.h をチュートリアルファイルのあるディレクトリにコピーして、
include <comedilib.h>
を
include "comedilib.h"
にしてビルドするとうまくいきます。実行結果も力センサの値をちゃんと返しているようです。
~/comedilib/demo$ cc tut1.c -lcomedi -lm -o tut1 ~/comedilib/demo$ sudo ./tut1 33511 ~/comedilib/demo$ sudo ./tut1 33435 ~/comedilib/demo$ sudo ./tut1 33374