|
|
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制御について参考になるページがありましたら一緒にご教授
ください。よろしくお願いいたします。
|
|
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
|
|
2008/5/22(Thu) 18:15:07|NO.15983
そのまま文字列で扱おうとしたら、03hとか書けないから、素直にsdimで領域を確保して、
そこにpokeで書き込みをすれば良い。
チェックサムはpeekででも引っ張ってきて加算、結果をstrfで16進数文字列にして
strmidで後ろ2桁を拾ってきてこれをpokeしてやれば良い。
終端コードが03とか、面白いな。俺は初めて見た。
|
|
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
|
|
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
|
|
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
|
|
2008/5/23(Fri) 01:22:56|NO.16005
なるほど!
出来そうです。これで試してみますね。ありがとうございます
|
|
2008/5/31(Sat) 00:27:14|NO.16328
無事、タスカムの本機でも動作させる事が出来ました。ありがとうございました。
|
|