홈>
Windows 10에서 Choregraphe 2.1.4와 함께 nao 로봇을 사용하고 있습니다.
내 흐름도에는 동일한 데이터를 사용하는 여러 개의 상자가 있습니다. 처음으로 데이터를 사용하면 나중에 다음과 같이 메모리에 삽입됩니다.
self.memory = ALProxy("ALMemory") ... self.memory.insertData("dataKey", self.value)
두 위치에서 데이터에 액세스해야하므로 다음을 사용하고 있습니다.
self.memory = ALProxy("ALMemory") ... self.value = self.memory.getData("dataKey")
이 프로그램을 실행할 때 (프로그램이 시작되지 않더라도) 즉시 다음 오류가 발생합니다.
[ERROR] behavior.box :_safeCallOfUserMethod:281 _Behavior__lastUploadedChoregrapheBehaviorbehavior_1172060400__root__unknownProgramName_6__redMarkedBox_2: Traceback (most recent call last):
File "/usr/lib/python2.7/site-packages/naoqi.py", line 271, in _safeCallOfUserMethod
func()
File "<string>", line 12, in onLoad
File "/usr/lib/python2.7/site-packages/naoqi.py", line 301, in __call__
return self.__wrapped__.method_missing(self.__method__, *args, **kwargs)
File "/usr/lib/python2.7/site-packages/naoqi.py", line 371, in method_missing
raise e
RuntimeError: ALMemory::getData
ALMemory::getData
Data not found dataKey
내 흐름도에는 빨간색으로 표시된 두 번째 상자가 있습니다.
내 질문은 : 어떻게 메모리에서 데이터를 다시 얻을 수 있습니까?
또한 메모리에 두 번째로 데이터를 삽입하려고 시도했지만 아무런 변화가 없었습니다. 최근에 영향받은 박스에 출력 및 입력을 추가하여 필요한 데이터를 박스로 전송했습니다. 하지만 내 프로그램이 혼란스럽고 지저분 해지고 있습니다.
- 답변 # 1
여러 가지 가능성 :
휴식 시작 전에 어딘가에서 ALMemory.declareEvent를 사용하십시오 (또는 항상 깨끗한 슬레이트에서 시작하도록하는 좋은 기본값을 삽입하십시오).
데이터가 아직 삽입되지 않은 경우를 처리 할 수 있도록 try/except RuntimeError 문으로 ALMemory.getData 사용을 래핑하십시오
전화 함의where에도주의를 기울여야합니다. 상자의 .onLoad ()는 다이어그램이로드 될 때 입력이 트리거되기 전에 호출되므로 ALMemory를 읽으려는 코드가 거기에 있지만 그것을 쓰는 장소가 .onStart ()에 있으면 놀랍지 않습니다. 이 오류.