伝えにくく、少々、荒っぽい質問で大変失礼いたします。
何でもよいので、思えるご意見いただけると大変助かります。
PHPのexec()コマンドでコマンドライン引数を与えてpythonを実行してます
python側でsys.argvで受けて、この値を変数に入れたところ、python内で変数が使えません。
変数には値が入っています。
変数の利用先はあるAPIですので、このAPIとの関係が悪いのかとも思っています。
ちなみに同じ変数に直接値を入れると変数は使えます。
よろしくお願いします
python側 この変数が使えない pkno = sys.argv[1] tno = sys.argv[2] gno = sys.argv[3]
PHP側 $name = ('C:\"Program Files (x86)"\Python\python C:\Apache24\htdocs\mazak\mazak_python\test.py 1 2 3 exec($name);
以下のようにpython側で直接値を入れると変数は使える。 pkno = 0 tno = 119 gno = 0
追記
unsigned charへの変換方法がわかれば解決できそうですがどうすれば良いでしょうか?
追記2:もう少しコード流れ詳細を記載してみます
pkno = int(sys.argv[1]) #unsigned short gno = int(sys.argv[2]) #long name = sys.argv[3] #unsigned char ← これが問題 #構造体利用 set_data = sms.MAZ_TDALL() set_data.tdata[0].td_common.pkno = pkno set_data.tdata[0].td_common.gno = gno set_data.tdata[0].td_common.name = name ← これが問題 w_td = sdk.maz_set_tool_data(0, tno, set_data) ※構造体定義は下記のような感じ(抜粋) class MAZ_TD_COMMON(Structure): _fields_ = [("name", c_ubyte), ("pkno", c_ushort), ("gno", c_long), ※上記、利用先のmaz_set_tool_data関数 def maz_set_tool_data(self, head, tno, data): result_dict = { "status": None, "error": None } self.sdk.MazSetToolData.retype = c_int self.sdk.MazSetToolData.argtypes = ( c_ushort, c_ushort, c_ushort, POINTER(sms.MAZ_TDALL), POINTER(sms.MAZ_TD_ERRORALL)) error = sms.MAZ_TD_ERRORALL() result_dict["status"] = self.sdk.MazSetToolData( self.hndl, head, tno, byref(data), byref(error)) result_dict["error"] = error return result_dict
回答2件
あなたの回答
tips
プレビュー