Rocket > BlueZone > EMReadScreen API メソッドがバッファ変数に値を格納しない
概要
BlueZoneソフトウェアが提供するEMReadScreenメソッドを使用して、RUBY langでBluezone画面から値を読み取ろうとしています。ただし、このメソッドはバッファ文字列の値を返しません。 VB スクリプトでは正常に動作しますが、Ruby では正常に動作します。
API ドキュメントへのリンク - https://www3.rocketsoftware.com/bluezone/help/v71/en/bzsh/default.htm#%2Fbluezone%2Fhelp%2Fv71%2Fen%2Fbzsh%2Fbzaa_aref_EMReadScreen.htm
コード:
require 'win32ole'
class Dummy
@system = WIN32OLE.new('BlueZone.System')
sleep 2
sessions = @system.Sessions
sleep 2
session = sessions.Open('path')
sleep 2
@system.WriteScreen("enter_screen", 18,40 ) # This one is working
sleep 4
@system.ReadScreen(@buffer_variable,05,18,40 ) # This line doesnt throw any error but buffer_varailble not storing any value.
sleep 2
puts @buffer_variable # returns nothing, expecting to store "enter"
end
解決策
一部の BlueZone 関数では、使用する前に変数を初期化する必要があります。 ReadScreen を呼び出す前に、 @buffer_variable を空の文字列に設定してみてください。
sleep 4
@buffer_variable = ""
@system.ReadScreen(@buffer_variable,05,18,40 )