|
|||||
スクリプト(VBS)を使用した簡単!! 通信テスト!! 対象プロトコルはRS232C、TCP/IP、UDP/IP!! (コマンドライン/バッチ可) ダウンロード RS232CのVBSサンプル TCP/IPのVBSサンプル UDP/IPのVBSサンプル その他の通信ツールはこちらです。通信ツール(RS232C TCP/IP UDP/IP) ==================================================================================================== 【タイトル 】スクリプト通信テスト(RS232C/TCPIP/UDPIP) 【Version 】3.0.0.8 【ファイル 】ScriptComTest.zip 【圧縮ファイルの中身】Rs232cTest.vbs (RS232C用のVBS通信テスト) VBSのサンプルソース 【圧縮ファイルの中身】TcpIpCTest.vbs (TCP/IP用のVBS通信テスト) VBSのサンプルソース(Client) 【圧縮ファイルの中身】TcpIpSTest.vbs (TCP/IP用のVBS通信テスト) VBSのサンプルソース(Server) 【圧縮ファイルの中身】UdpIpTest.vbs (UDP/IP用のVBS通信テスト) VBSのサンプルソース 【圧縮ファイルの中身】NonComSck.ocx (RS232C、TCP/IP、UDP/IP用のOCX) 【圧縮ファイルの中身】Rs232cTool.exe (RS232C用の評価ツール) 【圧縮ファイルの中身】TcpIpTool.exe (TCP/IP用の評価ツール) 【圧縮ファイルの中身】UdpIpTool.exe (UDP/IP用の評価ツール) 【圧縮ファイルの中身】ReadMe.txt 【必要ソフト (1)】MSCOMM32.OCXが入っているVB6ランタイム(RS232Cの時) 【必要ソフト (2)】MSWINSCK.OCXが入っているVB6ランタイム(TCP/IPまたはUDP/IPの時) 【必要ソフト (3)】EXCEL2000、EXCEL2003およびEXCEL2010で動作確認 【動作確認 】Windows8/Windows7/XP/2000 【ソフト種別 】フリーソフト(寄付歓迎) 【作者/著作権者 】のん 【作者への連絡先 】http://nonsoft.la.coocan.jp/ ==================================================================================================== 1.はじめに 本プログラムをダウンロード頂きまして誠にありがとうございます。 本プログラムは、スクリプト(VBS)を使用して電文の送受信テストを行なう通信テストツールです。 3つの通信プロトコル(RS232C、TCP/IP、UDP/IP)の通信テストが出来ます。 VBS(VB SCRIPT/WSH)で記述していますのでサンプルソースとしてもお試し頂けます。 <主な機能> 1.ポート接続(オープン) 2.ポート切断(クローズ) 3.データ送信(文字列送信/バイナリ(HEX指定)送信) 4.データ受信(文字列表示/バイナリ(HEX指定)表示) ※RS232Cの場合はDTR/RTSの制御およびDSR/CTSの確認を行う事が出来ます。 ※スクリプト通信テスト(RS232C/TCPIP/UDPIP)を評価するためのツールも同梱しています。 <関連ツール> EXCEL通信テスト(RS232C/TCPIP/UDPIP) ※VBA(EXCELやACCESS)で通信プログラミング EXCEL(VBA)を使用した簡単!! 通信テスト!! 対象プロトコルはRS232C、TCP/IP、UDP/IP!! 仮想シリアル(COMポート)ドライバ ※仮想(ボード無! コネクタ無! ケーブル無!) 2つの仮想COMポート(RS232Cシリアル)をクロスケーブルで接続したように通信するドライバ!! 2.インストール方法/アンインストール方法 事前に管理者として次のコマンド実行してください (参照)"事前に実行してください.bat" regsvr32.exe "NONCOMSCK.OCX" (注意)"NONCOMSCK.OCX"をフルPATHで指定してください 本プログラム一式を削除(アンインストール)する際は、 管理者として次のコマンドを実行してください。 regsvr32.exe /u "NONCOMSCK.OCX" (注意)64bit(x64)版のWINDOWSで標準のVB SCRIPTを実行するとCreateObjectでエラーが発生するため、 32bit(x86)版のVB SCRIPT(C:\Windows\SysWow64\cscript.exe)を実行してください。 3.著作権・ライセンス 本プログラムの全ての著作権は「のん」が所有しています。本プログラム一式を転載する場合は著作権所有 者の許可が必要となります。(NonSoft の紹介リンクは問題ありませんので宜しくお願いします)また、著作 権所有者が許可したサイトでのみダウンロードが可能となります。商用利用についての制限はありません。 本プログラムはフリーライセンス(寄付歓迎)です。 本プログラムを長期間使用される場合は、寄付やホームページ紹介等をしてください。 寄付はこちらでお願いします。http://nonsoft.la.coocan.jp/kifu.html 4.免責事項 本プログラムが原因による損害・問題に対し一切の責任を負えません。 ご利用者の責任の範囲内でお使いください。 5.作者への問合せについて 作者への問合せはメールのみとさせて頂きます。問合せ内容によっては回答出来ない場合もございますので 予めご了承願います。また、作者不在時または問い合わせ数が多い場合など、回答に日数がかかる場合がご ざいますので予めご了承願います。 <RS232CのVBSサンプル> '**************************************************************************** ' 機能名 : スクリプト通信テスト(RS232C) ' 機能説明 : スクリプト(VBS)を使用したRS232Cの通信テストツール ' 著作権 : Copyright(C) 2010 のん All rights reserved ' URL : http://nonsoft.la.coocan.jp/ ' : このソースを使用(流用/改変/転載/等全て)した成果物を不特定 ' : 多数に公開/配布する場合は、このソースを参考にした旨を記述 ' : してください。(例)WEBページやReadMeにURLのリンクを貼る等 ' 動作環境 : MSCOMM32.OCXが入っているVB6ランタイムが必要です。 ' : 事前に"regsvr32 NONCOMSCK.OCX"を実行してください。 '**************************************************************************** ' RS232C初期化 Set MSComm1 = CreateObject("NonComSck.MSComm") ' イベント開始 MSComm1.Start_EventForScript() ' RS232C設定 MSComm1.CommPort = 11 MSComm1.Settings = "9600,N,8,1" MSComm1.RThreshold = 1 ' RS232Cポートオープン MSComm1.PortOpen = True ' データ送信 ' HexToByteArrayでHEX文字列をByte配列変換してデータ送信 MSComm1.Output = MSComm1.HexToByteArray("02313233343503") WScript.Sleep(1000) ' データ送信 ' StrToByteArrayで通常文字列をByte配列変換してデータ送信 MSComm1.Output = MSComm1.StrToByteArray(Chr(2) & "ABCDE" & Chr(3)) ' OnCommのイベント番号定義 const comEvSend = 1 const comEvReceive = 2 const comEvCTS = 3 const comEvDSR = 4 const comEvCD = 5 const comEvRing = 6 const comEvEOF = 7 ' データ受信 Do WScript.Sleep(1000) Evt = MSComm1.GetEventParameters() If Ubound(Evt) >= 0 Then If Evt(0) = "OnComm" Then ' Evt(8) : OnCommのイベント番号(MSComm1.CommEvent) Select Case Evt(8) Case comEvReceive ' Evt(9) : 受信データ(Byte配列) ' ByteArrayToStrで受信データを通常文字列に変換 MsgBox MSComm1.ByteArrayToStr(Evt(9)) ' ByteArrayToHexで受信データをHEX文字列に変換 MsgBox MSComm1.ByteArrayToHex(Evt(9)) ' 通信終了電文チェック If MSComm1.ByteArrayToStr(Evt(9)) = "END" Then Exit Do End If Case comEvCTS MsgBox "CTS:" & MSComm1.CTSHolding MSComm1.RTSEnable = MSComm1.CTSHolding Case comEvDSR MsgBox "DSR:" & MSComm1.DSRHolding MSComm1.DTREnable = MSComm1.DSRHolding Case Else End Select End If End If Loop ' RS232Cポートクローズ MSComm1.PortOpen = False ' イベント終了 MSComm1.End_EventForScript() MsgBox "終了" <TCP/IP(クライアント)のVBSサンプル> '**************************************************************************** ' 機能名 : スクリプト通信テスト(TCP/IPクライアント) ' 機能説明 : スクリプト(VBS)を使用したTCP/IPの通信テストツール ' 著作権 : Copyright(C) 2010 のん All rights reserved ' URL : http://nonsoft.la.coocan.jp/ ' : このソースを使用(流用/改変/転載/等全て)した成果物を不特定 ' : 多数に公開/配布する場合は、このソースを参考にした旨を記述 ' : してください。(例)WEBページやReadMeにURLのリンクを貼る等 ' 動作環境 : MSWINSCK.OCXが入っているVB6ランタイムが必要です。 ' : 事前に"regsvr32 NONCOMSCK.OCX"を実行してください。 '**************************************************************************** ' TCP/IP初期化 Set Winsock1 = CreateObject("NonComSck.Winsock") ' イベント開始 Winsock1.Start_EventForScript() ' TCP/IP接続 Winsock1.Connect "127.0.0.1", 8888 ' TCP/IP接続待ち Do While Winsock1.State = 6 WScript.Sleep(1000) Loop ' データ送信 ' HexToByteArrayでHEX文字列をByte配列変換してデータ送信 Winsock1.SendData Winsock1.HexToByteArray("02313233343503") WScript.Sleep(1000) ' データ送信 ' StrToByteArrayで通常文字列をByte配列変換してデータ送信 Winsock1.SendData Winsock1.StrToByteArray(Chr(2) & "ABCDE" & Chr(3)) ' データ受信 Do WScript.Sleep(1000) Evt = Winsock1.GetEventParameters() If Ubound(Evt) >= 0 Then Select Case Evt(0) Case "Close2" MsgBox Evt(0) Exit Do Case "Connect" 'MsgBox Evt(0) Case "ConnectionRequest" 'MsgBox Evt(0) & ":" & Evt(1) Case "DataArrival" ' Evt(9) : 受信データ(Byte配列) ' ByteArrayToStrで受信データを通常文字列に変換 MsgBox Evt(0) & ":" & Evt(1) & ":" & Winsock1.ByteArrayToStr(Evt(9)) ' ByteArrayToHexで受信データをHEX文字列に変換 MsgBox Evt(0) & ":" & Evt(1) & ":" & Winsock1.ByteArrayToHex(Evt(9)) ' 通信終了電文チェック If Winsock1.ByteArrayToStr(Evt(9)) = "END" Then Exit Do End If Case "Error" 'MsgBox Evt(0) & ":" & Evt(1) & ":" & Evt(2) & ":" & Evt(3) & ":" & _ ' Evt(4) & ":" & Evt(5) & ":" & Evt(6) & ":" & Evt(7) Case "SendComplete" 'MsgBox Evt(0) Case "SendProgress" 'MsgBox Evt(0) & ":" & Evt(1) & ":" & Evt(2) Case Else End Select End If Loop ' TCP/IP切断 Winsock1.Close2 ' イベント終了 Winsock1.End_EventForScript() MsgBox "終了" <TCP/IP(サーバ)のVBSサンプル> '**************************************************************************** ' 機能名 : スクリプト通信テスト(TCP/IPサーバ) ' 機能説明 : スクリプト(VBS)を使用したTCP/IPの通信テストツール ' 著作権 : Copyright(C) 2010 のん All rights reserved ' URL : http://nonsoft.la.coocan.jp/ ' : このソースを使用(流用/改変/転載/等全て)した成果物を不特定 ' : 多数に公開/配布する場合は、このソースを参考にした旨を記述 ' : してください。(例)WEBページやReadMeにURLのリンクを貼る等 ' 動作環境 : MSWINSCK.OCXが入っているVB6ランタイムが必要です。 ' : 事前に"regsvr32 NONCOMSCK.OCX"を実行してください。 '**************************************************************************** ' TCP/IP初期化 Set Winsock1 = CreateObject("NonComSck.Winsock") ' イベント開始 Winsock1.Start_EventForScript() ' クライアントからの接続待ち Winsock1.LocalPort = 8888 Winsock1.Listen ' 接続待ち、データ送信、データ受信 Do WScript.Sleep(1000) Evt = Winsock1.GetEventParameters() If Ubound(Evt) >= 0 Then Select Case Evt(0) Case "Close2" MsgBox Evt(0) ' クライアントからの接続待ち(再) Winsock1.Close2 Winsock1.LocalPort = 8888 Winsock1.Listen Case "Connect" 'MsgBox Evt(0) Case "ConnectionRequest" ' クライアントからの接続を自動的に許可(Accept)する仕様 MsgBox Evt(0) & ":" & Evt(1) ' データ送信 ' HexToByteArrayでHEX文字列をByte配列変換してデータ送信 Winsock1.SendData Winsock1.HexToByteArray("02313233343503") WScript.Sleep(1000) ' データ送信 ' StrToByteArrayで通常文字列をByte配列変換してデータ送信 Winsock1.SendData Winsock1.StrToByteArray(Chr(2) & "ABCDE" & Chr(3)) Case "DataArrival" ' Evt(9) : 受信データ(Byte配列) ' ByteArrayToStrで受信データを通常文字列に変換 MsgBox Evt(0) & ":" & Evt(1) & ":" & Winsock1.ByteArrayToStr(Evt(9)) ' ByteArrayToHexで受信データをHEX文字列に変換 MsgBox Evt(0) & ":" & Evt(1) & ":" & Winsock1.ByteArrayToHex(Evt(9)) ' レスポンス送信 Winsock1.SendData chr(2) & "RESPONSE" & chr(3) ' 通信終了電文チェック If Winsock1.ByteArrayToStr(Evt(9)) = "END" Then Exit Do End If Case "Error" 'MsgBox Evt(0) & ":" & Evt(1) & ":" & Evt(2) & ":" & Evt(3) & ":" & _ ' Evt(4) & ":" & Evt(5) & ":" & Evt(6) & ":" & Evt(7) Case "SendComplete" 'MsgBox Evt(0) Case "SendProgress" 'MsgBox Evt(0) & ":" & Evt(1) & ":" & Evt(2) Case Else End Select End If Loop ' TCP/IP切断 Winsock1.Close2 ' イベント終了 Winsock1.End_EventForScript() MsgBox "終了" <UDP/IPのVBSサンプル> '**************************************************************************** ' 機能名 : スクリプト通信テスト(UDP/IP) ' 機能説明 : スクリプト(VBS)を使用したUDP/IPの通信テストツール ' 著作権 : Copyright(C) 2010 のん All rights reserved ' URL : http://nonsoft.la.coocan.jp/ ' : このソースを使用(流用/改変/転載/等全て)した成果物を不特定 ' : 多数に公開/配布する場合は、このソースを参考にした旨を記述 ' : してください。(例)WEBページやReadMeにURLのリンクを貼る等 ' 動作環境 : MSWINSCK.OCXが入っているVB6ランタイムが必要です。 ' : 事前に"regsvr32 NONCOMSCK.OCX"を実行してください。 '**************************************************************************** ' UDP/IP初期化 Set Winsock1 = CreateObject("NonComSck.Winsock") ' イベント開始 Winsock1.Start_EventForScript() ' UDP/IP設定 Winsock1.Protocol = 1 Winsock1.RemoteHost = "127.0.0.1" Winsock1.RemotePort = 8888 Winsock1.Bind 7777 WScript.Sleep(1000) ' データ送信 ' HexToByteArrayでHEX文字列をByte配列変換してデータ送信 Winsock1.SendData Winsock1.HexToByteArray("02313233343503") WScript.Sleep(1000) ' データ送信 ' StrToByteArrayで通常文字列をByte配列変換してデータ送信 Winsock1.SendData Winsock1.StrToByteArray(Chr(2) & "ABCDE" & Chr(3)) ' データ受信 Do WScript.Sleep(1000) Evt = Winsock1.GetEventParameters() If Ubound(Evt) >= 0 Then Select Case Evt(0) Case "Close2" 'MsgBox Evt(0) Case "Connect" 'MsgBox Evt(0) Case "ConnectionRequest" 'MsgBox Evt(0) & ":" & Evt(1) Case "DataArrival" ' Evt(9) : 受信データ(Byte配列) ' ByteArrayToStrで受信データを通常文字列に変換 MsgBox Evt(0) & ":" & Evt(1) & ":" & Winsock1.ByteArrayToStr(Evt(9)) ' ByteArrayToHexで受信データをHEX文字列に変換 MsgBox Evt(0) & ":" & Evt(1) & ":" & Winsock1.ByteArrayToHex(Evt(9)) ' 通信終了電文チェック If Winsock1.ByteArrayToStr(Evt(9)) = "END" Then Exit Do End If Case "Error" 'MsgBox Evt(0) & ":" & Evt(1) & ":" & Evt(2) & ":" & Evt(3) & ":" & _ ' Evt(4) & ":" & Evt(5) & ":" & Evt(6) & ":" & Evt(7) Case "SendComplete" 'MsgBox Evt(0) Case "SendProgress" 'MsgBox Evt(0) & ":" & Evt(1) & ":" & Evt(2) Case Else End Select End If Loop ' UDP/IP切断 Winsock1.Close2 ' イベント終了 Winsock1.End_EventForScript() MsgBox "終了" |