makeStream.py

overview

  • 같은 폴더에 있는 ‘test.yml’파일을 읽고 비트스트림을 만들어 시리얼 통신을 통해 아두이노로 보낸다.

  • 비트스트림은 MSB first 기준으로 만든다.

실행환경

  • 윈도우, python3, PyYAML모듈, PySerial모듈이 필요하다.

  • idle: 기본 python idle가능, vscode는 Python, Python for VSCode extension이 설치되어 있는 상황에서 실행함.

프로그램 실행 단계

step1

test.yml 파일 읽어오기

with open('test.yml') as bit:
stream = yaml.load(bit,Loader=yaml.FullLoader)
step2

시리얼 통신 연결 및 초기화

Serial( ‘COMx’, 115200 ) 에서 ‘COMx’값은 setup페이지에서 “시리얼 포트 설정” 항목 참조에서 확인하고 같은 값으로 바꿔준다.

ser = serial.Serial('COM4', 115200)
if ser.readable():
   ser.read() # to clear buffer
step3

test.yml 에서 읽어온 데이터로 비트스트림 생성 및 아두이노로 송신

for seg in stream[key].values():
    for i in range(0,8):
        bitStream[idx] = bitStream[idx] | (seg[i] << (7-i) )
    idx = idx + 1
...
ser.write(bitStream)
step4

올바른 데이터를 보냈는지 체크

compare = True
for i in range(0, datalen):
    if bitStream[ i+1 ] != receive[ i ]:
        compare = False
#if compare == true -> correct data
step5

아두이노에서 칩으로 데이터를 보냈는지 체크

if ser.in_waiting == 1:
    receive = ser.read()
    if receive[0] == 1:
        print("spi communication complete")
        readMode = 0
    else:
        print("error! something wrong between arduino and chip")
        print(receive[0])
        exit()
step6

모두 정상이면 step3으로 돌아가 반복