HSPポータル
サイトマップ お問い合わせ


HSPTV!掲示板


未解決 解決 停止 削除要請

2008
0522
DoubleQuoteRS-232CでDVDデッキを制御したい8解決


DoubleQuote

リンク

2008/5/22(Thu) 17:24:57|NO.15980

設備用のDVDデッキにtascam社から出ているDV-D01Uというものがあります。
以下より取扱説明書がDL出来ます。
http://www.tascam.jp/download2/index.php?cd=MDlEVjAxVUcwNQ==&kb=RFYtRDAxVQ==&no=0&nflg=1&md=&md3=&md4=&auth_flg=

こちらのDVDデッキにはRS-232C端子が付いており、PCからの制御が可能のようです。
そこで、HSPのcomport関係の命令を使って制御を行いたいと考えております。

先ほど記述させていただいたURLの取扱説明書の"第9章RS-232Cインターフェイス"を参考に
少なくとも再生、一時停止に関しては出来るようにしたいと考えております。

この取扱説明書を見るとコマンド構成は
再生
02h 3Eh 50h 4Ch 59h 63h 46h 57h 44h 20h 20h 20h 20h 20h 31h 37h 03h
>PLYcFWD(SP)(SP)(SP)(SP)(SP)17

となっています。
これを私ながらhspの命令で記述してみたところ、

#include "hspext.as" #define COM_PORT 1 onexit *exit comopen COM_PORT,"baud=9600 parity=N data=8 stop=1" if ( stat ) : dialog "COMポート"+COM_PORT+"が開けません。\nポート番号を確認してください!\n終了します",1 : end comput "PLYC FWD 17" : wait 3 stop *exit comclose end

このような形でよろしいのでしょうか?
実際にデッキに繋いでチェックしてみればいいのですが、諸事情で手もとにデッキがなく
実験する事が出来ません。

よろしくお願いいたします。


また、HSPによるRS-232C制御について参考になるページがありましたら一緒にご教授
ください。よろしくお願いいたします。



この記事に返信する


DoubleQuote

リンク

2008/5/22(Thu) 18:02:50|NO.15982

computcを使うのでしょうか?
自分なりに訂正してみました。いかがでしょうか?

最後に書いてあるhはどのように処理したら・・・?


#include "hspext.as" #define _computc(%1) computc %1 : wait 3 #define COM_PORT 1 onexit *exit comopen COM_PORT,"baud=9600 parity=N data=8 stop=1" if ( stat ) : dialog "COMポート"+COM_PORT+"が開けません。\nポート番号を確認してください!\n終了します",1 : end // PLAY _computc $02 _computc $3E _computc $50 _computc $4C _computc $59 _computc $63 _computc $46 _computc $57 _computc $44 _computc $20 _computc $20 _computc $20 _computc $20 _computc $20 _computc $31 _computc $37 _computc $03 stop *exit comclose end



f

リンク

2008/5/22(Thu) 18:15:07|NO.15983

そのまま文字列で扱おうとしたら、03hとか書けないから、素直にsdimで領域を確保して、
そこにpokeで書き込みをすれば良い。

チェックサムはpeekででも引っ張ってきて加算、結果をstrfで16進数文字列にして
strmidで後ろ2桁を拾ってきてこれをpokeしてやれば良い。


終端コードが03とか、面白いな。俺は初めて見た。



DoubleQuote

リンク

2008/5/22(Thu) 21:15:04|NO.15988

f様。
返信ありがとうございます。

教えていただいたとおり調整してみましたがpokeを行っても結果が変わりません。


poke tmp,0,"03h" computc tmp : wait 3 poke tmp,0,"P" computc tmp : wait 3
このような記述でよろしいのでしょうか?

#include "hspext.as" #define COM_PORT 1 onexit *exit comopen COM_PORT,"baud=9600 parity=N data=8 stop=1" if ( stat ) : dialog "COMポート"+COM_PORT+"が開けません。\nポート番号を確認してください!\n終了します",1 : end // PLAY sdim data data1 = "02h" , "3Eh" , "50h" , "4Ch" , "59h" , "63h" , "46h" , "57h" , "44h" , "20h" , "20h" , "20h" , "20h" , "20h" , "31h" , "37h" , "03h" data2 = "ST" , ">" , "P" , "L" , "Y" , "c" , "F" , "W" , "D" , " " , " " , " " , " " , " " , "1" , "7" , "end" repeat length(data1)-3 sdim tmp poke tmp,0,data1(cnt) computc tmp // dialog tmp wait 3 loop repeat 12,2 p += peek(data1(cnt),0) loop p = strf("%5x",p) p = strmid(p,-1,2) sdim tmp : poke tmp,0,strmid(p,0,1) : computc tmp : wait 3 sdim tmp : poke tmp,0,strmid(p,1,1) : computc tmp : wait 3 sdim tmp poke tmp,0,data1(16) computc tmp wait 3 stop *exit comclose end



DoubleQuote

リンク

2008/5/22(Thu) 21:57:08|NO.15993

全部十進数にそろえてみたのですがこれだといかがでしょうか


#include "hspext.as" #define COM_PORT 1 onexit *exit comopen COM_PORT,"baud=9600 parity=N data=8 stop=1" if ( stat ) : dialog "COMポート"+COM_PORT+"が開けません。\nポート番号を確認してください!\n終了します",1 : end // PLAY sdim data data1 = "02h" , "3Eh" , "50h" , "4Ch" , "59h" , "63h" , "46h" , "57h" , "44h" , "20h" , "20h" , "20h" , "20h" , "20h" , "31h" , "37h" , "03h" data11= "02" , "62" , "50" , "76" , "59" , "63" , "46" , "57" , "44" , "20" , "20" , "20" , "20" , "20" , "31" , "37" , "03" data2 = "ST" , ">" , "P" , "L" , "Y" , "c" , "F" , "W" , "D" , " " , " " , " " , " " , " " , "1" , "7" , "end" repeat length(data11) sdim tmp poke tmp,0,int(data11(cnt)) computc tmp // dialog tmp,,""+int(strmid(data1(cnt),0,2)) wait 3 loop *exit comclose end



GENKI

リンク

2008/5/22(Thu) 22:09:47|NO.15994

参考資料。
[RS232Cのアスキー文字]
http://hsp.tv/play/pforum.php?mode=pastwch&num=13223
なぜか検索かけてもうまくヒットしなかったので一応貼っときます。



GENKI

リンク

2008/5/22(Thu) 22:39:08|NO.15996

RS-232Cでコマンドを送る場合、computで全文字一度に送るのが普通だと思います。
02h〜03hまでをまとめて一度にcomputで送ってみてください。

それと、面倒な処理をされているようですが、マニュアルの「文字列のひみつ」を読んでみることをお勧めします。

sdim a, 5 poke a, 0, 0x50 ;16進数の表記はこうします。これも poke a, 1, 0x4c ;プログラミングマニュアル1・基本仕様ガイドの「式」を参照。 poke a, 2, 0x59 poke a, 3, 0x03 poke a, 4, 0x00 mes a sdim b, 5 b = "PLY" lb = strlen(b) poke b, lb, 0x03 poke b, lb+1, 0x00 if a = b : mes "同じ!" stop



DoubleQuote

リンク

2008/5/23(Fri) 01:22:56|NO.16005

なるほど!
出来そうです。これで試してみますね。ありがとうございます



DoubleQuote

リンク

2008/5/31(Sat) 00:27:14|NO.16328

無事、タスカムの本機でも動作させる事が出来ました。ありがとうございました。



ONION software Copyright 1997-2021(c) All rights reserved.