편집 기록

편집 기록
  • 프로필 nowp님의 편집
    날짜2020.07.06

    long long 변수와 unsigned int 변수를 python에 Return 받아야 하는데, 접근 개념을 모르겠습니다.


    안녕하세요.

    C++ 라이브러리에 GetData 함수를 통하여 필요한 데이터를 받고 있습니다. 제가 원하는 것은 새로운 함수를 추가하여 필요한 값 두 개를 더 받아야 합니다. 그 두 개는 C++ GetData 함수에서만 받을 수 있습니다. (Temp1, Temp2 값) 하지만, GetData 함수에서 Buffer를 리턴하고 있어서 해당 Temp1, Temp2 값을 리턴 받을 수 없습니다.

    그래서 생각한 방법이 Width, Height를 담을 전역변수를 선언하고 전역변수의 값을 다른 새로운 함수에 (GetTemp1, GetTemp2) return 하는 방식을 생각했습니다.

    메인 Python에서는 어차피 thread 내에서 GetData가 사이클 돌고 있기 때문에 GetTemp1, GetTemp2함수만 추가하면 되겠구나라고 했지만

    정상적으로 동작하지 않고 Kill 됩니다.

    설명을 더 자세하게 하기 위해 예로 호출되는 순서 로직을 설명하겠습니다.

    C++ 예

    long long m_dTemp1 = 0;
    unsinged int m_dTemp2 = 0;
    
    bool GetData()
    {
        ...
        ...
        mResult = Get.Buffe;
        m_dTemp1 = Get.Temp1;
        m_dTemp2 = Get.Temp2;
    
       return = mResult;
    
    }
    
    long long GetTemp1()
    {
        long long mTemp1 = m_dTemp1;
        return mTemp1;
    }
    
    unsigned int GetTemp2()
    {
        unsigned int mTemp2 = m_dTemp2;
        return mTemp2;
    }
    

    Python

    Thread 
    while True;
    
        mSuccess = Test.GetData(....)
    
        mTemp1 = Test.GetWidth        # long long  Temp1 얻기
        mTemp2 = Test.GetHieght       # unsigned int Temp2 얻기
    

    위 예로 로직을 구현하는데, long long, unsigned int 변수를 전역변수로 사용하면 보호받을 수 없는 것인지...

    제가 잘못 생각하고 있다면 틀린 부분을 수정 부탁드립니다.

  • 프로필 알 수 없는 사용자님의 편집
    날짜2020.07.06

    long long 변수와 unsigned int 변수를 python에 Return 받아야 하는데, 접근 개념을 모르겠습니다..


    안녕하세요.

    C++ 라이브러리에 GetData 함수를 통하여 필요한 데이터를 받고 있습니다. 제가 원하는 것은 새로운 함수를 추가하여 필요한 값 두 개를 더 받아야 합니다. 그 두 개는 C++ GetData 함수에서만 받을 수 있습니다. (Temp1, Temp2 값) 하지만, GetData 함수에서 Buffer를 리턴하고 있어서 해당 Temp1, Temp2 값을 리턴 받을 수 없습니다.

    그래서 생각한 방법이 Width, Height를 담을 전역변수를 선언하고 전역변수의 값을 다른 새로운 함수에(GetTemp1, GetTemp2) return 하는 방식을 생각했습니다.

    메인 Python에서는 어차피 thread 내에서 GetData가 사이클 돌고 있기 때문에 GetTemp1, GetTemp2함수만 추가하면 되겠구나라고 했지만

    정상적으로 동작하지 않고 Kill 됩니다...

    설명을 더 자세하게 하기 위해 예로 호출되는 순서 로직을 설명하겠습니다.

    C++ 예

    long long m_dTemp1 = 0; unsinged int m_dTemp2 = 0;

    bool GetData() { ... ... mResult = Get.Buffe; m_dTemp1 = Get.Temp1; m_dTemp2 = Get.Temp2;

    return = mResult;

    }

    long long GetTemp1() { long long mTemp1 = m_dTemp1; return mTemp1; }

    unsigned int GetTemp2() { unsigned int mTemp2 = m_dTemp2; return mTemp2; }

    Python

    Thread while True;

    mSuccess = Test.GetData(....)
    
    mTemp1 = Test.GetWidth        # long long  Temp1 얻기
    mTemp2 = Test.GetHieght       # unsigned int Temp2 얻기
    

    위 예로 로직을 구현하는데.. long long, unsigned int 변수를 전역변수로 사용하면 보호받을 수 없는 것인지...

    제가 잘못 생각하고 있다면 틀린 부분을 수정 부탁드립니다...