CDの保有枚数を教えてください

C/C++初心者です。
この度、sonyのパンチルトカメラEVI-D100(VISCAプロトコルでコントロールできる)をPCで制御する必要がでてきました。
いろいろ調べて、libviscaとEVIlibというライブラリを見つけました。しかし、両方ともLinux向けのため、ソースファイルに含まれるunix系のヘッダーファイル(unistd.h)などがVisualC++などには存在しないようでエラーになってしまいます。
http://www.macnica.net/hummingbird/xdk_tech_04htmlのインクルードファイルがない場合の解決方法も参考にしてみましたが、unistd.h以外にも存在しないヘッダーファイルがあるようでエラーが発生してしまいます。開発環境はVisual Studio2005,OSはWindowsXPです。
そこで質問なんですが、そもそもOSがLinux対応のソースをwindowsで使うことはできるのでしょうか?
また、libviscaにはwindows向けのlibviscawinがあるらしいのですが、どこで探しても見つかりません。libviscawinに関して、ご存知の方がいらっしゃいましたら教えてください。

初心者なので、よく理解できていない部分もありますがよろしくお願いします。

A 回答 (4件)

if (bSet) {


dcb.fDtrControl = DTR_CONTROL_HANDSHAKE ;
} else {
dcb.fDtrControl = DTR_CONTROL_ENABLE ;
}
の部分は、最初にbSetが0なら、DTR_CONTROL_ENABLE が設定されるので、
DSRは常時ONとなりフロー制御されません。

bSet = 0;
dcb.fInX = dcb.fOutX = bSet ;
dcb.XonChar = ASCII_XON ;
dcb.XoffChar = ASCII_XOFF ;
dcb.XonLim = 100 ;
dcb.XoffLim = 100 ;
の部分は、100バイト未満の通信で直ぐに読み込みされれば、バッファに
100バイト以上たまることがないので、結果的にフロー制御されません。

片方の動作が遅い場合やバッファが小さい場合にはフロー制御は必須
ですが、今回の場合には該当しないと思いますし、VISCAプロトコルは
フロー制御していないので、無くても良いと思います。
#悪影響が無ければ、他への転用も考慮して残しておくのもありですが・・
#ただ、その場合、ソースにコメントは必須です。
    • good
    • 0
この回答へのお礼

ご回答ありがとうございます。
VISCAプロトコルがフロー制御してないようですし、フロー制御部分は
ちゃんとコメントをつけてコメントアウトしておきます。

ご丁寧にありがとうございました。

お礼日時:2007/12/19 17:34

以下のソースを見てみました。


http://onishi-lab.jp/programming/rs232c_win.html

このソースで動けば、それをベースに必要なコマンドを追加していけば良さそうですね。

動作確認はできないですが、若干気になる部分があります。

dcb.fOutxDsrFlow = bSet ; ← ** ここは左右が逆?
if (bSet) {
dcb.fDtrControl = DTR_CONTROL_HANDSHAKE ;
} else {
dcb.fDtrControl = DTR_CONTROL_ENABLE ;
}
上記のままだとbSetは BYTE bSet ; で定義しているだけですよね。

GetCommState(hCom, &dcb) ;
で読み込んだ状態に対して必要なパラメータを変更して
SetCommState(hCom, &dcb);
で再設定しているように読めるのですが・・・

いずれにせよ、フロー制御がらみで、VISCAプロトコル は
フロー制御していないようなので、このままで動けば良いですが
動かないようであればこの辺を中心に見直してください。

Cの低水準IOを使用してRS-232Cを制御する方法は定石だと思うので、
検索すればいろんな情報が見つかると思います。

http://www.geocities.jp/terukat/_geo_contents_/w …
あたりも参考になるかも・・

>ご指摘どおり、開発は困難に思われますが卒業研究なのでなんとか頑張ってみようと思います。

業務での開発かと思っていましたが、卒業研究であれば完璧に造るよりは、動かすことが優先ですよね。
時間は少ないかも知れませんががんばってください。

#最近、プログラムを書かないので実証はできませんが、
#しばらくはここをチェックしますので、何かありましたら、
#また質問してください。

(元制御系SE、今は金融系SEです)

この回答への補足

フロー制御部分
dcb.fOutxDsrFlow = bSet ;

if (bSet) {
dcb.fDtrControl = DTR_CONTROL_HANDSHAKE ;
} else {
dcb.fDtrControl = DTR_CONTROL_ENABLE ;
}

bSet = 0;
dcb.fInX = dcb.fOutX = bSet ;
dcb.XonChar = ASCII_XON ;
dcb.XoffChar = ASCII_XOFF ;
dcb.XonLim = 100 ;
dcb.XoffLim = 100 ;
をコメントアウトしても動きました。
カメラのテクニカルマニュアルにもフロー制御は行わないと書いてありましたし、このフロー制御部分は書いても、プログラム実行時に反映されていないということでしょうか?
初歩的な質問ですいません。
フロー制御に関して自分でももう少し調べてみます。

補足日時:2007/12/18 14:32
    • good
    • 0
この回答へのお礼

equinox2さん

度々有益なアドバイスありがとうございます。教えていただいたサイトも参考にさせていただきます。

bSetに関しては確かにBYTE bSetで定義しているだけみたいなので、適当なのですが
dcb.fOutxDsrFlow = bSet ; の前に
bset=0;
としてみました。
EVI-D100のテクニカルマニュアルにも「XON/XOFFやRTS/CTSなどを使ったフローコントロールは行いません」と記載されていたのですが、なぜか動かすことができました。

いろいろご親切にありがとうございます。
私の所属している研究室はもちろん学科でもプログラミングを専門にやっているわけではないので、質問できる人もおらず困っていました。
本当に感謝しております。
また何か質問するかもしれませんがよろしくお願いします。

お礼日時:2007/12/18 13:31

>webカメラで撮影した画像の情報(座標など)を送り、


撮影した画像の情報を取得する処理は既にCで作成済みなのでしょうか?

画像の取得と画像処理について、既にCで作成済みであれば、libviscaの使用/不使用に拘わらず、そのままCで作成すべきでしょう。

画像の取得と画像処理についてもこれから開発するのであれば、そちらの開発の方が、libviscaをWindowsで使えるようにするか、新たにCでVISCAプロトコルの処理を作成するより難しいのではないでしょうか。

いずれにせよ、CやVBの初心者には開発は困難だと思われます。

私は、RS-232Cの通信については、CでもVBでも何度も開発していますが、画像処理の経験はないのでその部分については残念ながら良くわかりません。
    • good
    • 0
この回答へのお礼

equinox2さん
ご回答ありがとうございます。
画像処理に関してはCで同時並行で作成中です。
EVI-D100の制御に関してですが、
http://onishi-lab.jp/programming/rs232c_win.html
などを参考にやってみたところ、なんとか制御できそうです。
シリアル通信の設定でできるのですね。理解していませんでした。

ご指摘どおり、開発は困難に思われますが卒業研究なのでなんとか頑張ってみようと思います。

丁寧なご対応に感謝しております。ありがとうございました。

お礼日時:2007/12/17 15:10

libviscaちょっと探してみましたが、libvisca.hをちょっと見た感じでは



#if defined(_WIN32)||defined(WIN32)||defined(__WIN32__)
#define WIN
#endif
#ifdef WIN
#include "Windows.h"
#else
#include <termios.h>
#include <unistd.h>
#include <sys/ioctl.h>
#endif

の記述がありましたので、Windows系も考慮されているように思えます。


無責任な発言ではありますが、VISCAプロトコルを以下のリンクで参照した感じでは、RS-232Cでコントロールしているようなので、ライブラリに頼らずコマンド送信を製作するならVBなどが制御し易いかも。
http://www.totsu.co.jp/isp/ispproducts/pdf/D100_ …

# .NET以前のVB6とか・・
ただ、RS-232CでBinariyの送受信の経験がないとかなり大変だとは思います。
    • good
    • 0
この回答へのお礼

>equinox2さん
ご丁寧なアドバイスありがとうございます。
ご指摘どうり、http://freshmeat.net/projects/libvisca/?branch_i …にもlibviscaがwindowsに対応しているようなことが書かれていました。

前回の質問で書けばよかったのですが、私が作りたいシステムの全体像は、
SonyのEVI-D100にwebカメラで撮影した画像の情報(座標など)を送り、それによってEVI-D100を制御するというものです。

>RS-232Cでコントロールしているようなので、ライブラリに頼らずコマンド送信を製作するならVBなどが制御し易いかも。
本当に初心者なのでVBに関して全くわからないのですが、VBでも今回私が考えているようなものは作成可能なのでしょうか?

本当に初歩的な質問ですいません。よろしくお願いします。

お礼日時:2007/12/16 16:06

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