Menu

Pokaż wiadomości

Ta sekcja pozwala Ci zobaczyć wszystkie wiadomości wysłane przez tego użytkownika. Zwróć uwagę, że możesz widzieć tylko wiadomości wysłane w działach do których masz aktualnie dostęp.

Pokaż wiadomości Menu

Wiadomości - mackal

#1
Zamieszczam razem ze wszystkimi moimi komentami powstałymi po różnych próbach i kombinacjach.
Poniższa wersja zwraca tablice jak w postach powyższej w formacie ASCII DEC

Problem rozwiązałem tak jak opisałem sprawę wyżej. Rozkodowuje całość w PHP ;)

W tym momencie można byłoby dla potomnych doprowadzić temat do postaci takiej, iż skrypt odczytuje, rozkodowuje i w postaci przyjemnej dla użytkownika przekazuje dalej GET'em albo w ogóle zapisuje bezpośrednio do bazy.
Oczywiście jako sztuka dla sztuki.



#!/usr/bin/python

import sys
import usb.core
import usb.util
import time

czas = time.time()
print czas
print ",152880"


dev = usb.core.find(idVendor=0x0403, idProduct=0x6001)

print dev

interface = 0
endpoint = dev[0][(0,0)][0]

if dev.is_kernel_driver_active(interface) is True:
  dev.detach_kernel_driver(interface)
  usb.util.claim_interface(dev, interface)
reads = 0

while reads < 3:
    try:

        data = dev.read(endpoint.bEndpointAddress,endpoint.wMaxPacketSize)

        reads += 1


#rxdata = ''.join([chr(x) for x in data])
#rxdata = ''.join(data)
#print rxdata
#print ---------

#       zmienna = ''
#       sekwencja = ("a", "b", "c")
        #print zmienna.join(sekwencja)
        #print zmienna
        #print sekwencja
        print data
#       print '------------------'

#               print time.localtime()

        #       print czas[3], ':', czas[4]

#       test = data[5]
#       print test

#               try:
#               for x in data:
#               print x, len(x)

#               except:
#                       print 'err'
#                       continue

#       print '------------------'
        #       plik64 = open("plik", "w")
        #       plik64.writelines(test)
        #       plik64.close()

    except usb.core.USBError as e:

        data = None
        if e.args == ('Timeout',):
            continue

usb.util.release_interface(dev, interface)
dev.attach_kernel_driver(interface)

#print '????????????????????????????????'
#print czas



#2
Cytat: Szopler w 07 Lipiec 2016, 13:27
Kody ASCII poszczególnych znaków?

32 to spacja

BINGO ;)

Do rozkodowania w Pythonie służy funkcja chr() jednak mam teraz problem taki, że wewnątrz pętli to polecenie jak i chyba każde inne od 'print' wywala mi błąd "IndentationError: unexpected indent"

Gdyby ktoś ambitny chciał pociągnąć temat to proszę pisać.

Osobiście wczoraj odpuściłem Pythona i rozwiązałem problem następująco:

1) Skrypt w Pythonie z użyciem biblioteki 'pyUSB' odczytuje z czujników dane w postaci ASCII->DEC
2) Następnie dane wyjściowe w postaci widocznej w cytacie z poprzedniego maila z dodaną aktualną datą i godziną umieszczam w pliku przy pomocy shell'a "python usb.py >> plikwyjsciowy.txt"
3) Mając takie dane możemy użyć już albo bezpośrednio PHP albo BASH'a do którego wczytamy plik, a następnie przetworzymy i wyślemy do bazy danych
4) Warstwa ekspozycji to już kwestia PHP
#3
Chwile mnie zeszło, ale walczę dzielnie. Radioaktywnego zostawiłem jako asa w rękawie, gdyż znalazłem wcześniej bibliotekę pyUSB. Wygląda że coś działa, jednak trzeba jeszcze rozkodować.
Otrzymuje zwrotnie z portu USB takie oto dane

Cytat
# sudo python usb.py
array('B', [1, 96, 12, 84, 49, 61, 32, 50, 53, 46, 51, 176, 67, 32, 84, 50, 61, 32, 32, 32, 32, 32, 32, 32, 32, 84, 51, 61, 32, 32, 32, 32, 32, 32, 32, 32, 84, 52, 61, 32, 32, 32, 32, 32, 32, 32, 32, 84, 53, 61, 32, 32, 32, 32, 32, 32, 32, 32, 84, 54, 61, 32, 32, 32])

array('B', [1, 96, 32, 32, 32, 32, 32, 84, 55, 61, 32, 32, 32, 32, 32, 32, 32, 32, 84, 56, 61, 32, 50, 53, 46, 52, 176, 67, 32])

array('B', [1, 96])

array('B', [1, 96])

array('B', [1, 96])


I wszystko zaczynało wyglądać fajnie jednak zatrzymałem się na tym właśnie kroku.

Powalczę jeszcze trochę z tą biblioteką pyUSB, chyba że ktoś z tym już współpracował i może coś podpowiedzieć to byłbym wdzięczny.

Daje sobie czas do przyszłego tygodnia i zacznę rozpracowywać tego Radioaktywnego.
#4
Pomysł ciekawy tylko wygląda na to, że po zastosowaniu "read" terminal może i pluje danymi, ale tak samo jak i do pliku jako jeden ciąg uzupełniany co 2s. Nie testowałem dodawania to init'a lecz z linii komend składowe i małego basha. Po różnych kombinacjach i tak efekt działania jest taki sam jak do tej pory, czyli oczekiwanie znaku zachęty i odczyt w tle.

A uruchamiałem takie coś:

Cytat
#!/bin/bash
cu -l /dev/ttyUSB0 -s 19200 | while read haha; do
echo $haha
echo $haha >> /home/read1.tu
done

A może coś pogmatwałem?

EDIT:

A jednak powyższe tworzy plik read1.tu w którym znajduje się takie coś:

Cytat
�� ^R^R$$UMOH�� T6= T7= T8= 26.2�C ^LT1= 25.4�C T2= T3= T4= T5= T6= T7= T8= 26.1�C ^LT1= 25.4�C T (*itd.......)
^GConnected.

^GDisconnected.


EDIT2:
No i nie do końca wszystko gra, gdyż powraca problem z samego początku. Odczyty narastają w buforze, a zapis i przekazanie do zmiennej następuje po zakończeniu sesji, nie zaś w jej trakcie.
#5
Witajcie kamraci.

Postanowiłem podnieść wyzwanie i powalczyć z powyższym tematem kontynuując wątek.
Na początku spostrzeżenia do powyższych postów.
Polecenie
Cytat
sudo cat /dev/ttyUSB0 19200
Faktycznie zwraca pierwotnie krzaki.

Korzystamy więc z terminala
Cytat
cu -l /dev/ttyUSB0 -s 19200
Po uruchomieniu połączenia przez terminal sprawa się klaruje i dane pobierane są w czytelny sposób
Cytat
T1= 25.0�C T2=    ...   T4=        T7=        T8= 25.5�C

I teraz nie wiedząc jak zatrzymać połączenie zamknąłem terminal i połączyłem się kolejną sesją.
W tej chwili polecenie
Cytat
sudo cat /dev/ttyUSB0 19200
Zaczęło zwracać wyniki identyczne jak przy terminalu.

OK. Mamy rozpracowany temat wyświetlania danych w terminalu.
Chciałbym dalej oskryptować ten temat jednak nie mam pojęcia w jaki sposób pobrać do skryptu (jako tablicę, string, czy cokolwiek na czym przeprowadzimy obróbkę) dane pomiarowe z czujników.
Używając nawet w skrypcie bash'owym cat'a skrypt biegnie do polecenia odczytu (cat lub cu), a następnie realizuje w nieskończoność pobieranie danych z urządzenia.

Na chwilę obecną mam opracowany patent który nie jest optymalny, ale działa.
Mianowicie podczas uruchamiania systemu uruchamia się również prosty skrypt który przekierowuje dane z terminala do pliku
Cytat
cu -l /dev/ttyUSB0 -s 19200 >> /home/cu-test-01.tu
Aby uniknąć wielkich gabarytów po każdym uruchomieniu tworzymy nowy plik o unikalnym ID kasując stary już zbędny. Pełni on dla nas rolę tymczasowego kontenera danych.

Kolejny skrypt odpalany już cyklicznie co 2s w przypadku gdy nie chcemy opuścić żadnego pomiaru. Pobiera on z utworzonego pliku tymczasowego ostatnie 88 znaków co odpowiada jednemu pełnemu pomiarowi ze wszystkich czujników. Dalej już jest z górki, gdyż mając te dane w stringu możemy w łatwy sposób zapisać wszystko do bazy danych

Nie jestem jednak przekonany co do jakości takiego rozwiązania.
Tutaj pytanie do znawców i prośba o podpowiedź zarazem w sprawie rozwiązania problemu w sposób optymalny.
#6
No to Enigma ;)
#7
Projekt miesiąca / 2014.12[CPU]: LHC CERN Grupa
05 Grudzień 2014, 10:12
Moje chciejstwo skończyło się na jednej maszynie, ale na pozostałych kombinować mi się zarówno nie chce, jak i nie mam na takie zabawy czasu.

To jest zabawa z liczeniem, dlatego zabieram swoje zabawki i ide na ten miesiąc do innej piaskownicy która karmi z automatu bez kombinowania.
#8
Projekt miesiąca / 2014.12[CPU]: LHC CERN Grupa
04 Grudzień 2014, 16:33
Cytat: LQG w 04 Grudzień 2014, 12:28
Propagujesz niesprawdzone informacje. Od wczorajszego popołudnia poszło w świat kilkadziesiąt tysięcy WU LHC@home 1.0. Coś słabo łapałeś, większość ma pełne bufory.

Dlaczego niesprawdzone ?? Chyba lepiej wiem co widzę na monitorze :arrr:

Większość ?? Udzielająca się na forum, czy licząca ??

Projekt w przyszłości powinien zostać oznaczony jako problematyczny i tyle.  :bad:
Problemy były ostatnio. Problemy są teraz. Takie są fakty.

#9
Projekt miesiąca / 2014.12[CPU]: LHC CERN Grupa
04 Grudzień 2014, 09:23
U mnie kaszana, bo tylko na jednym kompie mogę sobie pozwolić na zabawy z downgrade'm. Reszta maszyn stoi i się nudzi. Zaczynam liczyć WCG, bo to nie ma sensu.
#10
Wracając tylko do Universe, to zauważyłem dzisiaj dopiero, że na Linuxie są problemy z zaciąganiem próbek. Kompy z Windowsem sobie radzą ładnie, a 16 kompów z Linuxem nie zassało ani jednej próbki.
#12
No to posżło Universe !!
#13
Jako malkontent nr 1 stwierdzam, że cel jest szczytny, ale z projektami CERN'u same problemy.

Wole policzyć coś innego z czym nie będzie problemów zwłaszcza przy zaciąganiu próbek.

Z tego właśnie powodu nominuje w tym miesiącu theSkyNet POGS
#14
Projekt miesiąca / 2014.06[CPU]:Convector
27 Czerwiec 2014, 15:37
Ja się przełączyłem na Enigme juz, bo szkoda mocy ;)
#15
No to trzeba zmienić projekt na pozostałych ;)
#16
No i git - działa, tylko teraz pytanie jak to zrobić na pozostałych kompach zdalnych, bo jakoś patrząc na kod nie wydaje mi się, żeby raz wymuszony projekt rozsiewał próbki wszędzie ;)
#17
Jednego nie czaje - podpowiedzcie. Poganiacza trzeba zrobić jako windowsowy skrypt BAT, czy może trzeba toto wpisać jakoś do boinca ??
Druga sprawa to czy taki skrypt odpalany na jednym kompie wymusi pobieranie danych na wszystkich kompach ??
#18
No to SIMAP ;)
#19
No to Rosetta, bo idea mi się podoba ;)
#20
Ja się przełączyłem na Enigme
#21
No to Enigma ;)
#22
Projekt miesiąca / 2013.09[CPU]: Asteroids@home
23 Wrzesień 2013, 11:28
U mnie też posucha się właśnie zaczęła ;(
#23
Rioja Science ;)
#24
U mnie też posucha dzisiaj ;(
#25
No to niechaj będzie Constellation ;)

A Tobasa popieram z tym czerwcem ;)
#27
Cytat: Rysiu w 16 Listopad 2012, 16:16

Jaki system?

Windows XP PRO x86 SP3
#28
U mnie od tygodnia nic nie wyliczył. Cały czas magluje to samo, a po pewnym czasie zaczyna od nowa projekty GSCE, a WIRD'y wszystkie oznacza jako błędnie policzone po kilku minutach.
#29
Ja wczoraj wieczorem zrestartowałem projekt i teraz chodzi już prawidłowo.
#31
No to jedźmy z tym OProject ;)
#32
Czyli co - 2 projekty jednocześnie ??
#33
Ja złapałem w nocy jedną 112h ;)
#34
Nowe projekty cały czas się ujawniają co kilkanaście minut i trzeba się wstrzelić jedynie ;)

Przykład taki z przed chwili http://scr.hu/0tej/zj8ae
#35
Przed chwilą z ciekawości wszedłem na status serwerów i pojawiły się 3 próbki, ale bardzo szybko ktoś je zawinął ;)
#36
U mnie w logu pisze

"2012-09-27 12:01:50 | climateprediction.net | Project has no tasks available"
#37
Cytat: krzyszp w 06 Wrzesień 2012, 11:25
To jest nie tylko polski projekt, ale w dodatku tworzony przez członka naszego teamu :)

Ciekawe kto to taki  :whistle:

#38
Ja znów tradycyjnie głosuję na SZTAKI. Przyjaciele od szklanki zasługują również na swoją szansę w PM ;)
#39
Mersenne@home / mersenneathome
12 Sierpień 2012, 09:36
Z tego co zauważyłem na forum oficjalnym, to projektem jest zainteresowane również PromeGrid, lecz piszą, że jedyne czego potrzebują to zgoda właściciela.
#40
Cytat: mimeq w 08 Sierpień 2012, 22:15

Zasady sa takie same dla wszystkich, nikt nikogo do niczego nie zmusza licz co chcesz byle dla zespolu  ;)

No to właśnie to napisałem, że sobie coś innego policzę, bo w WCG nie mam szans, a projektów mniej popularnych nie brakuje.  ;)

Co do punktacji to tak jak pisałem - moim zdaniem wszyscy liczący powinni na zachętę dostawać po 1 punkcie.