Näytä kirjoitukset

Tässä osiossa voit tarkastella kaikkia tämän jäsenen viestejä. Huomaa, että näet viestit vain niiltä alueilta, joihin sinulla on pääsy.


Viestit - Mistofelees

Sivuja: 1 [2] 3 4 ... 30
21

En löydä mistään tietoa C:n kielletyista komentoriviargumenteista.
'$' argumentin ensimmäisenä merkkinä ei toimi.
Jos '$' on keskellä sanaa, se ja loppusana katoavat

Onko joku temppu, jolla C:n saisi hyväksymään dollarimerkin komentorivillä ?
'$GPRMC ' on selkeämpi parametri, kuin 'GPRMC'


22
Kiitos. Mielenkiintoista päästä tutkimaan Pythonilla kirjoitettua koodia, Siitä on akaa, kun viimeksi olen Pythonia käyttänyt.
Tämä C lähti liikkeelle siiitä, kun kirjoitin OrangePi:lle C-pätkän, joka tulostaa suoraan 4-riviselle I2C LCD-näytölle. Tuli himo kokeilla C:tä muutenkin.

23
Kiitos korjauksesta. Käänsin ja pistin kestotestiin.
Itselleni C on vieras kieli.

10 min ajon aikana tuli neljä timeout:a ja sitten koko kone meni jumiin, eikä vastaa mihinkään. Ei edes ping tai ssh.
IVO-boot auttaa.

Vika ei ole tekemässäsi korjauksessa, vaan jossain muualla järjestelmässä.
Tämä kone ei muuten jumittele, mutta tämä sarjaportin luku on sille liikaa.

Tässä on itsellä sellainen ongelma, että käyttämäni GPS-moduli sylkee satunnaisesti röykkiöittäin roskaa.
Moduli olisi muuten nepea ja tarkka, joten en viitsisi luopua

Mielestäni pistin tälle palstalle toisen version ohjelmasta. Siinä sarjaporttia luetaan merkki kerrallaan. Sitä ei nyt kuitenkaan näy missään.

24
Tuota timeouttia olen kasvatellut eri tavoin.
Tässä on tuon C-kielisen osan sorsat

Koodia: [Valitse]
#define TERMINAL    "/dev/ttyS2"
#define FALSE 0
#define TRUE !(FALSE)

#include <errno.h>
#include <fcntl.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <termios.h>
#include <unistd.h>
/**********************/
int set_interface_attribs(int fd, int speed){
    struct termios tty;
    if (tcgetattr(fd, &tty) < 0) {
        printf("Error from tcgetattr: %s\n", strerror(errno));
        return -1;
    }
    cfsetospeed(&tty, (speed_t)speed);
    cfsetispeed(&tty, (speed_t)speed);

    tty.c_cflag |= (CLOCAL | CREAD);    /* ignore modem controls */
    tty.c_cflag &= ~CSIZE;
    tty.c_cflag |= CS8;         /* 8-bit characters */
    tty.c_cflag &= ~PARENB;     /* no parity bit */
    tty.c_cflag &= ~CSTOPB;     /* only need 1 stop bit */
    tty.c_cflag &= ~CRTSCTS;    /* no hardware flowcontrol */

    /* setup for non-canonical mode */
    tty.c_iflag &= ~(IGNBRK | BRKINT | PARMRK | ISTRIP | INLCR | IGNCR | ICRNL | IXON);
    tty.c_lflag &= ~(ECHO | ECHONL | ISIG | IEXTEN);
    tty.c_oflag &= ~OPOST;

    /* fetch bytes as they become available */
    tty.c_cc[VMIN] = 50;
    tty.c_cc[VTIME] = 3;

    if (tcsetattr(fd, TCSANOW, &tty) != 0) {
        printf("Error from tcsetattr: %s\n", strerror(errno));
        return -1;
    }
    return 0;
}
int main(){
    char *port = TERMINAL;
    int fd;
    unsigned char c;
    unsigned char line[120];
    unsigned char temp[120];
    unsigned char jatkuu=1;
    unsigned int len;

    fd=open("/dev/ttyS2",O_RDONLY);
    if (fd < 0) {
        printf("Error opening %s: %s\n", port, strerror(errno));
        return -1;
    }
    /*baudrate 9600, 8 bits, no parity, 1 stop bit */
    set_interface_attribs(fd, B9600);
    do {
        len = read(fd, &line, sizeof(line));
            if(strncmp("$GPRMC",line,5)==0){
                jatkuu=0;
                // Leikataan alusta 7 merkkiä ja lopusta 8 merkkiä:
                memmove(temp, line + 7, len -7-5 + 1);
                printf("LEN=%d %s\n",len,temp);
            }
       
    } while (jatkuu);
    close(fd);
}

25
Kirjoitin Bash:lla kevyen scriptin, joka kutsuu toistuvasti C:llä kirjoitettua ohjelmaa 'GPS'
'GPS lukee sarjaportissa olevan GPS:n lähettämää tekstivirtaa, poimii siitä $GPRMC-lauseen, tulostaa sen ja poistuu.

Scripti pyörii 5 - 20 kierrosta. jonka jälkeen se jämähtää.
Vika on kirjoittamassani 'GPS'-ohjelmassa ja tarkemmin sen lukulauseessa
int n = read(fd, &line, sizeof(line));

Onko jotain tapaa, millä näkisi, mikä on vikana ? muistin ylivuotoja, tms

Olen kirjoittanut tuon GPS ainakin sata kertaa uudestaan eri rakenteilla

Scripti on vain testausta varten:
Koodia: [Valitse]
#!/bin/bash
lkm=0
while true; do
   ./gps;   lkm=$((lkm+1));   echo "lkm=$lkm"
done

26
Laitteessa ei välttämättä ole lainkaan screeniä, näppistä eikä hiirtä kiinni.
Kotipurkin äärestä poistuessa sen pitäisi ottaa auton tai veneen reititin käyttöön. Veneeltä poistuessa pitäisi siirtyä auton retittimelle.
Varsinainen roaming on turhaa, vaikka mukava sekin tietenkin olisi, jottei tiedoston siirto katkeaisi.

27
Valitan, että hieman viipyi.

Tarkoitus on siirtää konetta kodin, asuntoauton ja veneen välillä. Jokaisessa näistä on oma GSM-reitittimensä, joiden nimet ja IP-osoitteet poikkeavat toisistaan.

28
Lunttilappu on mukava, kun tietää komennon nimen vanhastaan, muttei muista syntaksia tai parametrejä.

Itse kaipaisin puhdasta lineaarista tiedostoa, jossa olisi käskyt akkosjärjestyksessä, lyhyt selitys niiden toiminnasta ja yksinkertainen esimerkkilause. Ei mitään uutta asennettavaa ohjelmaa, vaan tiedosto, johon voisi itse lisätä omia kommenttejaan.

Nykyisin, kun hakee Kuukkelilla sopivaa työkalua, joutuu joko plaraamaan eipäs-juupas-keskusteluja erilaisilla forumeilla tai php:n kaltaisia opassivuja, joissa on mopo päässyt karkuun ja esimerkkeinä on monen sivun sekamelskoja, joista ei asia selviä.

29
Miten Linuxin saa siirtymään voimakkaimmalle reitittimelle ?

Tarkoitus on kasata kannettava Linux-kokoonpano, jota siirretään eri reitittimien vaikutusalueelle.
Reitittimet, niiden SSID ja salasanat ovat tiedossa, joten ne voisi kirjoittaa listaan, josta kone valitsisi parhaan.

Missä yleensäkin on kirjattuna käytetyn reitittimen tiedot ?
Jollei löydy mitään valmista, voisin keittää kasaan oman scriptin.

30
ONGELMA RATKESI SAMAN TIEN. Minulla oli kirjoitusvirhe runuser-komennossa.
Jätän tämän kuitenkin tänne varoittavaksi esimerkiksi ;)

crontab kutsuu lyhyttä scriptiä, joka ensin muokkaa hieman dataa ja paiskaa sen sitten serverille, jossa se liitetään (append) lokitiedoston loppuun.
Scripti kutsuu wiringop:n ohjelmia, jotka vaativat rootin oikeudet
Scp käyttää käyttäjätunnusta, joka on sama molemmissa koneissa.
SCP:n tunnistautumisessa käytetään public keytä.
SCP-komento toimii ilman salasanaa, jos sitä ajetaan käyttäjän oikeuksin.
Kun scriptiä ajetaan roottina, ohjelma kysyy käyttäjän salasanaa.
Scriptiä on pakko ajaa roottina, koska LCDtulosta sisältää kutsuja wiringop ohjelmiin.

Miten bash scriptin sisällä saisi tuon scp-rivin ajettua ilman salasanakyselyä ?

Tiivistelmä scriptistä:
Koodia: [Valitse]
#!/bin/bash
declare -a arr
NowC=$(date +"%H:%M")
IP=$(hostname -I)
IP=$(echo -n "${IP//[[:space:]]/}")
while true; do
   IFS="," read -r osoite line < /dev/ttyACM0
   if [[ $osoite == '$GPRMC' ]]; then
       uline=${line%?}
       set -f; IFS=','; arr=($uline)
      break
   fi
done
$(/home/bin/wiringop/i2cLCD/LCDtulosta clr $NowC@1,10 "LAT: ${arr[2]}"@2,1 $IP@4,1)
runuser -l -c "echo $uline | ssh luuseri@omaserveri 'cat - >> /home/luuseri/Sijainti/vaunu.txt' "

Tuo LCDtulosta on omatekemä C-kielinen ohjelma, joka tulostaa annetut merkkijonot LCD:lle annettuihin kohtiin. Ohjelma kutsuu wiringop -kirjastoja. Koneena on OrangePi Lite.

31
Ubuntu tietokoneissa / Vs: Onedrive, tilin vaihto?
« : 10.02.21 - klo:16.59 »
Itsellä on Onedrivessa perheen käytössä HOME-sopimuksella 6kpl 1TB varmuuskopioituja levareita yhteensä 99€/y sopi meidän käyttöömme. Vastaavan raudan asentaminen kotiserverille olisi sekin maksanut jotain: vähintään 18 1TB levaria maksaa jotain ja kuluttaa sähköä. Jos yhden levarin kulutus olisi vaikkapa 5W, olisi kulutus 90W. Vuodessa 788 kWh. Jos kWh maksaa 0.10€, olisi hinta 78€ + siirtokulut. Levarin käyttöiäksi voi laskea 5v, ja hinta n. 50€/kpl, joten rauta maksaa n. 180€/y. Kaikkineen tämä olisi tullut maksamaan siis 238€/y raudasta koottuna. Säästöä siis 139€/y.
Toki kotiserverissäkin on oma backup-järjestelmänsä, mutta siinä on liikaa epävarmuustekijöitä.

rclone täytti kaikki tarpeeni hieman viriteltynä. Linuxin onedrive sopisi paremmin toisenlaiselle käyttäjälle, jolla kone on käytössä 8/5 tai 8/7

Tein rclonea varten scriptin läppäriin. Se on vielä hieman vaiheessa, mutta alustavasti näyttäisi toimivan mukavasti.
Kuten näkyy, olin sen verran laiska, että jaoin varmuuskopioitavat materiaalin kolmeen komentoon. Näin tätä on mielestäni helpompi hallita.
Scripti on /home/bin hakemistossa, koska läppärissä ja serverissä / on ssd-levyllä, joka on käytännössä kirjoitussuojattu.

Koodia: [Valitse]
#!/bin/bash
rclone sync /home/bin Omalevy:/Musta/bin --filter-from /home/bin/rclone/bin_clone.txt
rclone sync /home/misty/Documents Omalevy:/Musta/Documents --filter-from /home/bin/rclone/doc_clone.txt
rclone sync /home/misty/Arduino Omalevy:/Musta/Arduino --filter-from /home/bin/rclone/ardu_clone.txt

Esimerkkinä tuo Ardu_clone.txt -filtteritiedosto ardu_clone.txt:

Koodia: [Valitse]
# rclonen käsittelylista
# '+' include
# '-' exclude
# '**' recursive
# Roskatiedostot:
- *~
- *.tmp
- tmp.*
# hakemiston exludaus:
- /MyApp_1/

Tätä scriptiä ajan käsin. Kotiserverille tulee vastaava crontabin ohjaamaksi

32
Ubuntu tietokoneissa / Vs: Onedrive, tilin vaihto?
« : 08.02.21 - klo:00.32 »
Turhaa optimismia.
Hetken aikaa järjestelmä toimi, kuten toivoin. Nyt se taas lataa väärältä tunnukselta tavaraa läppäriin, vaikka selaimessa on selvästi se aktiivina, jonka haluan. .
Eikö tälläiseen ohjelmaan olisi voitu pistää argumenttia, jolla olisi voinut kertoa, millä tunnuksella toimitaan ?
Yleisestikin hyvin umpimielinen ohjelma, jossa käyttäjän vaikutusmahdollisuudet on puristettu alle minimin.

Kyllästyin ja asensin rclonen. Sen asennuksen ajaksi kannattaa nämmä kirjautua ulos hotmailista.

33
Ubuntu tietokoneissa / Vs: Onedrive, tilin vaihto?
« : 07.02.21 - klo:22.55 »
Kokeillaan vielä kerran tätä. Mielestäni jo kokeilinkin tuota, että olin kirjautunut kaikesta ulos.
Pitäisi olla kaksi selainta koneessa, mutta en ole vielä löytänyt kelvollista toiseksi.

Lisäys:
Onnnistui.
Nyt pitää vielä saada tuo tumpuloitua sekkaiseksi, että synkka tapahtuu vain pyydettäessä, jotta tilit eivät menisi sekaisin.

35
Ubuntu tietokoneissa / Onedrive, tilin vaihto?
« : 07.02.21 - klo:17.30 »
Minulla on käytössä kaksi 1TB levyaluetta M$ Onedrivessä, Käyttäjät minä@HOTMAIL.com ja minä@GMAIL.com, sekä tuore OneDrive v2.4.9-0~202012270043~ubuntu20.04.1.

Asensin ja configuroin OneDriven käyttäjälle minä@GMAIL.com. Tiedostot menevät kuitenkin synkronoinnissa minä@HOTMAIL.com levyalueelle.

Kuinka saisin vaihdettua OneDriven kohdelevyalueen / käyttäjän ?

36
Minulla on ollut Ubuntu-servereitä niin kauan, kuin niihin on saanut Apachen, joten tausta on tuttu.
Nyt päivitin kotipalvelimella Ubuntu 19.04 -> 20.04 ja sain ihan uuden ongelman.

Ulkoinen laite lähettää http POST -viestin serverissä olevalle server2.php-ohjelmalle, joka tallettaa datan valoloki.txt-tiedostoon.
Toinen PHP-vebbisivu tekee datasta phplot:lla kuvan selaimelle pyydettäess.

Kaikki toimii hetken hyvin, Sitten päivitys pysähtyy.
valoloki.txt-tiedoston omistajaksi on muuttunut roo:root ja permissioniksi 644, eikä tuo server2.php pysty kirjoittamaan tiedostoon.

Olen nyt kokeillut www-data:www-data 777 -omistajaa ja oikeuksia, mutta ne korvautuvat joka kerta, kun ohjelma on pyörähtänyt muutaman kerran.
Ohjelmissa ei ole mitään miniuun tekemääni, jmikä muuttaisi asetuksia.

MITÄ IHMETTÄ ?

37
Multimedia ja grafiikka / Vs: ? Gimp select ?
« : 27.10.20 - klo:13.58 »
Mieluiten käyttäisin m$Paint:n kaltaista ohjelmaa moneen asiaan, mutta Wintööttiin en koske, enkä viitsisi asentaa Wineä tälläisen 'pikkujutun' kanssa.
Mikään testaamani Linuxin piirtelyohjelma ei ole vielä ihan täydellisesti kolahtanut. Nyt käytän sekaisin LibreCAD, Drawing, Xpaint, Gimp, phplot ja screenshot.

Oikeastaan Drawing on aika hyvä. Ainoastaan 'negative' puuttuu tämän hetken tarpeista. (musta teksti valkoiselta pohjalta valkoiseksi mustalla pohjalla)

Tuo ehdotettu Ctrl-Z ei auta, koska se palauttaa edelliseen vaiheeseen, eli poistaa tehdyn flip:n ja olen lähtötilanteessa.

38
Multimedia ja grafiikka / ? Gimp select ?
« : 26.10.20 - klo:13.15 »
Olen aloittelija GIMP:n kanssa, vaikka ollut IT-profina 40v ja käyttänyt kymmeniä muita kuvankäsittelyohjelmia..

Latasin kuvan ja tein sille flip horisontal.
Nyt en pysty valitsemaan kuvassa mitään, koska aina, kun vien kursorin kuvan päälle ja klikkaan vasemmalla, kuva kääntyy.
Kuvan ympärilla on virtaava katkoviiva, joka kai tarkoittaa, että se on valittu.

Jos suljen GIMP:n ja käynnistän uudestaan ja lataan minkä tahansa kuvan, ohjelma tekee samaa.
Miten tästä tilasta pääsee pois?

39
Eri syistä en halunnut pistää DHC ja DNS-palvelimia samaan purkkiin tässä vaiheessa. Annan mieluummin reitittimen hoitaa DHCP:n.
dnsmasq hoitaa nyt homman OK, kun löysi oikeat loitsut.

40
Kun kotona on lauma servereitä ja Arduino-peräisiä mitta- ja valvontalaitteita, alkoi harmittaa niiden kutsuminen IP-osoitteella.
Pistin Raspin DNS-serveriksi. Reititin saa olla nyt vielä DHCP-serverinä jonkin aikaa. Tosin käyttämäni Zyxelin karvalakki on jo nyt käynyt rajalliseksi.
 Kolmen päivän askartelun jälkeen homma lähti toimimaan. Linux, Win ja Arduino löytävät lelut nimellä. Applea en vielä ole päässyt kokeilemaan.

Netistä löytämäni ohjeet ovat hauskoja. Osa niistä jopa vei asiaa hieman eteenpäin.
Jos asia kiinnostaa, voin koittaa raapia kasaan jonkinlaiset dokumentit.

Hauskinta olisi tehdä Arduinosta local DNS-palvelin, johon osoitekirjan voisi tarjota SD-kortilla, mutta se on toinen tarina. Pitää ensin kaivella esille DNS-protokollasta lisää tietoa. Ainakaan Kuukkeli ei löytänyt yhtään valmista projektia.

Sivuja: 1 [2] 3 4 ... 30