전체 글210 파이썬 바이너리파일 쓰기 -#7 이전 코드에 대한 최종 설명이다. 아두이노에서 정수, 실수, 실수해서 총 10바이트를 보낸다. 그것을 컴퓨터(원도우)에서 받는 코드 이다. 원도우에서 받는다면 데이터를 가공하거나 데이터베이스에 저장하기 용의 하다. 예를 들어 온도, 습도, 등등 여러개의 값을 아두이노에서 측정하고 혹은 여러군데서 측정하고 무선으로 컴퓨터에 보낸다. 혹은 라즈베리의 리눅서에 보낸다. 보낸 데이터를 저장하거나 활용하면 된다. 아두이노에서 측정한 데이터를 AI에 활용하거나 다양한 방법으로 활용 할 수가 있을것 이다. 마지막으로 데이터를 텍스트 문자열로 보내는것은 무지 피곤한일이다. 데이터 손실도 발생하거나 다시 분리하여 숫자로 만드는 작업 또한 귀찮은 일이다. 그렇게 떄문에 데이터 처리는 바이너리가 편하다고 할 수가 있다. 2021. 10. 3. 파이썬 바이너리파일 쓰기 -#6 마지막으로 주의 할것은 정수, 실수의 크기 이다. 보통 정수는 4바이트 이지만 아두이노 정수는 2바이트ㄷ, 실수는 4바이트 이다. 그렇기 때문에 파이썬 코드에서도 정확하게 맞게 작성해야 한다. 파이썬에서 시리얼 통신을 사용하기 위해서는 설치해야 한다. pip install pyserial #숫자 데이터를 읽고 쓰기 import struct import serial, time #원도우용으로 시리얼 포트를 연다. ser = serial.Serial(port = "com3", baudrate=9600, timeout=2) if (ser.isOpen() == False): ser.open() ser.flushInput() ser.flushOutput() try: while True: if ser.readable.. 2021. 10. 3. 파이썬 바이너리파일 쓰기 -#5 이제 바이너리 파일을 만들어서 쓰고, 읽어 보자. C에서 하는것과 같은 형식으로 정확히 만들어 지는지 확인 하자. #숫자 데이터를 읽고 쓰기 import struct #숫자 데이터를 파일에 읽고 쓰기 # writing data age = 1 # int height = 1024.0 # float weight = 768.0 # float data = struct.pack('=idd',age,height, weight) f = open('mydataid.bin','wb') f.write(data) f.close() # reading data f = open('mydataid.bin','rb') data = f.read() (age, height, weight) = struct.unpack('=idd', dat.. 2021. 10. 3. 파이썬 바이너리파일 쓰기 -#4 딱히 다 알아야 하는것은 아니지만, 문자, 정수, 실수 정도만 알면 될것 같다. 그리고 @, =의 차이 정도만 익혀 두자 import struct print(struct.calcsize('i')) print(struct.calcsize('d')) print(struct.calcsize('di')) print(struct.calcsize('id')) print(struct.calcsize('idd')) print('\n') print(struct.calcsize('=i')) print(struct.calcsize('=d')) print(struct.calcsize('=di')) print(struct.calcsize('=id')) print(struct.calcsize('=idd') 2021. 10. 3. 파이썬 바이너리파일 쓰기 -#3 이번에도 사족을 조금 넣는다면, 왜 파이썬이냐 할 수도 있다. 늙어서 노망이 난것도 아니고 30년 이상한 C++은 두고, 파이썬 코드냐 하는 질문을 할 수도 있다. .. 정답은 그렇다 늙어서 이다. 요즘은 C++로 코딩하는 자체가 귀찮다. 그래서 찾은것은 파이썬이다. 그렇다고 파이썬이 요술방방이는 아니다. 파이썬의 장점과 단점은 분명히 존재 한다. 두개의 언어를 모두 알고 있다면, 각각의 장점만 이용하면 된다. C++에 대한 의리는 개나 주고 필요하면 파이썬, C++ 이다. 하나도 어려운데 할 수있다. 물론이다. 정답은 없다. 단지 노력하고 공부할 뿐이다. 정답을 찾기 위해서 공부하고 노력할 뿐인것이다. #파일 곡명 확인하기 f = open("abc.mp3",'rb') f.seek(-128,2) # 끝에.. 2021. 10. 3. 파이썬 바이너리파일 쓰기 -#2 그러면 왜 이전 같은 상황을 고민하고 걱정해야 할까 ? 데이터 통신이다. 파이썬 코드로 작성한 코드를 파이썬 코드로 작성된곳으로 보낸다면 크게 문제가 안된다. C,C++로 작성된 코드를 C,C++로 작성된 코드롤 보낼떄도 문제가 되지 않는다. 그렇다면 상황은 이렇다. 파이썬으로 작성된 코드를 C로 보내거나, C언어로 작성된 코드를 파이썬 코드로 보낼떄가 문제가 된다. 물론 위의 상황은 문제가 안될수도 있다. 다 컴파일러, 파이썬 코드 버전을 무엇을 사용하느냐에 따라 다를수가 있다. 그러면 마이크로 컨트롤러인 아두이노로 보낼때는 과연 어떻게 될까 ? 원도우에서 visual c++로 작성된 데이터를 아두이노로 보낼때 그렇게 어렵지 않게 해결 했었다. 이번에 하고자 하는 내용은 원도우 파이썬 코도로 작성된 데.. 2021. 10. 3. 파이썬 바이너리파일 쓰기 -#1 먼저 사족으로 설명 한다면, 파이썬만의 문제는 아니다. 요즘 언어가 표준이 그렇게 가고 있기 떄문이다. 그렇다고 모든 언어가 표준을 따르면 인생이 괴롭지 않다. 왜 ...? 세상 사람들이 다 그렇게 하게 때문에 별 생각 없이 살아 가도 된다. 그렇지만 세상은 그렇게 만만하지 않다. 표준을 지키는 사람과 지키지 않는 사람으로 나누게 된다. 본격적으로 왜 이런 상황이 발생 했는지 않아 보자. struct Person { // 구조체 정의 char a; // 구조체 멤버 1 int b; // 구조체 멤버 2 }; 위와 같이 했을경우, 문자는 1바이트, 정수는 4바이트라고 하자 그러면 틀림 없이 5바이트가 정답이다. sizeof()로 계산 하면 5바이트가 아닌경우가 많다. 왜, 표준이 변했기 떄문이다. 그렇다고.. 2021. 10. 3. OpenAI GYM 아타리게임 코렙에서 돌리기 1. rom 파일은 구글드라이버를 통해서 수동으로 파일을 올렸다. 2. 나머지는 경로만 잘 지정하면 되는것 같다. 3. 구글 드라이버를 통해서 파일저장 관리까지 아주편하다. !pip install tensorflow==2.3.1 gym keras-rl2 gym[atari] !pip install gym[atari] !pip install atari-py from google.colab import drive drive.mount('/content/drive', force_remount=True) !python -m atari_py.import_roms 'drive/MyDrive/rom' import gym import random env = gym.make('SpaceInvaders-v0') height.. 2021. 8. 11. DQN 논문관련 유튜브자료 정리 https://youtu.be/36tvs0H2mww https://youtu.be/o5iIs70gSdQ https://youtu.be/p6aT2eIdVno https://youtu.be/S1Y9eys2bdg https://youtu.be/Fbf9YUyDFww https://youtu.be/ByB49iDMiZE 2021. 8. 8. 이전 1 ··· 3 4 5 6 7 8 9 ··· 24 다음