Kaunas, Eiguliai, darželis, dailė, šokiai, elektronika, 486DX, LŽŪU, linux, fotografija, dviratis, automobiliai, akvariumai, žmona, dukra...

12th
AUG

Youtube grojimas užrakinus telefoną (android)

Parašė dinux kategorijoje Android

Ir ne tik užrakinus, bet ir suminimaizinus programą.

Android’e, youtube programėlė video/audio groja tik tol kol ji yra aktyvi ir matosi ekrane, todėl negalima naršyti internete ar kažką krapštyti telefone grojant muzikai, nes tik programa dingsta nuo ekrano, dingsta ir garsas.

Šiai “bėdai” spręsti, visai netyčia atradau sprendimą — Firefox naršyklė.
Sprendimas labai paprastas, susidiegiam Firefox, atsidarom youtube puslapį (prisijungiam jei aktualu), pasirenkame video, grojame. Dabar galima telefoną užrakinti ir garsas nedingsta. Man tai aktualu, kai namuose yra mažametė, kuriai viską reikia patikrinti ir paragauti. Telefono atrakinti ji negali (Sony Xperia X su pirštų antspaudų skaitytuvu) ir muzikėlės išjungti.

26th
JUL

Pagaliau Raspberry veikia stabiliai

Parašė dinux kategorijoje Linux, Protingas namas

Kaip jau rašiau, buvo bėdų su maitinimu, kurias galvojau, kad išsprendžiau, bet pasirodo — ne. Problema pasirodo išliko, tik ne tokia dažnai pasireiškianti. Avietė kartą per savaite/dvi pamesdavo HDD, užtekdavo perkrauti ir vėl viskas dirbdavo tvarkingai iki kito karto. Taip kentėjau beveik pusmetį, kol neperskaičiau, kad Western Digital išleido specialų diską avietei, kuris vadinasi PiDrive. Nuorodą į produktą: http://wdlabs.wd.com/products/wd-pidrive-314gb/.

Šis diskas specifinis tuo, kad jis savyje neturi nei SATA nei IDE jungties. Ant jo valdymo plokštės yra USB3.0 jungtis. Lygiai tokie pat diskai montuojami į WD Passport išorinius, nešiojamus diskus. Skirtumas tas, kad šis diskas truputi modifikuotas. Jo startui reikalinga mažesnė srovė (diskas įsisuka lėčiau), tai pat sulėtintas jo valdiklio taktinis dažnis (naudojama mažiau energijos) na ir žinoma keista talpa už kiek didesnę kainą.

Diskas iš Nyderlandu (Olandija) iki durų Kaune atkeliavo DHL pagalba per maždaug savaitę, bėda tik tame, kad pačio išsiuntimo teko laukti tris savaites (gavau atsiprašymo laišką dėl vietinės WD logistikos apkrovimo).

Atkeliavus diskui, kopijuoju viską į naują. Kompiuteris startuoja, viskas veikia, viskas puiku.

Praėjus, berods keletai dienų, pasigirsta iš disko keisti garsai. Įrašas čia: https://www.youtube.com/watch?v=IGtzaIlMgWA Keičiau ir kabelius ir maitinimo blokus, jungiau per usb switch’ą su išoriniu maitinimu.. niekas nepadėjo. Taip avietė praleido gerą mėnesį išjungta, nelabai buvo laiko aiškintis kas čia daros ir internetas šiuo klausimu nieko nepadėjo.

Pradėjus vėl domėtis šiuo klausimu WD supporto forume atsirado tema, pasirodo ne pas mane viena tokie garsai sklinda. Pradėjus gilintis į bėda, kolega IRC (o taip aš jį vis dar naudoju) pasiūlė pasidomėti hdparm rakto S ir B parametrais.

Finalinis rezultatas:

sudo hdparm -B 255 /dev/sda1

Ši komanda išjungia disko Advanced Power Managment, diskas dabar sukasi tyliai, jokie pypsėjimai ar kiti pašaliniai garsai nesklinda.

Vėl paišosi temperatūros grafikas:
Ekranvaizdis_2016-07-26_23-01-26

Žiūrint į grafika matosi, kad oro temperatūra lauke buvo pakilus iki 40,4C. Kad ir kokia karšta diena buvo, bet tai nėra realu. Pats daviklis yra ant stogo šešėlyje, įdėtas į baltą dėžutę nuo foto juostelės, bet panašu tas negelbėja. Sekantis žingsnis konstruoti taip vadinama Stevenson Screen.

17th
DEC

Raspberry PI + USB HDD = maitinimo bėdos

Parašė dinux kategorijoje Linux

Jau antrą kartą šiais metais ir nežinia kelintą kartą per visą avietės naudojimo istoriją griūna SD kortelė. Tiesa pati pirmoji naudota, kuri, jei nemaišau buvo 2GB microSD įdėta į perėjimą, veikė pakankamai patikimai kol nebuvau priverstas pakeisti į kažką talpesnio.

Toliau sekė bent keleta 4GB kortelių, vieną iš jų (paskutinioji) buvo Kingston gamintojo.

Taigi nusipirkau vos ne pirmą pasitaikiusią, pigiausia (~11€) USB dėžutę 2.5″ SATA diskui, susikuriu boot ir root particijas (taip kaip nurodyta daryti šviežiai diegiant Archlinux’ą į avietę). Ištraukiu SD kortelę, pajungiu HDD ir… diskas nesisuka, pasirodo per silpnas maitinimas. Maitinimas HP 1A pakrovėjas. Greitai pasikuičiu stalčiuje ir randu HTC pakrovėją. Ant jo taip pat rašo 1A.

Prie HTC pakrovėjo jungiu USB dėžutės vieną iš USB (dėžutė turi dvi USB jungtis, kad būtų galima iškarto pajungti į dvi USB jungtis, tam, kad diskui užtektu srovės iš USB jungčių). Kitą jungiu į avietės USB. Pačią aveitę užmaitinu nuo HP pakrovėjo.

Viskas startuoja, bet pala… OS nesikrauna. Greitas pagooglinimas ir paaiškėja, kad kompiuteris moka startuoti tik iš SD kortelės. Taigi SD kortelė grįžta į savo vietą, bet prieš tai atsidarau boot particijoje esančią bylą /boot/cmdline.txt ir joje paredaguoju root reikšmę. Rezultate turiu tokią eilutę:

[dinux@alarmpi ~]$ cat /boot/cmdline.txt
root=/dev/sda2 rw rootwait console=ttyAMA0,115200 console=tty1 selinux=0 plymouth.enable=0 smsc95xx.turbo_mode=N dwc_otg.lpm_enable=0 kgdboc=ttyAMA0,115200 elevator=noop init=/usr/bin/init

Vėl jungiu. Viskas veikia, OS kraunasi. Krovimasis žymiai spartesnis nei iš SD kortelės.

Džiaugiuosi situacija gal vieną dieną.. avietė pakimba, na gal kas nutiko…, perkraunu, dar po dienos ar dviejų vėl kabo. Patikrinu log’us, matau:

usb 1-1.3: device descriptor read/64, error -71

Googlinu. Kažko labai naudingo nerandu. Nusprendžiu, kad gal tai dėl maitinimo trūkumo. Sukeičiu pakrovėjus. Dabar HP maitina diską, HTC kompiuterį. Panašu, kad bėda dingo. Bet mintis, kad viskas veikia “ant ribos” ir nelabai tvarkingai (du pakrovėjai) neduoda ramybės.

Ieškau pas kinus galingesnio maitinimo, galvoju gal vis dėlto pajungti taip vadinama industrinį 5V maitinimą, bet paskui netyčia aptinku 3.1A USB pakrovėją su dviem jungtim. Nuotraukoje parodytos dvi USB jungtis, prie vienos parašyta 2.1A prie kitos 1A. Realybėj nusipirkus šį pakrovėją šių užrašų nėra.

HDD jungiu į tą USB kur puslapyje parašyta 2.1A, avietę prie 1A.

Dabar jau sistema veikia kažkiek laiko ir galima teigti, kad viskas tikrai gerai, jokių lūžimų, jokių klaidų loguose.

11th
DEC

RaspberryPi ir laikrodis

Parašė dinux kategorijoje Linux

Raspberry Pi (visi modeliai) neturi RTC laikrodžio, t.y. perkrovus, išjungus-įjungus laikrodis nusimuš. Problemą galima spręsti su papildomu RTC priedu jungiamu prie GPIO, bet jei kompiuteris, kaip pas mane, visada pajungtas prie interneto šią bėdą labai greitai ir lengvai galima išspręsti.

Viskas galioja ir bet kokiam kitam nešiojamam/staliniam kompiuteriui su Archlinux distribucija.

Pirmiausia įjungiam sinchronizaciją su NTP serveriu:

sudo timedatectl set-ntp true

Nustatome teisinga laiko juostą. Lietuvos atveju:

sudo timedatectl set-timezone Europe/Vilnius

Jei vis dėlto gyvenat (naudojat) ne lietuvišką laiko juostą, juostų sąrašą galima išsikviesti:

sudo timedatectl list-timezones

Taigi po šių veiksmų jau turime tvarkinga laikrodį, kuris po persikrovimo susisinchronizuos ir “avietė” gyvens tuo pačiu laiku kaip ir jūs.

[dinux@alarmpi ~]$ sudo timedatectl status
      Local time: Pn 2015-12-11 20:20:11 EET
  Universal time: Pn 2015-12-11 18:20:11 UTC
        RTC time: n/a
       Time zone: Europe/Vilnius (EET, +0200)
 Network time on: yes
NTP synchronized: yes
 RTC in local TZ: no

Viskas atrodo smagiai veikia, bet žiūrint temperatūros namuose grafiką (Apie tai rašiau čia: Protingas namas. 1 Dalis. Temperatūra. tik naujiena tokia, kad dabar viskas saugoma mariaDB (mySQL) bazėje) visos temperatūros vėluoja dviem valandomis. Laikas bazėje atsiranda rašant į lauką CURRENT_TIMESTAMP pagalba.

MariaDB (mySQL) serverio laiko juosta galima pamatyti SQL komanda:

SELECT @@global.time_zone;

Mano atveju rezultatas buvo SYSTEM. Iš aukščiau esančio statuso matosi, kad kompiuterio laikas šiai dienai (žiemos laikas) atsilieka dviem valandomis (UTC laiko juosta).

DB serverio laiką galima nustatyti SQL komanda:

SET GLOBAL time_zone = 'Europe/Vilnius';

Bet štai staigmena:

Unknown or incorrect time zone

Pasirodo mysql bazėje nėra įkeltų laiko juostų duomenų. Windows OS vartotojai turėtu iš serverio puslapyje pasiieškoti SQL bylos laiko juostom susiimportuoti, bet pastaroji netinka Linux, BSD ir panašioms operacinėms. Linux operacinėje visas laiko juostas iš sistemos į DB reikia kopijuoti mysql_tzinfo_to_sql programos pagalba.

mysql_tzinfo_to_sql /usr/share/zoneinfo | mysql -uroot -p mysql

Jūsų bus paprašytas DB serverio administratoriaus slaptažodis. Po visko dar kartą bandom nustatyti laiko juostą:

SET GLOBAL time_zone = 'Europe/Vilnius';

Komanda suveikė sėkmingai. Dabar visi laikai stojo į savo vietas. Jau visi padaryti bazės įrašai pasislinko dvejomis valandomis į priekį ir prisivijo dabartinį laiką.

14th
SEP

top spalvos

Parašė dinux kategorijoje Linux

Naujasis top (archlinux’e jau bus metai kaip atsinaujino) nusidažė įvairiom spalvom, plius procesus vaizduoja “sukeltus” į medį.
Ekranvaizdis_2015-09-14_21-34-39
Norint grįžti prie akiai įprasto ir bent man asmeniškai patogesnio būdo, reikia spausti eilės tvarką:
z
V
W

Ekranvaizdis_2015-09-14_21-35-23

z klavišas išjungia/įjungia spalvas. V klavišas išjungia/įjungia medį. W klavišas išsaugo konfiguraciją. Konfiguracija guli adresu ~/.toprc todėl prisidirbus bekonfiguruojant šią bylą galima tiesiog ištrinti.

23rd
MAY

Sony Xperia Z1 pagaliau gavo saldainį

Parašė dinux kategorijoje Android

Oficialiai Sony apie Z1 atnaujinimą paskelbė prieš šešias savaites… tiek laiko aš tikrinau ar nėra atnaujinimo 🙂 Pastaruoju metu jau net užmiršau ko labai laukiau ir vakar patikrinus pagaliau pamačiau vaizdelį:
2015-05-22 17.29.37

Mečiau viską ir bėgau prie kompiuterio naujinti. Žmonos Samsung S5 atsinaujino naudojant wifi, Soniui šiam atnaujinimui reikalingas windows’inis (arba OSX) kompiuteris su instaliuotu Sony PC Companion. Teko pasileisti senokai naudota VirtualBox’ą su jame sėdinčiu windausu. Viskas praėjo sėkmingai. Sony serveriai veikia gan greitai (gal Lietuvoj mirror’ą turi?), ilgiausiai užtruko pačio atnaujinimo perkėlimas į telefoną. Telefonas persikrauna į recovery (?) režimą, jo ekranas būna visiškai tamsus, viską reikia sekti kompiuterio ekrane. Po atnaujinimo perkėlimo į aparatą, jis pats persikrauna ir toliau kantriai laukiam, nes pirmais užsikrovimas trunka laaaaaabai ilgai. Užsikrovus iškarto keliaujam į Google Play (telefone) ir atsinaujinam suinstaliuotas programas. Kaip žinia skirtingoms android versijoms būna paruoštos skirtingos programos versijos kaip pvz GMail. Po visų atnaujinimų dar kartą perkraunu telefoną.

Visas procesas užtruko turbūt ~40min., sunaudojo 30% baterijos.
2015-05-23 08.10.052015-05-23 08.41.512015-05-23 08.42.072015-05-23 08.42.282015-05-23 08.44.04

Ką tik pastebėjau, kad atsirado GPIS SMS programėlė, pagaliau gausiu perspėjimus iš “Gyventojų perspėjimo ir informavimo sistemos” http://gpis.vpgt.lt

1st
MAY

Raspberry Pi paskutinis archlinux atnaujinimas

Parašė dinux kategorijoje Linux

Po paskutinio Raspberry Pi archlinux atnaujinimo ir pekrovimo avietė užsikrauna root particiją primountindama tik skaitymo (read-only) teisėmis.

Pataisymas labai paprastas. Dedam/jungiam SD kortelę prie “normalaus” (stalinis/nešiojamas) kompiuterio ir boot (įkrovos) particijoj (toj mažesnėj ~105Mb). Ieškom bylos cmdline.txt. Toliau du sprendimo būdai:
* ištrinam cmdline.txt ir cmdline.txt.pacsave pervardinam į cmdline.txt
* antras būdas, atsidarom cmdline.txt, surandam frazę rootwait ir prieš ją prirašom raktą rw, kad būtų rw rootwait.

Dedam kortelę atgal, įjungiam avietę. Problema išspręsta.

16th
APR

Archlinux lietuviško mirror’o adreso pasikeitimas

Parašė dinux kategorijoje Linux

Nuo šios dienos atviras.lt komanda keičia Archlinux veidrodžio (mirror) adresus į:

HTTP: http://mirrors.atviras.lt/archlinux/
RSYNC: rsync://mirrors.atviras.lt/archlinux/ 

Kažkurį laiką dar veiks ir senasis adresas.
Taip pat esu padaręs nukreipimą http://archlinux.lt/mirror/
Jei naudojate aukščiau mano paminėta nuorodą nieko keisti nereikia .htaccess aš jau paredagavau ir viskas automatiškai veda į naują adresą, o tie kurie naudojo seną adresą, turėtu atsidaryti /etc/pacman.d/mirrorlist bylą (root teisėmis) ir pakeisti Server eilutę į:

Server = http://mirrors.atviras.lt/archlinux/$repo/os/$arch

Arba naudojant nukreipimą:

Server = http://archlinux.lt/mirror/$repo/os/$arch

18th
MAR

Protingas namas. 1 Dalis. Temperatūra.

Parašė dinux kategorijoje Linux, Protingas namas

Protingas, išmanus, bet turbūt automatizuotas namas labiausiai tinka nusakyti šiai sistemai.

Mano galvoje sukasi labiau informatyvaus namo terminas nei aukščiau paminėti, nes kažkokio labai didelio valdymo galvoje neturiu. Todėl pirmos mintys/tikslai yra tai, kad namas (šiuo atveju butas) informuotu apie save, savo būklę šeimininką.

Aprašymuose gali trukti vienos ar kitos smulkesnės ar nelabai smulkios detalės, palieku erdvės patiems pagalvoti, pasinaudoti paieškos sistemomis 😉

Taigi, pats pirmas dalykas ko mums reikės, tai sistemos serverio/kompiuterio. Jo funkcijas atlieka Raspberry Pi model B
43W5302 lado

Operacinė sistema (pati distribucija) gal nelabai tinka tokio tipo kompiuteriui, tam turbūt reiktu rinktis debian ar kažką panašaus, bet aš pasirinkau Archlinux. Vienintelė ir pagrindinė to priežastis, šią distribuciją naudoju visuose savo (ir žmonos) kompiuteriuose, gerai žinau jos sudėti ir valdymą.

[dinux@alarmpi ~]$ uname -a
Linux alarmpi 3.12.35-1-ARCH #1 PREEMPT Tue Dec 23 07:14:51 MST 2014 armv6l GNU/Linux

Kompiuteris maitinamas nuo po ranka papuolusio mobilaus telefono pakrovėjo (atrodo Huawei), pradinėje stadijoje buvo naudojama vėlgi po ranka papuolusios 2Gb microSD kortelės įdėtos į SD perėjimą. Vėliau dariau visokius bandymus tad prireikė vietos ir kortelė buvo pakeista į 4Gb.

Pirmasis link išmanumo žingsnis buvo termometrų pajungimas. Kaip pasijungti termometrą/termometrus labai puikiai aprašyta čia http://www.sbprojects.com/projects/raspberrypi/temperature.php, pasinaudojus google, galima rasti daug įvairių pavyzdžių.

Kaip ir šioje nuorodoje parodyta naudoju DS18B20+ termometrus kurie įdėti į dėžutes nuo foto juostelės. Dėjau tam, kad termometras nebūtų plikas ir nereaguotu į trumpalaikius temperatūros svyravimus.

Duomenis pradiniam variante saugojau RRD bazėje. Tai lyg duomenų bazė kartu su atvaizdavimo varikliu. Archlinux’e instaliuojam:

sudo pacman -Sy rrdtool

Pateikiu bazės kūrimo komandinę eilutę:

 rrdtool create temp.rrd --start N --step 60 \
  DS:laukas:GAUGE:900:-50:50 \
  DS:svetaine:GAUGE:900:-50:50 \
  DS:kambarys:GAUGE:900:-50:50 \
  RRA:AVERAGE:0.5:1:12 \
  RRA:AVERAGE:0.5:1:288 \
  RRA:AVERAGE:0.5:12:168 \
  RRA:AVERAGE:0.5:12:720 \
  RRA:AVERAGE:0.5:288:365

Šia komanda sukuriam bazę, kurioje bus trys termometrai, jie pavadinti laukas – lauko temperatūrai, svetaine – svetainės kambario temperatūrai ir kambarys – darbo kambario temperatūrai saugoti.

Kas minutę pasileidžia cron job’as kuris nuskaito termometrų reikšmes ir jas įrašo į minėta bazę:

rrdtool update /root/rrd/temp.rrd N:$LAUKAS:$SVETAINE:$KAMBARYS

Kas penkias minutes cron job’as paleidžia skriptą kuris sugeneruoja grafikus:

   rrdtool graph /srv/http/temp_h.png --start -1h \
             DEF:laukas=/root/rrd/temp.rrd:laukas:AVERAGE \
             DEF:svetaine=/root/rrd/temp.rrd:svetaine:AVERAGE \
             DEF:kambarys=/root/rrd/temp.rrd:kambarys:AVERAGE \
             LINE1:laukas#0000FF:"Lauko temperatūra [C]" \
             LINE1:svetaine#FF0000:"Svetainės temperatūra [C]" \
             LINE1:kambarys#00FF00:"Dainiaus kambario temperatūra [C]"

   rrdtool graph /srv/http/temp_d.png --start -1d \
             DEF:laukas=/root/rrd/temp.rrd:laukas:AVERAGE \
             DEF:svetaine=/root/rrd/temp.rrd:svetaine:AVERAGE \
             DEF:kambarys=/root/rrd/temp.rrd:kambarys:AVERAGE \
             LINE1:laukas#0000FF:"Lauko temperatūra [C]" \
             LINE1:svetaine#FF0000:"Svetainės temperatūra [C]" \
             LINE1:kambarys#00FF00:"Dainiaus kambario temperatūra [C]"

   rrdtool graph /srv/http/temp_w.png --start -1w \
             DEF:laukas=/root/rrd/temp.rrd:laukas:AVERAGE \
             DEF:svetaine=/root/rrd/temp.rrd:svetaine:AVERAGE \
             DEF:kambarys=/root/rrd/temp.rrd:kambarys:AVERAGE \
             LINE1:laukas#0000FF:"Lauko temperatūra [C]" \
             LINE1:svetaine#FF0000:"Svetainės temperatūra [C]" \
             LINE1:kambarys#00FF00:"Dainiaus kambario temperatūra [C]"

   rrdtool graph /srv/http/temp_m.png --start -1m \
             DEF:laukas=/root/rrd/temp.rrd:laukas:AVERAGE \
             DEF:svetaine=/root/rrd/temp.rrd:svetaine:AVERAGE \
             DEF:kambarys=/root/rrd/temp.rrd:kambarys:AVERAGE \
             LINE1:laukas#0000FF:"Lauko temperatūra [C]" \
             LINE1:svetaine#FF0000:"Svetainės temperatūra [C]" \
             LINE1:kambarys#00FF00:"Dainiaus kambario temperatūra [C]"

   rrdtool graph /srv/http/temp_y.png --start -1y \
             DEF:laukas=/root/rrd/temp.rrd:laukas:AVERAGE \
             DEF:svetaine=/root/rrd/temp.rrd:svetaine:AVERAGE \
             DEF:kambarys=/root/rrd/temp.rrd:kambarys:AVERAGE \
             LINE1:laukas#0000FF:"Lauko temperatūra [C]" \
             LINE1:svetaine#FF0000:"Svetainės temperatūra [C]" \
             LINE1:kambarys#00FF00:"Dainiaus kambario temperatūra [C]"

Reiktu atkreipti dėmesį, kad pagal mano pateikta pavyzdį paveiksliukai saugomi /srv/http/ kataloge.

Rezultate turime grafikus. Pateikiu tik kelis t.y. dienos bei mėnesio:
temp_d

temp_m

Vėliau atsiradus poreikiui patogiai select’int duomenis nusprendžiau juos saugoti pradžioje sqlite bazėje, bet pastebėjau, kad duomenų rašymo metu bazės byla yra užrakinama. Po nesėkmingų bandymų išvengti rakinimo (išvengti visgi pavyko, bet įrašo metu traukiant duomenis operacija užtrukdavo, nes pirma palaukdavo kol pilnai įrašomi duomenys) perėjau prie Mysql, o tiksliau mariaDB.

Komanda su kuria rašau duomenis:

    mysql -u manonamai -pmanoslaptazodis  manonamai  -e "INSERT INTO tbl_sensors_data (sd_sensor_id, sd_data) values (\"1\",$KAMBARYS);"
    mysql -u manonamai -pmanoslaptazodis  manonamai  -e "INSERT INTO tbl_sensors_data (sd_sensor_id, sd_data) values (\"2\",$SVETAINE);"
    mysql -u manonamai -pmanoslaptazodis  manonamai  -e "INSERT INTO tbl_sensors_data (sd_sensor_id, sd_data) values (\"3\",$LAUKAS);"

Pritaikius savo reikmėms amCharts (http://www.amcharts.com) turime gražesnę ir dinamiškesnę (užsikrovus pusulapiui rodyklės sujuda) vizualizaciją:
Ekranvaizdis_2015-03-17_23-11-30

Reiktu paminėti, kad lauko temperatūra rodoma apie du laipsnius aukštesnė nei yra realybėje, nes daviklis į lauką patenka per liaudyje vadinama fortkę (orlaidę) ir yra pakankamai arti namo sienos.

12th
MAR

Terminis spausdintuvas BTP-2002NP

Parašė dinux kategorijoje Kita, Linux

Šis spausdintuvas naudojamas prie POS (Point Of Sale) pardavimo taškas. Iš jo lenda čekis. Praktiškai bet kurioje parduotuvėje galime rasti tokį kur naudojamos kompiuterizuoti kasos aparatai.
BTP-2002 Printer

Būtent šie modeliai būna su trijų tipų interfeisais, COM (serial rs232), USB arba LAN. Man į rankas papuolęs yra su COM prievadu. Tikslas, pajungti jį prie linux’inio kompiuterio naudojant USB <-> COM perėjimą ir pasiųsti jam kažkokį tekstą spausdinimui. Teko matyti kažkurioje picerijoje, kad kepėjams užsakymus taip perduoda 🙂

Taigi vienas iš svarbiausių momentų tai yra prisijungimo parametrai. Jei nors vienas parametras bus kitos, spausdintuvas nereaguos į siunčiamus duomenis (bent man nereagavo).
* Device (įrenginys): /dev/ttyUSB0 Gali būti kitoks, jei jau pajungti keli perėjimai ar pajungtas tarkime Vodafone/Tele2 ar kažkoks kitoks GSM modemas ar jungiama tiesiai į COM jungti be perėjimo.
* Baud rate (ryšio greitis): 38400 Būtinai toks ir ne kitoks.
* Data bits (duomenų paketo dydis?): 8
* Stop bits: 1
* Parity: none
* Handshake (“pasisveikinimas”): Hardware Tik Hardware, nejungti Software ar nejungti abiejų iš karto.
Pasijungus ir rašant tekstą, spustelėjus enter tekstas atspausdinamas ant čekiuko.

Programą rašiau Lazarus (FPC – Free Pascal Compiler).
Biblioteka bendravimui per COM naudoju http://synapse.ararat.cz Beje labai geras puslapis, yra tikrai gerų modulių kurių gali prisireikti rašant kažkokią programą. Visa dokumentacija http://synapse.ararat.cz/doc/help/

Susikuriu katalogą šiam projektui, išsaugau jame lazarus projektą ir į tą patį katalogą išpakuoju aukščiau minėtą archyvą.

Kodo pradžioje prie uses įterpiu Synaser
Prie var pridedu ser: TBlockSerial;
Kaip komunikuoti su lazarus puikūs pvz pateikti čia: http://wiki.freepascal.org/Hardware_Access

ser:=TBlockSerial.Create;
ser.Connect('/dev/ttyUSB0');
ser.config(38400, 8, 'N', SB1, false, True);

Atkreipiam dėmesį į trečią eilutę. Būtent tokie turi būti prisijungimo parametrai (gal kažkokiam kitam modeliui ir kitokie).

Tekstą spausdiname su:

Ser.SendString ('siunciamas tekstas keliauja cia');

Taip pat šis aparatas turi kirpimo funkciją t.y. jo priekyje yra “peilis” kuris atkerpa čekį. Kirpimui reikia pasiųsti komandą:

Ser.SendString (char(27)+'@'+char(29)+'V'+char(1));

Atspausdinus teksto porciją ir vykdant kirpimą, čekis nukerpamas ne po tekstu, o kiek aukščiau, todėl, kad kirpimas būtų po tekstu, būtent mano atveju reikia tekstą pakelti per penkias eilutes. Šis skaičius gali skirtis, nes tam tikrais įrankiais (Utils) galima keisti šrifto dydį, tarpą tarp eilučių. Tiesa tam yra speciali komanda kuri paslenką būtent tiek, kad nukirptu po tekstu, bet man jos pasiųsti į spausdintuvą nepavyko. Taigi aš pasiunčiu penkis eilutės pabaigos simbolius:

Ser.SendString (char(10)+char(10)+char(10)+char(10)+char(10));

Taip pat į šio spausdintuvo atmintį su tam skirtais įrankiais galima įkelti logitipą, monochrominį bitmap’ą. Begooglindamas radau, kad kiti modeliai gali turėti atmintyje ir du, tris logotipus. Logotipo spausdinimui naudojame:

Ser.SendString (char(28)+char(112)+char(1)+char(72));

Beieškodamas internete, buvau radęs cups’ui visus reikalingas bylas. Pridėti spausdintuvą pavyko, bet bandant pasiųsti paprasčiausią tekstą rezultatas būdavo nulinis. Bet rašant savo kažkokį projektėlį vargu ar patogų per cups spausdinti, tikrai paprasčiau ir aiškiau valdyti situaciją per COM’ą.

By continuing to use the site, you agree to the use of cookies. more information

The cookie settings on this website are set to "allow cookies" to give you the best browsing experience possible. If you continue to use this website without changing your cookie settings or you click "Accept" below then you are consenting to this.

Close