棒読みちゃんのステータス取得
hkr 2013/7/29(Mon) 21:19:27|NO.55966
過去ログ(http://goo.gl/3nbwsf)を基に棒読みちゃんとの連携を試しているのですが、
読み上げ文字列の送信は上手くできても、ステータスの取得(読み上げ状態、待ち行数等)
がうまくいかなくて困っています。
具体的にはPORT50001に対してSockmakeを掛けても、stat=3(Socketのバインドに失敗した)が
帰ってきて途方に暮れています。
どなたかうまく通信できてる方いらっしゃいますか?
(’’ 2013/7/30(Tue) 09:34:32|NO.55970
棒読みちゃんの仕様書に
・GetTaskCount(残りタスク数の取得)
送信データフォーマット
[0-1] 16bit コマンド(0x0130)
受信データフォーマット
[0-3] 32bit 残りタスク数
とあるので0x0130を送ってすぐ受信すればいけるのかと思いましたがいけません・・・
どこが悪いのでしょう
#include "hspsock.as"
#define GetNowPlaying 0x0120
#define GetTaskCount 0x0130
port=50001
text="こんにちは。HSP。"
speed = -1 ;標準の設定
tone = -1 ;標準の設定
volume = -1 ;標準の設定
voice = 0 ;0:棒読みちゃん画面上の設定、1:女性1、2:女性2、3:男性1、4:男性2、5:中性、6:ロボット、7:機械1、8:機械2、10001〜:SAPI5 だそう。
code = 2 ;0:UTF-8, 1:Unicode, 2:Shift-JIS
len = strlen(text) ;文字数
sdim buf, 15 ;ってもHSPの仕様上64byte確保されるけど。
wpoke buf, 0, $0001
wpoke buf, 2, speed
wpoke buf, 4, tone
wpoke buf, 6, volume
wpoke buf, 8, voice
poke buf,10, code
lpoke buf,11, len
sockopen 0, "localhost", port
sockputb buf, 0, 15, 0
sockput text, 0
;情報の取得
wait 10
sdim mpost,2
mpost=GetTaskCount
sdim mget,1
sockputb mpost,0,2,
sockgetb mget,0,1,0
wait 10
mes mget
sockclose
(’’ 2013/7/30(Tue) 09:55:08|NO.55971
ポートを解放してなくて送ったバイナリが前の命令の続きになっちゃってるだけでした
修正版
#include "hspsock.as"
#define GetNowPlaying 0x0120
#define GetTaskCount 0x0130
port=50001
text="こんにちは。HSP。"
speed = -1 ;標準の設定
tone = -1 ;標準の設定
volume = -1 ;標準の設定
voice = 0 ;0:棒読みちゃん画面上の設定、1:女性1、2:女性2、3:男性1、4:男性2、5:中性、6:ロボット、7:機械1、8:機械2、10001〜:SAPI5 だそう。
code = 2 ;0:UTF-8, 1:Unicode, 2:Shift-JIS
len = strlen(text) ;文字数
sdim buf, 15 ;ってもHSPの仕様上64byte確保されるけど。
wpoke buf, 0, $0001
wpoke buf, 2, speed
wpoke buf, 4, tone
wpoke buf, 6, volume
wpoke buf, 8, voice
poke buf,10, code
lpoke buf,11, len
sdim null,64
sockopen 0, "localhost", port
sockputb buf, 0, 15, 0
sockput text, 0
sockclose 0
;情報の取得
wait 100
sdim mpost,2
wpoke mpost,0,GetNowPlaying
sdim mget,1
sockopen 1, "localhost", port
sockputb mpost,0,2,1
sockgetb mget,0,1,1
sockclose 1
wait 10
mes "読み上げ状態:"+peek(mget,0)
詳しい事は仕様書(棒読みちゃんフォルダ\SampleSrc\SampleSrc.txt)に書いてあります
hkr 2013/7/30(Tue) 13:43:01|NO.55976
ありがとうございます!
sockopenで開いたソケットにはputしか出来ないと勘違いしていて、
一旦閉じてsockmakeし直してsockgetしようとしてましたー。