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


HSPTV!掲示板


未解決 解決 停止 削除要請

2014
0214
ユウ遠隔LED点消灯のスクリプトの書き方2解決


ユウ

リンク

2014/2/14(Fri) 13:25:15|NO.59942

#include "pcbnet2.as"

title "UDPでリモートATコマンド送信"

onexit *bye

port = 3054
host = "xxx.xxx.xxx.xxx" ;送信先IPアドレス

ddim APIp,255
poke APIp,0,$42
poke APIp,1,$42
poke APIp,2,$00
poke APIp,3,$00
poke APIp,4,$00
poke APIp,5,$00
poke APIp,6,$02 ;リモートコマンド(リクエストする値)
poke APIp,7,$00 ;未使用
poke APIp,8,$01 ;フレームID(いつも0x00)
poke APIp,9,$02 ;値を変更する(0x02の場合すぐに書き込む)

; ここから下の値でポートをコントロールする
poke APIp,10,$44 ;D (変更するポートの先頭文字をASCCIで 44) S=53 W=57 ソフトリセット=FR
poke APIp,11,$33 ;3 (変更するポートの番号をASCCIで33) M=4D R=52 F=46

; ソフトリセットの場合は下の値は送信不要
poke APIp,12,$05 ;変更したい値(04の場合 Degital Low) Sleep ON=04 OFF=0
;ソフトリセット”FR ”の場合非送信

;送信データーセットここまで

button gosub "送信",*send

stop

*send
;UDPポートを開く

udpsock soc ;ポートが使用可能か調べる
if stat : dialog "ソケットの初期化に失敗しました。",1 : end ;ポートが使用不可なら終わる。
;ポートが使用可能
mes "データを送信します。"
udpsendto soc,host,port ;送信先は最初に "host"変数と"port"変数 で指定済みの値が入る
;データー送信
;udpput s,soc ; "udpput"の場合は変数 s 内値を文字列で送信する
udpsend APIp,0,13,soc ;実数型配列変数の先頭から13バイトをバイナリで UDP送信する
mes "データを送信しました。"
;データー送信ここまで

return


*bye
;ソケットを閉じて終了
mes "終了"
udpclose soc
end



この送信ボタンを押すと、poke APIp,12,$05の値になるのですが、もう一回押すとpoke APIp,12,$04になるように
はできませんか?要は送信先にはLEDがついているのですが、それを点・消灯したいのです。

ボタン1つで繰り返し点消灯出来るかたちがベストです。

あと、portとhostを実行結果上で入力フォームから入力できるようにはでませんでしょうか?ご教示よろしく
お願いします。



この記事に返信する


とおりすがり

リンク

2014/2/14(Fri) 15:39:29|NO.59946

お、欲が出てきましたね。その調子です。サンプルを作ったので参考にしてください。

この程度のことなら、一週間くらい勉強すれば自分でできるようになりますよ。早い人なら3日でできるかも。
初心者向けのHSPの本か、講座などをネットで探してやってみては?
(ここの掲示板に、答えてくれる人がいつもいるとは限りませんし。)

#include "pcbnet2.as"
title "UDPでリモートATコマンド送信" onexit *bye port = 3054 host = "xxx.xxx.xxx.xxx" ;送信先IPアドレス ddim APIp,255 poke APIp,0,$42 poke APIp,1,$42 poke APIp,2,$00 poke APIp,3,$00 poke APIp,4,$00 poke APIp,5,$00 poke APIp,6,$02 ;リモートコマンド(リクエストする値) poke APIp,7,$00 ;未使用 poke APIp,8,$01 ;フレームID(いつも0x00) poke APIp,9,$02 ;値を変更する(0x02の場合すぐに書き込む) ; ここから下の値でポートをコントロールする poke APIp,10,$44 ;D (変更するポートの先頭文字をASCCIで 44) S=53 W=57 ソフトリセット=FR poke APIp,11,$33 ;3 (変更するポートの番号をASCCIで33) M=4D R=52 F=46 ;送信データーセットここまで LED = 0 ;offなら0 onなら1 mes "送信先IPアドレス" objsize 200,26 input host mes "ポート" input port button gosub "送信",*send stop *send ;UDPポートを開く udpsock soc ;ポートが使用可能か調べる if stat : dialog "ソケットの初期化に失敗しました。",1 : end ;ポートが使用不可なら終わる。 ;ポートが使用可能 ;LED点灯・消灯 if LED == 0 { poke APIp,12,$05 LED = 1 } else { poke APIp,12,$04 LED = 0 } udpsendto soc,host,port ;送信先は最初に "host"変数と"port"変数 で指定済みの値が入る ;データー送信 ;udpput s,soc ; "udpput"の場合は変数 s 内値を文字列で送信する udpsend APIp,0,13,soc ;実数型配列変数の先頭から13バイトをバイナリで UDP送信する ;データー送信ここまで dialog "データを送信しました。",0 return *bye ;ソケットを閉じて終了 mes "終了" udpclose soc end



ユウ

リンク

2014/2/14(Fri) 16:08:52|NO.59947

なんか度々すみません。ありがとうございました!ネットでがんばります!



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