LINUX.ORG.RU

Сообщения varikayu574636

 

Автозапуск в графическом режиме.

Форум — General

На Raspberry Pi нужно при включении устройства запускать в графическом режиме программу. Я делал так:

sudo nano /etc/xdg/lxsession/LXDE-pi/autostart
Добавляю в конце строку
@lxterminal -e /home/pi/script.sh
Вот сам скрипт:
#!/bin/bash
### BEGIN INIT INFO
# Provides:          autostart.sh
# Required-Start:
# Required-Stop:
# Default-Start:     2 3 4 5
# Default-Stop:      1 0 6
# Short-Description: simple description.
### END INIT INFO
export USER='pi'
sudo python /home/pi/prog.py
exit 0

При включении устройства запускается LXTerminal, но в нем ничего не происходит. В чем может быть проблема?

 ,

varikayu574636
()

Проблема с автозапуском программы на Raspberry Pi

Форум — General

Есть программа, которая выводит список файлов на текстовый экран и листает его тактовыми кнопками. Нужно добавить ее в автозапуск. Выполняю эту последовательность команд:

sudo nano /etc/init.d/autostart.sh

Пишу скрипт:
#!/bin/bash
### BEGIN INIT INFO
# Provides:          autostart.sh
# Required-Start:
# Required-Stop:
# Default-Start:     2 3 4 5
# Default-Stop:      1 0 6
# Short-Description: simple description.
### END INIT INFO
export USER='pi'
sudo python /home/pi/prog21.py
exit 0

sudo chmod 755 /etc/init.d/autostart.sh

sudo update-rc.d autostart.sh defaults

Ответ:update-rc.d: using dependency based boot sequencing

insserv myscript

И ничего не происходит при запуске raspberry. Только исчезают черные квадраты из первой строчки, значит инициализация дисплея прошла. Но списка файлов нет. Программа нормально работает только при запуске вручную. Код программы на всякий случай:

#import
import RPi.GPIO as GPIO
import os
import socket
import fcntl
import struct
import time
from time import gmtime, strftime, sleep

directory = '/media/TRANSCEND'
files = os.listdir(directory) 
images = filter(lambda x: x.endswith('.jpg'), files)  

# Define GPIO to LCD mapping
LCD_RS = 7
LCD_E  = 8
LCD_D4 = 25
LCD_D5 = 24
LCD_D6 = 23
LCD_D7 = 18


# Define some device constants
LCD_WIDTH = 16    # Maximum characters per line
LCD_CHR = True
LCD_CMD = False

LCD_LINE_1 = 0x80 # LCD RAM address for the 1st line
LCD_LINE_2 = 0xC0 # LCD RAM address for the 2nd line

# Timing constants
E_PULSE = 0.0005
E_DELAY = 0.0005

def main():
  # Main program block
  
  GPIO.setwarnings(False)
  GPIO.setmode(GPIO.BCM)       # Use BCM GPIO numbers
  GPIO.setup(LCD_E, GPIO.OUT)  # E
  GPIO.setup(LCD_RS, GPIO.OUT) # RS
  GPIO.setup(LCD_D4, GPIO.OUT) # DB4
  GPIO.setup(LCD_D5, GPIO.OUT) # DB5
  GPIO.setup(LCD_D6, GPIO.OUT) # DB6
  GPIO.setup(LCD_D7, GPIO.OUT) # DB7


  # Initialise display
  lcd_init()
  i=0
  GPIO.setmode(GPIO.BCM)
  GPIO.setup(21, GPIO.IN, pull_up_down=GPIO.PUD_UP)
  GPIO.setup(16, GPIO.IN, pull_up_down=GPIO.PUD_UP)
  while True:
    try:
        if GPIO.input(21) == False:
          i=i+1
          j=i+1
          g=8
          if j < g:
            lcd_string(images[i], LCD_LINE_1)
            lcd_string(images[j], LCD_LINE_2)
          else:
            i = g - 2
            j = g - 1
            lcd_string(images[i], LCD_LINE_1)
            lcd_string(images[j], LCD_LINE_2)
        if GPIO.input(16) == False:
			i=i-1
			j=i+1
			k=abs(i)
				if k == i:
					lcd_string(images[i], LCD_LINE_1)
					lcd_string(images[j], LCD_LINE_2)
				else:
					i=0
					j=1
					lcd_string(images[i], LCD_LINE_1)
					lcd_string(images[j], LCD_LINE_2)
        sleep(0.2)
    except KeyboardInterrupt:
        exit()
		  
def lcd_init():
  # Initialise display
  lcd_byte(0x33,LCD_CMD) # 110011 Initialise
  lcd_byte(0x32,LCD_CMD) # 110010 Initialise
  lcd_byte(0x06,LCD_CMD) # 000110 Cursor move direction
  lcd_byte(0x0C,LCD_CMD) # 001100 Display On,Cursor Off, Blink Off
  lcd_byte(0x28,LCD_CMD) # 101000 Data length, number of lines, font size
  lcd_byte(0x01,LCD_CMD) # 000001 Clear display
  time.sleep(E_DELAY)

def lcd_byte(bits, mode):
  # Send byte to data pins
  # bits = data
  # mode = True  for character
  #        False for command

  GPIO.output(LCD_RS, mode) # RS

  # High bits
  GPIO.output(LCD_D4, False)
  GPIO.output(LCD_D5, False)
  GPIO.output(LCD_D6, False)
  GPIO.output(LCD_D7, False)
  if bits&0x10==0x10:
    GPIO.output(LCD_D4, True)
  if bits&0x20==0x20:
    GPIO.output(LCD_D5, True)
  if bits&0x40==0x40:
    GPIO.output(LCD_D6, True)
  if bits&0x80==0x80:
    GPIO.output(LCD_D7, True)

  # Toggle 'Enable' pin
  lcd_toggle_enable()

  # Low bits
  GPIO.output(LCD_D4, False)
  GPIO.output(LCD_D5, False)
  GPIO.output(LCD_D6, False)
  GPIO.output(LCD_D7, False)
  if bits&0x01==0x01:
    GPIO.output(LCD_D4, True)
  if bits&0x02==0x02:
    GPIO.output(LCD_D5, True)
  if bits&0x04==0x04:
    GPIO.output(LCD_D6, True)
  if bits&0x08==0x08:
    GPIO.output(LCD_D7, True)

  # Toggle 'Enable' pin
  lcd_toggle_enable()

def lcd_toggle_enable():
  # Toggle enable
  time.sleep(E_DELAY)
  GPIO.output(LCD_E, True)
  time.sleep(E_PULSE)
  GPIO.output(LCD_E, False)
  time.sleep(E_DELAY)

def lcd_string(message,line):
  # Send string to display


  message = message.ljust(LCD_WIDTH," ")

  lcd_byte(line, LCD_CMD)

  for i in range(LCD_WIDTH):
    lcd_byte(ord(message[i]),LCD_CHR)

if __name__ == '__main__':

  try:
    main()
  except KeyboardInterrupt:
    pass
  finally:
    lcd_byte(0x01, LCD_CMD)
    lcd_string("Goodbye!",LCD_LINE_1)
    GPIO.cleanup()

 

varikayu574636
()

Автоматический запуск терминала при старте ОС

Форум — General

Нужно чтобы при запуске ОС автоматически открывался терминал и в нем выполнялась команда на запуск программы. Каким образом это можно реализовать? Разрабатываю систему на основе Raspberry Pi. Желательно, чтобы эта система управлялась с помощью текстового дисплея и блока кнопок и не использовала традиционный монитор и клавиатуру.

 ,

varikayu574636
()

RSS подписка на новые темы