나는 라즈베리 파이를 가지고 있으며 gpio 핀 중 하나에 펄스를 보내고 있습니다. 따라서이 핀에서 인터럽트를 감지하는 파이썬 코드가 있으며 매초 최대 2 회의 인터럽트가 발생합니다. 이제 파이 게임 응용 프로그램에이 값 (인터럽트의 총 개수)을 전달하려고합니다.파이 게임에서 스레딩 사용
현재 인터럽트를 감지하는 파이썬 코드는 총 번호를 기록합니다. 인터럽트가 감지되면 파일에 인터럽트 한 다음 파이 게임 응용 프로그램이 파일에서 해당 번호를 읽습니다. 따라서 파이 게임 응용 프로그램과 인터럽트 감지 코드가 병렬로 실행되기를 원하기 때문에 스레드를 사용하여 파이 게임에서 인터럽트 감지 코드를 어떻게 통합 할 수 있습니까? 나는 파이 게임이 쓰레드에 안전하지 않은 곳을 읽었다.
인터럽트 검출 내 코드 :
GPIO.setmode(GPIO.BCM)
count = 0
GPIO.setup(2, GPIO.IN, pull_up_down=GPIO.PUD_UP)
def my_callback(channel):
file = open('hello.txt','w')
global count
count += 1
file.write(str(count))
GPIO.add_event_detect(2,GPIO.BOTH, callback=my_callback)
while True:
print "Waiting for input."
sleep(60)
GPIO.cleanup()
파이 게임 응용 프로그램 코드 :
pygame.init()
size=[640,640]
screen=pygame.display.set_mode(size)
pygame.display.set_caption("Test")
done=False
clock=pygame.time.Clock()
font = pygame.font.SysFont("consolas", 25, True)
frame_rate = 20
frame_count = 0
count = 0
while done == False:
for event in pygame.event.get(): # User did something
if event.type == pygame.QUIT: # If user clicked close
done=True # Flag that we are done so we exit this loop
pygame.quit()
sys.exit()
f = open("hello.txt", "r")
count = int(f.read())
output_string = "ACTUAL %s" %count
text = font.render(output_string,True,red)
screen.blit(text, [250,420])
frame_count += 1
clock.tick(frame_rate)
pygame.display.flip()
pygame.quit()
끄기 - 주제 : 반복 "hello.txt"개방에 대한 여러분의 코드 ... – martineau