[아이씨뱅큐 ICbanQ 파워블로거 2기] TFT-LCD에 X윈도우 없이 바로 창 띄우는 2가지 방법

 

 

[본 컨텐츠는 ICbanQ (아이씨뱅큐)에서 진행하는 파워블로거 활동의 일환으로아이씨뱅큐의 지원을 받아 작성되었습니다]


[ 사용한 품목 ]

 

- 라즈베리파이 B+, 로터리 엔코더 

- TFT-LCD

 

 

[ 내  용 ]

 

1. Python으로 작성한 Tkinter UI 띄우는 방법


  [목표] Python으로 작성안 GPIO제어 스위치 대화창을 TFT-LCD에 X윈도우 실행없이 바로 출력
    
    아래이 모든 작업은 /home/pi에 작성한다.  
    
       [ Tkinter UI파일 작성 후 저장]
$ sudo nano gui_switch.py

       -아래 파일 작성(라즈베리파이 쿡북 참조)-
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
from Tkinter import *
import RPi.GPIO as GPIO
import time
 
GPIO.setmode(GPIO.BCM)
GPIO.setup(18, GPIO.OUT)
 
class App:
    
    def __init__(self, master):
        frame = Frame(master)
        frame.pack()
        self.check_var = BooleanVar()
        check = Checkbutton(frame, text='Pin 18'
                 command=self.update,
                 variable=self.check_var, onvalue=True, offvalue=False)
        check.grid(row=1)
 
    def update(self):
        GPIO.output(18, self.check_var.get())
 
root = Tk()
root.wm_title('On / Off Switch')
app = App(root)
root.geometry("200x50+0+0")
root.mainloop()
 
 
cs
        
        [ start.sh 쉘스크립트 작성 ]
$ sudo nano start.sh
1
2
3
4
 
#!/bin/sh
openbox &
python /home/pi/gui_switch.py
cs
[ TFT-LCD에 띄우기 ]
$ sudo FRAMEBUFFER=/dev/fb1 xinit ./start.sh
       [인증 샷~~]



2. JAVA로 작성한 Swing UI로 띄우는 방법


  [목표]  java으로 작성안 UI 대화창을 TFT-LCD에 X윈도우 실행없이 바로 출력
    
    아래이 모든 작읍은 /home/pi에 작성한다.  
    
       [ Swing을 이용한 UI파일 작성 후 저장]
$ sudo nano hello.java

 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
import java.awt.BorderLayout;
import java.awt.Dimension;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JScrollPane;
import javax.swing.JTextArea;
import javax.swing.SwingUtilities;
 
/**
 */
public class hello extends JFrame 
    implements ActionListener{
 
    JTextArea textArea;
    JButton buttonHello;
     
    public static void main(String[] args) {
        SwingUtilities.invokeLater(new Runnable() {
            public void run() {
                createAndShowGUI();
            }
        });
    }
 
    private static void createAndShowGUI() {
        hello myFrame = new hello();
 
        myFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
         
        myFrame.prepareUI();
 
        myFrame.pack();
        myFrame.setVisible(true);
    }
     
    private void prepareUI(){
        textArea = new JTextArea();
        textArea.setEditable(false);
        JScrollPane panel = new JScrollPane(textArea);
        panel.setPreferredSize(new Dimension(300100));
         
        buttonHello = new JButton("Hello");
        buttonHello.addActionListener(this);
         
        getContentPane().add(panel, BorderLayout.CENTER);
        getContentPane().add(buttonHello, BorderLayout.PAGE_END);
    }
 
    @Override
    public void actionPerformed(ActionEvent e) {
        textArea.setText("Hello from Raspberry Pi");
    }
 
}
cs

        
        [ 컴파일 하기]
         hello.java파일이 있는 같은 폴더에서 실행
javac hello.java


        [ start.sh 쉘스크립트 작성 ]
$ sudo nano hello.sh
1
2
3
4
 
#!/bin/sh
openbox &
java hello
s
[ TFT-LCD에 띄우기 ]
$ sudo FRAMEBUFFER=/dev/fb1 xinit ./hello.sh
       [인증 샷~~]