Python pyads 설치(wstring 가져오기)

임재성·2024년 1월 20일

개요

  • 사내 프로젝트 진행중 TwinCAT에서 문자열데이터를 가져와야 하는 상황이 발생했다.
  • 기본적으로 ST언어에서는 string과 wstring 두 가지의 타입이 존재하는데,
    • string의 경우 1글자당 1byte로 계산되며 한글은 사용 불가하다.
    • wstring은 1글자당 2byte로 계산되며 한글과 같은 문자들도 사용 가능하다.

문제 발생

  • 기본적으로 python에서 TwinCAT의 데이터를 가져오기 위해서 ADS 통신을 사용하고, 이를 가능하게 해주는 pyads모듈을 사용한다.
  • 그런데 wstring을 가져오는 도중 문자열을 제대로 가져올 수 없는 문제가 발생하였다.
  • string의 경우 정상 작동하였지만 wstring만 문제가 있었다.

문제 원인

  • 처음 pyads 모듈 내부로 들어가 wstring 관련 내용을 찾아 보았지만, 타입이 정의는 되어있었으나 TwinCAT의 데이터를 python의 문자열 형태로 변환하는 부분의 구현이 되어있지 않았다.
  • 그래서 직접 wstring 데이터의 바이트 스트링을 보았고, 해당 문자열의 끝을 알려주는 문자가 빠져있다는 것을 발견하였다.

문제 해결

  • 이 후 문자열의 끝을 알려주는 바이트를 wstring 데이터의 끝에 임의로 붙여줌으로써 우리가 원하는 정상적인 문자열을 가져올 수 있었다.
  • 그런데 얼마 후 pyads 모듈에 대한 github 페이지를 보았는데, 해당 모듈이 수정되어 있는 것을 발견하였다.
  • 내가 프로젝트를 진행하였던 기간에 해당 모듈이 pip으로 다운 받을 수 없었기에 직접 다운받아 설치해 사용했어야 했으며, 정상 작동하는 것을 확인하였다.

pyads 설치

  • 해당 내용은 공식 Github에 올라와 있으니 확인 해보시면 되겠습니다.
    아래는 그 내용을 가져온 것 입니다.
git clone https://github.com/MrLeeh/pyads.git --recursive
cd pyads
python setup.py install
  • python setup.py install 내용을 가상환경에서 실행시 가상환경 내부에 설치되니 참고하시면 됩니다.
profile
조금씩 앞으로

0개의 댓글