NFCpy에 UI를 추가하고 싶습니다.
동기
리더 위에 뭔가 올리면 정보가 표시되는 것을 만들고 싶다.
예를 들어, 마약을 올리면 무엇에 사용할 것인지 표시되거나 여러 가지 사용할 수 있습니다.
구성
쉽게 할 수 있을까 생각했습니다만, 솜씨 부족 때문에 어려웠습니다
결과에서 말하면, UI와 Reader를 나누어, watchdog로 텍스트 감시해 변화가 있으면 내용을 읽는 방식으로 했습니다
안 되었던 것은, 1 파일로 같은 루프내에 쓰면 어느 쪽인가가 멈추는, Scocket 통신에서도 멈추었습니다
스크립트
실행 파일과 동일한 계층 구조에 temp/nfc.txt가 있으며,
Reader -> nfc.txt 쓰기
UI -> nfc.txt 감시 변화가 있으면 내용을 읽는다 tag1,2,3이면 대응한 정지화면을 표시
Reader
nfcsimple.pyimport nfc
import binascii
import sys
import os
globalDirpath = os.path.dirname(__file__)
txtpath = globalDirpath+'/temp/nfc.txt'
def on_connect(tag):
if tag.ndef:
if tag.ndef.length > 0:
print("NDEF Message:")
for i, record in enumerate(tag.ndef.records):
print(record.text) #tag1
with open(txtpath, mode='w') as f:
f.write(record.text)
return True
def main():
while True:
with nfc.ContactlessFrontend("usb") as clf:
rdwr = {
'on-connect': on_connect
}
clf.connect(rdwr=rdwr)
if __name__ == '__main__':
main()
우이
ui.pyimport pygame
import sys
import os
from pygame.locals import *
from watchdog.observers import Observer
from watchdog.events import FileSystemEventHandler
import threading
imgBtlBG = pygame.image.load("img/bg.jpg")
imgBtl1 = pygame.image.load("img/01.jpg")
imgBtl2 = pygame.image.load("img/02.jpg")
imgBtl3 = pygame.image.load("img/03.jpg")
globalDirpath = os.path.dirname(__file__)
dirpath = globalDirpath+'/temp/'
class ChangeHandler(FileSystemEventHandler):
isPlay = False
NfcTag = "None"
def StopOverlay(self):
self.isPlay = False
self.NfcTag = "None"
def on_modified(self, event):
filepath = event.src_path
filename = os.path.basename(filepath)
if filename=="nfc.txt":
with open(filepath) as f:
s = f.read()
print(s)
self.isPlay = True
self.NfcTag = s
t=threading.Timer(3,self.StopOverlay)
t.start()
event_handler = ChangeHandler()
observer = Observer()
observer.schedule(event_handler, dirpath, recursive=True)
observer.start()
def draw(bg):
global isPlay,NfcTag
if event_handler.isPlay:
if event_handler.NfcTag=="tag1":
bg.blit(imgBtl1, [0,0])
elif event_handler.NfcTag=="tag2":
bg.blit(imgBtl2, [0,0])
elif event_handler.NfcTag=="tag3":
bg.blit(imgBtl3, [0,0])
else:
bg.blit(imgBtlBG, [0, 0])
def main():
pygame.init()
pygame.display.set_caption("Title")
flags = pygame.DOUBLEBUF | pygame.HWSURFACE | pygame.FULLSCREEN
screen = pygame.display.set_mode((0, 0), flags)
clock = pygame.time.Clock()
while True:
for event in pygame.event.get():
if event.type == pygame.QUIT:
observer.stop()
observer.join()
pygame.quit()
sys.exit()
draw(screen)
pygame.display.update()
clock.tick(30)
if __name__ == '__main__':
main()
실행
cd/projectdir
python3 nfcsimple.py & python3 ui.py
gif
youtube 모든 패턴
태그에 쓰는 경우 여기
Reference
이 문제에 관하여(NFCpy에 UI를 추가하고 싶습니다.), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/im02kai/items/525d76cd7feeb3e82422
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
쉽게 할 수 있을까 생각했습니다만, 솜씨 부족 때문에 어려웠습니다
결과에서 말하면, UI와 Reader를 나누어, watchdog로 텍스트 감시해 변화가 있으면 내용을 읽는 방식으로 했습니다
안 되었던 것은, 1 파일로 같은 루프내에 쓰면 어느 쪽인가가 멈추는, Scocket 통신에서도 멈추었습니다
스크립트
실행 파일과 동일한 계층 구조에 temp/nfc.txt가 있으며,
Reader -> nfc.txt 쓰기
UI -> nfc.txt 감시 변화가 있으면 내용을 읽는다 tag1,2,3이면 대응한 정지화면을 표시
Reader
nfcsimple.pyimport nfc
import binascii
import sys
import os
globalDirpath = os.path.dirname(__file__)
txtpath = globalDirpath+'/temp/nfc.txt'
def on_connect(tag):
if tag.ndef:
if tag.ndef.length > 0:
print("NDEF Message:")
for i, record in enumerate(tag.ndef.records):
print(record.text) #tag1
with open(txtpath, mode='w') as f:
f.write(record.text)
return True
def main():
while True:
with nfc.ContactlessFrontend("usb") as clf:
rdwr = {
'on-connect': on_connect
}
clf.connect(rdwr=rdwr)
if __name__ == '__main__':
main()
우이
ui.pyimport pygame
import sys
import os
from pygame.locals import *
from watchdog.observers import Observer
from watchdog.events import FileSystemEventHandler
import threading
imgBtlBG = pygame.image.load("img/bg.jpg")
imgBtl1 = pygame.image.load("img/01.jpg")
imgBtl2 = pygame.image.load("img/02.jpg")
imgBtl3 = pygame.image.load("img/03.jpg")
globalDirpath = os.path.dirname(__file__)
dirpath = globalDirpath+'/temp/'
class ChangeHandler(FileSystemEventHandler):
isPlay = False
NfcTag = "None"
def StopOverlay(self):
self.isPlay = False
self.NfcTag = "None"
def on_modified(self, event):
filepath = event.src_path
filename = os.path.basename(filepath)
if filename=="nfc.txt":
with open(filepath) as f:
s = f.read()
print(s)
self.isPlay = True
self.NfcTag = s
t=threading.Timer(3,self.StopOverlay)
t.start()
event_handler = ChangeHandler()
observer = Observer()
observer.schedule(event_handler, dirpath, recursive=True)
observer.start()
def draw(bg):
global isPlay,NfcTag
if event_handler.isPlay:
if event_handler.NfcTag=="tag1":
bg.blit(imgBtl1, [0,0])
elif event_handler.NfcTag=="tag2":
bg.blit(imgBtl2, [0,0])
elif event_handler.NfcTag=="tag3":
bg.blit(imgBtl3, [0,0])
else:
bg.blit(imgBtlBG, [0, 0])
def main():
pygame.init()
pygame.display.set_caption("Title")
flags = pygame.DOUBLEBUF | pygame.HWSURFACE | pygame.FULLSCREEN
screen = pygame.display.set_mode((0, 0), flags)
clock = pygame.time.Clock()
while True:
for event in pygame.event.get():
if event.type == pygame.QUIT:
observer.stop()
observer.join()
pygame.quit()
sys.exit()
draw(screen)
pygame.display.update()
clock.tick(30)
if __name__ == '__main__':
main()
실행
cd/projectdir
python3 nfcsimple.py & python3 ui.py
gif
youtube 모든 패턴
태그에 쓰는 경우 여기
Reference
이 문제에 관하여(NFCpy에 UI를 추가하고 싶습니다.), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/im02kai/items/525d76cd7feeb3e82422
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
import nfc
import binascii
import sys
import os
globalDirpath = os.path.dirname(__file__)
txtpath = globalDirpath+'/temp/nfc.txt'
def on_connect(tag):
if tag.ndef:
if tag.ndef.length > 0:
print("NDEF Message:")
for i, record in enumerate(tag.ndef.records):
print(record.text) #tag1
with open(txtpath, mode='w') as f:
f.write(record.text)
return True
def main():
while True:
with nfc.ContactlessFrontend("usb") as clf:
rdwr = {
'on-connect': on_connect
}
clf.connect(rdwr=rdwr)
if __name__ == '__main__':
main()
import pygame
import sys
import os
from pygame.locals import *
from watchdog.observers import Observer
from watchdog.events import FileSystemEventHandler
import threading
imgBtlBG = pygame.image.load("img/bg.jpg")
imgBtl1 = pygame.image.load("img/01.jpg")
imgBtl2 = pygame.image.load("img/02.jpg")
imgBtl3 = pygame.image.load("img/03.jpg")
globalDirpath = os.path.dirname(__file__)
dirpath = globalDirpath+'/temp/'
class ChangeHandler(FileSystemEventHandler):
isPlay = False
NfcTag = "None"
def StopOverlay(self):
self.isPlay = False
self.NfcTag = "None"
def on_modified(self, event):
filepath = event.src_path
filename = os.path.basename(filepath)
if filename=="nfc.txt":
with open(filepath) as f:
s = f.read()
print(s)
self.isPlay = True
self.NfcTag = s
t=threading.Timer(3,self.StopOverlay)
t.start()
event_handler = ChangeHandler()
observer = Observer()
observer.schedule(event_handler, dirpath, recursive=True)
observer.start()
def draw(bg):
global isPlay,NfcTag
if event_handler.isPlay:
if event_handler.NfcTag=="tag1":
bg.blit(imgBtl1, [0,0])
elif event_handler.NfcTag=="tag2":
bg.blit(imgBtl2, [0,0])
elif event_handler.NfcTag=="tag3":
bg.blit(imgBtl3, [0,0])
else:
bg.blit(imgBtlBG, [0, 0])
def main():
pygame.init()
pygame.display.set_caption("Title")
flags = pygame.DOUBLEBUF | pygame.HWSURFACE | pygame.FULLSCREEN
screen = pygame.display.set_mode((0, 0), flags)
clock = pygame.time.Clock()
while True:
for event in pygame.event.get():
if event.type == pygame.QUIT:
observer.stop()
observer.join()
pygame.quit()
sys.exit()
draw(screen)
pygame.display.update()
clock.tick(30)
if __name__ == '__main__':
main()
cd/projectdir
python3 nfcsimple.py & python3 ui.py
gif
youtube 모든 패턴
태그에 쓰는 경우 여기
Reference
이 문제에 관하여(NFCpy에 UI를 추가하고 싶습니다.), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/im02kai/items/525d76cd7feeb3e82422
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
태그에 쓰는 경우 여기
Reference
이 문제에 관하여(NFCpy에 UI를 추가하고 싶습니다.), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/im02kai/items/525d76cd7feeb3e82422
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
Reference
이 문제에 관하여(NFCpy에 UI를 추가하고 싶습니다.), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/im02kai/items/525d76cd7feeb3e82422텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)