XMLRPC サーバーとクライアントを使用して、raspberry pi をコンピューターに接続し始めました。
私のサーバーは次のようになります。
from SimpleXMLRPCServer import SimpleXMLRPCServer
from SimpleXMLRPCServer import SimpleXMLRPCRequestHandler
import numpy as np
allow_reuse_address = True
ip = '...'
port = 8000
class RequestHandler(SimpleXMLRPCRequestHandler):
rpc_paths = ('/RPC2',)
server = SimpleXMLRPCServer((ip, port), requestHandler=RequestHandler)
server.register_introspection_functions()
def Spectrum():
data = ... # it's a numpy array
return data
server.register_function(Spectrum, 'Spectrum')
server.serve_forever()
私のクライアントは次のようになります。
#!/usr/bin/env python
import xmlrpclib
import numpy as np
[...]
def getSpectrum():
try:
s = xmlrpclib.ServerProxy(server)
v = s.Spectrum()
print v
except:
print "no data"
私のサーバーは稼働しており、私のテスト関数はそれが機能することを示しています。しかし、私の関数 getSpectrum() は常に例外をスローします。戻り値がnumpy配列ではなくfloatの場合、正常に機能することがわかりました。
def Spectrum():
data = ... # it's a numpy array
return float(data[0][0])
何が問題なのかわかりませんが、numpy 配列を返すことは可能だと思います。それを修正する方法を知っていますか?