Вернуться   DreamBox Satellite Forum > Обсуждение > Dreambox DM 5xxx/7xxx/8xxx/9xxx > Developer board

Developer board Раздел для разработчиков софта

Ответ
 
Опции темы

Старый 04.01.2012, 14:51   #31
Эксперт
 
Аватар для 2boom
 
2boom вне форума
Регистрация: 29.01.2010
Сообщений: 225
По умолчанию

Цитата:
Сообщение от Ligioner Посмотреть сообщение
Сделал два конвертора для внутренней флешки ресивера и для харда

Теперь бы ещё додуматься, как их в один конвертор объединить
помойму без особых проблем, кол-во параметров возрастет 2 или 3 раза типа

hddSIZE, flashSIZE, usbSIZE и т.д. хотя некошерно, но будет в одной куче....

но как помне лучше несколько отдельных конверторов, DiskInfo, UsbInfo, InFlashInfo .....

Последний раз редактировалось 2boom; 04.01.2012 в 14:54.
  Ответить с цитированием

Старый 04.01.2012, 15:08   #32
Эксперт
 
Аватар для Ligioner
 
Ligioner вне форума
Регистрация: 04.01.2010
Сообщений: 137
По умолчанию

Столкнулся с такой ситуацией, как на картинках
пришлось перекинуть 4 на 1 позицию тоесть что бы моунт пойнтс брало с конца и выводили в начало
На одном ресивере так а на другом по другому без девайса

Код:
info = "dev: %s  size: %s  used: %s  free: %s  uinp: %s" % (line.split()[4], line.split()[0], line.split()[1], line.split()[2], line.split()[3])
Оказалось, что fstab в одном ресивере Vu+Duo имидж Black Hole 1.6.6 такой
Код:
rootfs               /                    auto       defaults              1 1
proc                 /proc                proc       defaults              0 0
devpts               /dev/pts             devpts     mode=0620,gid=5       0 0
usbdevfs             /proc/bus/usb        usbfs      defaults              0 0
/dev/mtdblock2      /boot                jffs2      ro                    0 0
tmpfs                /var                 tmpfs      defaults              0 0
tmpfs                /tmp                 tmpfs      defaults              0 0
tmpfs                /dev/shm             tmpfs      mode=0777             0  0
#/dev/sda1            /media/hdd           auto       defaults              0 0
Во втором Дрим 800 домика9 такой
Код:
rootfs               /                    auto       defaults              1 1
proc                 /proc                proc       defaults              0 0
devpts               /dev/pts             devpts     mode=0620,gid=5       0 0
usbfs                /proc/bus/usb        usbfs      defaults              0 0
/dev/mtdblock2       /boot                jffs2      ro                    0 0
tmpfs                /var                 tmpfs      defaults              0 0
tmpfs                /tmp                 tmpfs      defaults              0 0
/dev/sda1            /media/hdd           auto       defaults              0 0
/dev/sdb1            /media/usb           auto       defaults              0 0
То есть это ни есть хорошо, если применять конвертор для разных ресов
Может быть line.split()[0] исключить совсем и оставить только line.split()[4] в начало первой, чтобы не было таких ситуаций
Изображения
Тип файла: jpg 9ae6bf349301.jpg (7.8 Кб, 19 просмотров)
Тип файла: jpg 38be039b5b6a.jpg (8.3 Кб, 16 просмотров)

Последний раз редактировалось Ligioner; 04.01.2012 в 15:36.
  Ответить с цитированием

Старый 04.01.2012, 15:32   #33
Эксперт
 
Аватар для maigais
 
maigais вне форума
Регистрация: 12.12.2008
Адрес: latvija
Сообщений: 2,120
Отправить сообщение для maigais с помощью Skype™
По умолчанию

ну и для усб тоже далжно вывадитса
и то меня заинтересовало
ну наконец кто то выложит что то
Изображения
Тип файла: jpg 2012-01-04_152738.jpg (14.1 Кб, 20 просмотров)
__________________
BlackHole-OE2.0,Tuner + ALINK DTU и Digital USB DVB-T HDTV TV Tuner Recorder Receiver , HDD TOSHIBA MK2552GSX 250gb,

Последний раз редактировалось maigais; 04.01.2012 в 15:40.
  Ответить с цитированием

Старый 04.01.2012, 15:40   #34
Специалист
 
Аватар для vlamo
 
vlamo вне форума
Регистрация: 01.11.2007
Сообщений: 2,321
Отправить сообщение для vlamo с помощью ICQ
По умолчанию

Цитата:
Сообщение от Ligioner
Сделал два конвертора для внутренней флешки ресивера и для харда
Теперь бы ещё додуматься, как их в один конвертор объединить
Используйте более расширенную обработку типа конвертора. К примеру. где-то в скине:
Код:
<widget render="Label" ... еще какие-то атрибуты... >
	<convert type="MyHardInfoConverter">/media/hdd:ALL</convert>
</widget>

<widget render="Label" ... еще какие-то атрибуты... >
	<convert type="MyHardInfoConverter">/dev/root:ALL</convert>
</widget>
А в MyHardInfoConverter.py что-то приблизительно такое:
Код:
class MyHardInfoConverter(Converter):
	DEVICE = 0
	SIZE = 1
	USED = 2
	FREE = 3
	PERCENT = 4
	POINT = 5
	ALL = 6
	def __init__(self, type):
		Converter.__init__(self, type)
		if ":" in type:
			(self.device, type) = type.split(":")
		else:
			self.device = "/dev/root"
		
		if type == "DEVICE":
			self.type = self.DEVICE
		elif type == "SIZE":
			self.type = self.SIZE
		elif type == "USED":
			self.type = self.USED
		elif type == "FREE":
			self.type = self.FREE
		elif type == "PERCENT":
			self.type = self.PERCENT
		elif type == "POINT":
			self.type = self.POINT
		else:
			self.type = self.ALL

# ну и дальше уже где-то в обработчике инфы:
		try:
			fd = os.popen("df -h | grep  %s"%(self.device))
			line = fd.readline()
			fd.close()
		except:
			line = None
		
		if line is not None:
			list = line.split()
			if self.type == self.DEVICE:
				return list[0]
			elif self.type == self.SIZE:
				return list[1]
			elif self.type == self.USED:
				return list[2]
			elif # и так далее...
Только хочу заменить, вы с 2boom делаете в принципе одно и тоже.
Может вам как-бы объеденить ваши усилия в один проект?
__________________
  • DM600PVR: Gemini 4.70, mgcamd_1.35/mpcs_16e, HDD 160GB
  • ET9200: Image: OpenPLi 3.0; oscam 1830; HDD 160GB
  Ответить с цитированием

Старый 04.01.2012, 16:33   #35
Эксперт
 
Аватар для 2boom
 
2boom вне форума
Регистрация: 29.01.2010
Сообщений: 225
По умолчанию

vlamo, про расширеную обработку такого нигде не встречал, спасибо, решает некоторые вопросы которые я откладывал на потом....

по поводу объединятся, сорри я лучше отойду в сторону, займусь другими делами....
  Ответить с цитированием

Старый 06.01.2012, 11:38   #36
Эксперт
 
Аватар для Ligioner
 
Ligioner вне форума
Регистрация: 04.01.2010
Сообщений: 137
По умолчанию

vlamo скажите плиз... реально ли выводить динамику

Я имею ввиду команду top


Или может есть какая нибудь команда выводящая подобную инфу, как в красной рамке
  Ответить с цитированием

Старый 06.01.2012, 20:09   #37
Эксперт
 
nikolasi вне форума
Регистрация: 09.01.2007
Сообщений: 234
По умолчанию

Владимир а в чем то проблема?Тор автоматом обновляетса впиши его в рендер или конвертер ну а если не устраивает-сделай через пол интервал
  Ответить с цитированием

Старый 08.01.2012, 15:25   #38
Эксперт
 
Аватар для Ligioner
 
Ligioner вне форума
Регистрация: 04.01.2010
Сообщений: 137
По умолчанию

Цитата:
Сообщение от nikolasi Посмотреть сообщение
Владимир а в чем то проблема?Тор автоматом обновляетса впиши его в рендер или конвертер ну а если не устраивает-сделай через пол интервал

nikolasi
сделал, но рес с ума сходит от команды top
Сделал по другому через команду top -n 1|head -2|tail -1 всё равно тяжеловато это всё

Код:
    def getCpuAll(self):
    self.poll_interval = 5000
    self.poll_enabled = True
        textvalue = "No info"
    cpual = "0"
    try:
        out_line = popen("top -n 1|head -2|tail -1").readline()
        cpual = out_line[0:76]
        textvalue = cpual
    except:
        pass
        return textvalue
vlamo помогите плиз...

Что сделать, чтобы в зелёнку не кидало, если нет флешки в ресивере
А так всё чудно работает

Код:
from enigma import iServiceInformation
from Components.Converter.Converter import Converter
from Components.Element import cached
import os

class USBInfo(Converter, object):
    xDEV = 1
    xSIZE = 2
    xUSED = 3
    xFREE = 4
    xUINP = 5
    xALL = 6

    def __init__(self, type):
        Converter.__init__(self, type)
        self.type = {
                            "xDEV": (self.xDEV),
                    "xSIZE": (self.xSIZE),
                            "xUSED": (self.xUSED),
                "xFREE": (self.xFREE),
                "xUINP": (self.xUINP),
                "xALL": (self.xALL),
                            }[type]

    @cached
    def getText(self):
        service = self.source.service
        info = service and service.info()
        try:
            dfread = os.popen("df -h | grep /media/usb")
        except:
            return None

        if dfread is not None:
            for line in dfread:
                if self.type == self.xSIZE:
                    try:
                        info = line.split()[1]
                    except:
                        return None
                elif self.type == self.xUSED:
                    try:
                        info = line.split()[2]
                    except:
                        return None
                elif self.type == self.xFREE:
                    try:
                        info = line.split()[3]
                    except:
                        return None
                elif self.type == self.xUINP:
                    try:
                        info = line.split()[4]
                    except:
                        return None
                elif self.type == self.xDEV:
                    try:
                        info = line.split()[5]
                    except:
                        return None
                elif self.type == self.xALL:
                    try:
                        info = "dev: %s  size: %s  used: %s  free: %s  uinp: %s" % (line.split()[5], line.split()[1], line.split()[2], line.split()[3], line.split()[4])
                                        except:
                        return None
            return info
        else:
            return ""

    text = property(getText)
  Ответить с цитированием

Старый 08.01.2012, 15:46   #39
Эксперт
 
nikolasi вне форума
Регистрация: 09.01.2007
Сообщений: 234
По умолчанию

в зелень вгонит если текста нет.Впиши info = "no info" или другой текст на свой вкус..
  Ответить с цитированием

Старый 08.01.2012, 15:48   #40
Эксперт
 
Аватар для Ligioner
 
Ligioner вне форума
Регистрация: 04.01.2010
Сообщений: 137
По умолчанию

Цитата:
Сообщение от nikolasi Посмотреть сообщение
в зелень вгонит если текста нет.Впиши info = "no info" или другой текст на свой вкус..
Я вписывал info = "No usb" , не отображает информацию выводит только No usb с вставленной флешкой и конечно же без флешки не кидает в зелёнку

Последний раз редактировалось Ligioner; 08.01.2012 в 15:59.
  Ответить с цитированием

Старый 08.01.2012, 19:26   #41
Эксперт
 
nikolasi вне форума
Регистрация: 09.01.2007
Сообщений: 234
По умолчанию

да ну....а как ты вписал и где именно?покажи кусок с конвертера
  Ответить с цитированием

Старый 09.01.2012, 01:34   #42
Специалист
 
Аватар для vlamo
 
vlamo вне форума
Регистрация: 01.11.2007
Сообщений: 2,321
Отправить сообщение для vlamo с помощью ICQ
По умолчанию

Ligioner
Если не возражаете, пару замечаний.
1. Когда вы создаете файловый объект, используя ф-цию popen() (или внутреннюю open(), то в конечном счете в виртуальной памяти выделяется пространство, куда и проецируется объект файла. Поэтому, когда вам больше этот объект не нужен, необходимо обязательно уничножать его, чтоб очистить память. То есть, необходимо использовать ф-цию close(). Например:
Код:
data = [ ]
try:
	# открываем файл
	file = os.popen("cat /proc/mounts")
	# считываем инфу через readlines
	data = file.readlines()
	# уничтожаем объект, чтоб он не висел в памяти
	file.close()
except:
	print "error"

# обрабатываем полученные данные
for line in data:
	if line == "" # ....и так далее...
2. По-поводу юсб флешки.
Цитата:
vlamo помогите плиз...
Что сделать, чтобы в зелёнку не кидало, если нет флешки в ресивере
Неплохо было бы traceback посмотреть из крэшлога. Так тяжело понять, что в коде вызывает сбой.
И обратите внимание, ф-ция называется getText, значит логично предположить, что она должна возвращать текстовую строку, не число, не None, не что-либо другое, а именно строку.

3. Не мучайтесь с тулзой top, она так спрограмирована, чтобы висеть в фореграунде постоянно. Закрыть ее можно - либо клавишей Q, либо послав терминирующий сигнал.

Вообще, вам надо именно вся инфа по процессору(ам) или или достаточно будет текущей загрузки процессора(ов) в процентах?
Почему спрашиваю? Просто, когда вы первый раз спросили, я написал небольшой простенький конвертор по cpu usage, потом отвлекли меня, занялся другими вещами. Если вылаживать, то он еще не закончен, т.к. тема весьма объемная и совсем непонятно зачем (кому) нужна инфа, например, по процессорному времени используемому системой, пользовательскими программами или еще веселей - iowait или softirq?

Но вообще забавно получается. Я никогда особо не интересовался загрузкой процессора, а сейчас используя конвертер на dm500hd при обычном просмотре каналов процессор грузится не больше трех - четырех процентов, когда срабатывает бегущий текст в инфобаре - до 20%.
__________________
  • DM600PVR: Gemini 4.70, mgcamd_1.35/mpcs_16e, HDD 160GB
  • ET9200: Image: OpenPLi 3.0; oscam 1830; HDD 160GB

Последний раз редактировалось vlamo; 09.01.2012 в 01:48.
  Ответить с цитированием

Старый 09.01.2012, 02:01   #43
Специалист
 
Аватар для vlamo
 
vlamo вне форума
Регистрация: 01.11.2007
Сообщений: 2,321
Отправить сообщение для vlamo с помощью ICQ
По умолчанию

Ага, понял.
Очевидно, сбой происходит, когда нет вставленной флешки в юсб из-за того, что переменная info не ициирована.
Т.е. надо сделать вот так:
Код:
    def getText(self):
        service = self.source.service
        info = service and service.info()
        try:
            dfread = os.popen("df -h | grep /media/usb")
        except:
            return None

        if dfread is not None:
            info = ""
            for line in dfread:
                if self.type == self.xSIZE:
                    try:
                        info = line.split()[1]
                    except:
                        return None
                elif self.type == self.xUSED:
                    try:
                        info = line.split()[2]
                    except:
                        return None
                elif self.type == self.xFREE:
                    try:
                        info = line.split()[3]
                    except:
                        return None
                elif self.type == self.xUINP:
                    try:
                        info = line.split()[4]
                    except:
                        return None
                elif self.type == self.xDEV:
                    try:
                        info = line.split()[5]
                    except:
                        return None
                elif self.type == self.xALL:
                    try:
                        info = "dev: %s  size: %s  used: %s  free: %s  uinp: %s" % (line.split()[5], line.split()[1], line.split()[2], line.split()[3], line.split()[4])
                                        except:
                        return None
            return info
        else:
            return ""

    text = property(getText)
__________________
  • DM600PVR: Gemini 4.70, mgcamd_1.35/mpcs_16e, HDD 160GB
  • ET9200: Image: OpenPLi 3.0; oscam 1830; HDD 160GB

Последний раз редактировалось vlamo; 09.01.2012 в 02:11.
  Ответить с цитированием

Старый 09.01.2012, 11:39   #44
Эксперт
 
Аватар для 2boom
 
2boom вне форума
Регистрация: 29.01.2010
Сообщений: 225
По умолчанию

vlamo, выкладывать нужно в качестве, примера, я тоже не знаю зачем оно нужно, пользователю... по поводу popen тоже интересный факт, нигде ни вкаких кодах не встречал, что бы закрывали и считал что делается автоматом, а все недостаток информации....
  Ответить с цитированием

Старый 09.01.2012, 11:44   #45
Эксперт
 
Аватар для Ligioner
 
Ligioner вне форума
Регистрация: 04.01.2010
Сообщений: 137
По умолчанию

Спасибо, разорался после фразы nikolasi
Цитата:
да ну....а как ты вписал и где именно?покажи кусок с конвертера
Допустил элементарную ошибку, не прописал букву о
Код:
         if dfread is not None:
                inf = "No usb"
                for line in dfread:
А в крашлоге не мог понять что ему надо
Код:
Traceback (most recent call last):
  File "/usr/lib/enigma2/python/Navigation.py", line 43, in dispatchEvent
    x(i)
  File "/usr/lib/enigma2/python/Components/PerServiceDisplay.py", line 17, in event
    func[1](ev)
  File "/usr/lib/enigma2/python/Components/Sources/CurrentService.py", line 23, in serviceEvent
    self.changed((self.CHANGED_SPECIFIC, event))
  File "/usr/lib/enigma2/python/Components/Element.py", line 86, in changed
    self.downstream_elements.changed(*args, **kwargs)
  File "/usr/lib/enigma2/python/Tools/CList.py", line 7, in __call__
    x(*args, **kwargs)
  File "/usr/lib/enigma2/python/Components/Element.py", line 86, in changed
    self.downstream_elements.changed(*args, **kwargs)
  File "/usr/lib/enigma2/python/Tools/CList.py", line 7, in __call__
    x(*args, **kwargs)
  File "/usr/lib/enigma2/python/Components/Renderer/Label.py", line 21, in changed
    self.text = self.source.text
  File "/usr/lib/enigma2/python/Components/VariableText.py", line 12, in setText
    self.instance.setText(self.message or "")
TypeError: in method 'eLabel_setText', argument 2 of type 'std::string const &'
Ещё такая ситуация
Обновил имидж пришлось конвертор редактировать
Код:
info = "dev: %s  size: %s  used: %s  free: %s  uinp: %s" % (line.split()[4], line.split()[0], line.split()[1], line.split()[2], line.split()[3])
Сейчас на новом Black Hole 1.7.0
Выводит так по команде df -h | grep /media/usb


А раньше на Black Hole 1.6.6 выводило в телнет вот так
Код:
/dev/sdb1    1.9G     20.0K    19G  0%   /media/usb
Естественно в коверторе было
Код:
info = "dev: %s  size: %s  used: %s  free: %s  uinp: %s" % (line.split()[5], line.split()[1], line.split()[2], line.split()[3], line.split()[4])
То есть на старом варианте конвертора вообще перестало, что то выводить

И перестала работать команда df -h | grep /dev/root ,тоже перестала температура выводится hddtemp -n -q /dev/sda пишет ноль
Что они там нагородили опять не понятно, вроде как новое ядро

Последний раз редактировалось Ligioner; 09.01.2012 в 12:35.
  Ответить с цитированием
Ответ

Закладки


Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
 
Опции темы

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход




Часовой пояс GMT +3, время: 12:53.


vBulletin skin developed by: eXtremepixels
Powered by vBulletin® Version 3.7.3
Copyright ©2000 - 2018, Jelsoft Enterprises Ltd. Перевод: zCarot


Спутниковое телевидение, оборудование для прима. Ресиверы Dreanbox Multimedia.
Самые актуальные обзоры новейших спутниковых ресиверов.