|
|||||
VBS(VB SCRIPT/WSH)で通信(RS232C TCPIP UDPIP)が出来るかどうかを試してみました。 試した方法はMSCommLib.MSCommやMSWinsock.WinsockをCreateObjectする方法です。 (注意) このサンプルはVB6の開発環境が無いと実行出来ません。(Visual Studio 6.0がインストールされていれば動きます) 64bit(x64)版のWINDOWSで標準のVB SCRIPTを実行するとCreateObjectでエラーが発生するため、 32bit(x86)版のVB SCRIPT(C:\Windows\SysWow64\cscript.exe)を実行してください。 このサンプルの実行結果は、RSC23Cは成功しましたがソケットの方は受信で失敗(送信は成功)してしまいました。 とりあえず、下のVBSサンプルソースを見てください。上手く行かない箇所にコメントを入れています。 ちなみに、次の方法ではVB6の開発環境が無くても全て成功します。 スクリプト通信テスト(RS232C/TCPIP/UDPIP)でVBS(WSH)のサンプルソース(コード)をダウンロード頂けます。 EXCEL通信テスト(RS232C/TCPIP/UDPIP)でエクセルVBAのサンプルソース(コード)をダウンロード頂けます。 通信(RS232C TCP/IP UDP/IP)関係のその他のツールやサンプルソース(コード)はこちらです。 通信ツール&サンプル(RS232C TCP/IP UDP/IP) ★VBSでRS232Cのサンプルソース ' COMポート設定 Set MSComm1 = CreateObject("MSCommLib.MSComm") MSComm1.CommPort = 11 MSComm1.Settings = "9600,N,8,1" ' COMポートオープン MSComm1.PortOpen = True ' データ送信 MSComm1.Output = "12345あいうえお" ' ACKまたはNAKを受信するまでまつ Do WScript.Sleep(1000) RcvDat = RcvDat & MSComm1.Input Loop While InStr(RcvDat, Chr(6)) <= 0 And _ InStr(RcvDat, Chr(21)) <= 0 ' 受信データ表示 MsgBox RcvDat ' COMポートクローズ MSComm1.PortOpen = False ★VBSでTCP/IPのサンプルソース ' TCP/IP接続 Set Winsock1 = CreateObject("MSWinsock.Winsock") Winsock1.Connect "127.0.0.1", 8888 ' TCP/IP接続待ち Do While Winsock1.State = 6 WScript.Sleep(1000) Loop ' データ送信 Winsock1.SendData "12345あいうえお" ' ACKまたはNAKを受信するまで待つ Do WScript.Sleep(1000) Winsock1.GetData rdat RcvDat = RcvDat & rdat ' ここでエラーになる!! Loop While InStr(RcvDat, Chr(6)) <= 0 And _ InStr(RcvDat, Chr(21)) <= 0 ' 受信データ表示 MsgBox RcvDat ' TCP/IP切断 Winsock1.Close ★VBSでUDP/IPのサンプルソース ' UDP/IP接続 Set Winsock1 = CreateObject("MSWinsock.Winsock") Winsock1.Protocol = 1 Winsock1.RemoteHost = "127.0.0.1" Winsock1.RemotePort = 8888 Winsock1.Bind 7777 ' UDP/IP接続待ち? Do While Winsock1.State = 6 WScript.Sleep(1000) Loop ' データ送信 Winsock1.SendData "12345あいうえお" ' ACKまたはNAKを受信するまで待つ Do WScript.Sleep(1000) Winsock1.GetData rdat ' データが受信出来ない!! RcvDat = RcvDat & rdat Loop While InStr(RcvDat, Chr(6)) <= 0 And _ InStr(RcvDat, Chr(21)) <= 0 ' 受信データ表示 MsgBox RcvDat ' UDP/IP切断 Winsock1.Close |