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に関して、ご存知の方がいらっしゃいましたら教えてください。
初心者なので、よく理解できていない部分もありますがよろしくお願いします。
No.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プロトコルは
フロー制御していないので、無くても良いと思います。
#悪影響が無ければ、他への転用も考慮して残しておくのもありですが・・
#ただ、その場合、ソースにコメントは必須です。
ご回答ありがとうございます。
VISCAプロトコルがフロー制御してないようですし、フロー制御部分は
ちゃんとコメントをつけてコメントアウトしておきます。
ご丁寧にありがとうございました。
No.3
- 回答日時:
以下のソースを見てみました。
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 ;
をコメントアウトしても動きました。
カメラのテクニカルマニュアルにもフロー制御は行わないと書いてありましたし、このフロー制御部分は書いても、プログラム実行時に反映されていないということでしょうか?
初歩的な質問ですいません。
フロー制御に関して自分でももう少し調べてみます。
equinox2さん
度々有益なアドバイスありがとうございます。教えていただいたサイトも参考にさせていただきます。
bSetに関しては確かにBYTE bSetで定義しているだけみたいなので、適当なのですが
dcb.fOutxDsrFlow = bSet ; の前に
bset=0;
としてみました。
EVI-D100のテクニカルマニュアルにも「XON/XOFFやRTS/CTSなどを使ったフローコントロールは行いません」と記載されていたのですが、なぜか動かすことができました。
いろいろご親切にありがとうございます。
私の所属している研究室はもちろん学科でもプログラミングを専門にやっているわけではないので、質問できる人もおらず困っていました。
本当に感謝しております。
また何か質問するかもしれませんがよろしくお願いします。
No.2
- 回答日時:
>webカメラで撮影した画像の情報(座標など)を送り、
撮影した画像の情報を取得する処理は既にCで作成済みなのでしょうか?
画像の取得と画像処理について、既にCで作成済みであれば、libviscaの使用/不使用に拘わらず、そのままCで作成すべきでしょう。
画像の取得と画像処理についてもこれから開発するのであれば、そちらの開発の方が、libviscaをWindowsで使えるようにするか、新たにCでVISCAプロトコルの処理を作成するより難しいのではないでしょうか。
いずれにせよ、CやVBの初心者には開発は困難だと思われます。
私は、RS-232Cの通信については、CでもVBでも何度も開発していますが、画像処理の経験はないのでその部分については残念ながら良くわかりません。
equinox2さん
ご回答ありがとうございます。
画像処理に関してはCで同時並行で作成中です。
EVI-D100の制御に関してですが、
http://onishi-lab.jp/programming/rs232c_win.html
などを参考にやってみたところ、なんとか制御できそうです。
シリアル通信の設定でできるのですね。理解していませんでした。
ご指摘どおり、開発は困難に思われますが卒業研究なのでなんとか頑張ってみようと思います。
丁寧なご対応に感謝しております。ありがとうございました。
No.1
- 回答日時:
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の送受信の経験がないとかなり大変だとは思います。
>equinox2さん
ご丁寧なアドバイスありがとうございます。
ご指摘どうり、http://freshmeat.net/projects/libvisca/?branch_i …にもlibviscaがwindowsに対応しているようなことが書かれていました。
前回の質問で書けばよかったのですが、私が作りたいシステムの全体像は、
SonyのEVI-D100にwebカメラで撮影した画像の情報(座標など)を送り、それによってEVI-D100を制御するというものです。
>RS-232Cでコントロールしているようなので、ライブラリに頼らずコマンド送信を製作するならVBなどが制御し易いかも。
本当に初心者なのでVBに関して全くわからないのですが、VBでも今回私が考えているようなものは作成可能なのでしょうか?
本当に初歩的な質問ですいません。よろしくお願いします。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・14歳の自分に衝撃の事実を告げてください
- ・架空の映画のネタバレレビュー
- ・「お昼の放送」の思い出
- ・昨日見た夢を教えて下さい
- ・【お題】絵本のタイトル
- ・【大喜利】世界最古のコンビニについて知ってる事を教えてください【投稿~10/10(木)】
- ・メモのコツを教えてください!
- ・CDの保有枚数を教えてください
- ・ホテルを選ぶとき、これだけは譲れない条件TOP3は?
- ・家・車以外で、人生で一番奮発した買い物
- ・人生最悪の忘れ物
- ・【コナン30周年】嘘でしょ!?と思った○○周年を教えて【ハルヒ20周年】
- ・ハマっている「お菓子」を教えて!
- ・最近、いつ泣きましたか?
- ・夏が終わったと感じる瞬間って、どんな時?
- ・10秒目をつむったら…
- ・人生のプチ美学を教えてください!!
- ・あなたの習慣について教えてください!!
- ・牛、豚、鶏、どれか一つ食べられなくなるとしたら?
- ・都道府県穴埋めゲーム
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
プレイステーション、任天堂64...
-
VT-dの有無で何が変わる?
-
PCによってエクセル関数が出...
-
インテルに続き、AMDまでもCPU...
-
「H/W」,[S/W」,「N...
-
リリースノートってどういう意...
-
iPhone「 iCloud 写真 アップデ...
-
iPhoneのスクリーンタイムの履...
-
配布○という言葉について
-
ツールとアプリの違い
-
pdfファイルにAcrobatで入力し...
-
ソフトウェアとOSの違いがイマ...
-
人体骨格などのデジタルイラス...
-
ライティングソフトの競合
-
ハードウェアインターフェイス
-
iPhoneのソフトウェアアップデ...
-
iPhone11は5Gに非対応と聞いた...
-
縦横比率を維持してスクリーン...
-
タスク バーと [スタート] メニ...
-
"C:\\Windows" フォルダに「ミ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
プレイステーション、任天堂64...
-
ポケモンの開発言語
-
Google検索のXMLの取得方法
-
任天堂DSソフトの開発言語
-
教えて下さい
-
Green Field Deployment の...
-
VB.netでPocketPCアプリ開発
-
.NETでWEB開発するにあたり、必...
-
.NET2003 C#でQRコード
-
『GetDlgItemText』について
-
TextBoxの表示、非表示
-
ActionScript3.0の記述。Flash...
-
.NETと.NET Frameworkの違い
-
電話番号の取得
-
VB6の開発環境確認
-
【初心者です】VB.NETとASP.NET...
-
ASP.NETのWebアプリをVBで開発...
-
このアイデアを商品化したい
-
sony EVI-D100をパソコンで制御...
-
オープンオフィスとリブレオフ...
おすすめ情報