ublo
bogdan's (micro)blog

bogdan » jack white & black milk – royal mega

12:42 am on Jan 8, 2012 | read the article | tags:

jack white & black milk – royal mega

bogdan » 2012, the leap year

11:20 pm on Jan 7, 2012 | read the article | tags:

Should we expect a new revolution in physics, this time with logic arguments and not for justifying huge funds with flipping coins and counting particles (link)? Here’s a recent paper describing how gravity can be considered a consequence of the information, not as a fundamental force. In my humble opinion, this idea has the necessary beauty to kick us beyond Einstein’s general relativity.
Erik P. Verlinde – On the Origins of Gravity and the Laws of Newton
Multiwavelength image of M81 galaxy (courtesy of NASA Images)
(image courtesy: nasaimages.org)

bogdan » simple windows COM port logger

03:30 pm on Dec 20, 2011 | read the article | tags:

yesterday, i’ve posted my wrapper library for the windows COM port with the promise of posting the actual C program that uses it. to compile it you need mingw (see here my tutorial on how to get it up and running). the program is simple and writes in the text.txt file whatever it receives on the serial interface, but no more than MAXLINES lines (in this case, 10 lines). you need to save the previous code as “serial.h” in the same directory as the code below. then, compile it and that’s it! =)

ask whatever questions here, and i will answer.

#include <stdio.h>
#include <windows.h>
#include "serial.h"
// the number of lines read from the serial interface.
// good for data acquisition for a specified amount of time.
#define MAXLINES 10

int main (int argc, int ** argv) {
    HANDLE comPort;
    FILE * f;
    char buffer[32];
    unsigned short int readbits = 0;
    unsigned long int lines = 0;
    unsigned short int c;

    // my COM port is COM15. be sure to change it accordingly
    if ((comPort = openSerialConsole("\\\\.\\COM15")) == (void *) NULL) {
        printf ("Error: COM Port!\n");
        return 1;
        }

    // open the file "text.txt". change it for a different file
    f = fopen ("test.txt", "w+");

    // read online MAXLINES lines
    while (lines < MAXLINES) {
        // readbits is the number of bytes read from the COM port
        while ((readbits = readFromSerialConsole(comPort, buffer, 32)) != 0) {
            // a good thing to check that the readbits+1 character marks the end
            // of the string. saves you from "Segmentation fault!" errors
            buffer[readbits] = 0;

            // check buffer for ENDL character
            for (c = 0; c<readbits; c++)
                if (buffer[c] == '\n') {
                    lines++;
                    if (lines == MAXLINES) buffer[c] = 0;
                    }

            // output to the standard IO, and
            printf("%s", buffer);
            // to the file
            fprintf(f, "%s", buffer);
            }
        }

    // close the file handle
    fclose (f);

    // close the COM port
    closeSerialConsole(comPort);

    return 0;
    }

bogdan » dom’ profesor, multumesc frumos pentru sampanie

07:14 pm on Dec 19, 2011 | read the article | tags:

dom’ profesor, multumesc frumos pentru sampanie =)

bogdan » simple windows COM port wrapper library

| read the article | tags:

searching for a way to read the serial port in windows using C (usually i do my programming under linux), i found a cute little wrapper for the serial port here. i don’t like .NET that’s why i’ve wanted a pure C implementation. here’s the code (most of it from the source). read the comments as it saved me a lot of problems accessing higher COM ports. remember to escape the characters in the string!

HANDLE openSerialConsole (LPCSTR p) {
// LPCSTR p is a string containing the name of the device
// in Windows namespace, the safest way to access the COM ports
// is to use the \\.\COMxx syntax. remember, p is a string
// and \ escapes characters so p should really be "\\\\.\\COMxx"
    HANDLE h;
    DCB params = {0};
    COMMTIMEOUTS timeouts = {0};

    h = CreateFile ( p,
        GENERIC_READ | GENERIC_WRITE, // the way we want to interact with the COM port
        0, // not the wisest way to open the device as it takes exclusive control over
        NULL, // no security attributes, meaning no child process access
        OPEN_EXISTING, // only if we have a COM port
        0, // some things i didn't understood completely
        NULL);
    if (h == INVALID_HANDLE_VALUE) {
        printf("Error: Could not create handle!\n");
        return (void *) NULL;
        }

    params.DCBlength = sizeof(params);
    if (!GetCommState(h, &params)) {
        printf("Error: Setting COM State!\n");
        CloseHandle (h);
        return (void *) NULL;
        }

    // 9600 bauds, with a 8N1 format
    params.BaudRate=CBR_9600;
    params.ByteSize=8;
    params.Parity=NOPARITY;
    params.StopBits=ONESTOPBIT;
    if (!SetCommState(h, &params)) {
        printf("Error: Setting BAUD!\n");
        CloseHandle (h);
        return (void *) NULL;
        }

    // timeouts, avoid hanging
    timeouts.ReadIntervalTimeout=50;
    timeouts.ReadTotalTimeoutConstant=50;
    timeouts.ReadTotalTimeoutMultiplier=10;
    timeouts.WriteTotalTimeoutConstant=50;
    timeouts.WriteTotalTimeoutMultiplier=10;
    if (!SetCommTimeouts(h, &timeouts)) {
        printf("Error: Setting timeouts!\n");
        CloseHandle (h);
        return (void *) NULL;
        }

    return h;
    }

unsigned long int readFromSerialConsole ( HANDLE h, char * buffer, int size ) {
    unsigned long int bytes = 0;
    COMSTAT status;
    unsigned long int errors;

    ClearCommError (h, &errors, &status);

    if (status.cbInQue > 0) {
        size = status.cbInQue > size ? size : status.cbInQue;
        if (ReadFile(h, buffer, size, &bytes, NULL) && bytes != 0)
            return bytes;
        }
    return bytes;
    }

unsigned long int writeToSerialConsole(HANDLE h, char * buffer, int size) {
    unsigned long int bytes = 0;
    if (!WriteFile(h, buffer, size, &bytes, NULL));
    return bytes;
    }

void closeSerialConsole (HANDLE h) {
    CloseHandle (h);
    }

bogdan » ken hensley – lady in black[youtube=ht …

01:31 am on Dec 18, 2011 | read the article | tags:

ken hensley – lady in black

bogdan » using mingw with notepad++ and nppexec

11:28 pm on Dec 17, 2011 | read the article | tags:

first time i heard about mingw was from florin manea, then a lecturer at the university of bucharest, faculty of mathematics. i didn’t pay to much attention to it as i was a dedicated gentoo user. time has passed, and the table turned, me being the one to teach a small course on physical computing at the physics faculty. student’s have various backgrounds but none comes from a computer science oriented faculty, so i had to show them how to connect the μC serial output to their windows environment.

(more…)

bogdan » despre protestele studențești

03:43 pm on Dec 4, 2011 | read the article | tags:

o perioadă agitată pentru învățământul superior bucureștean, perioada alegerilor pentru funcțiile de conducere. am văzut protestul colegilor de la istorie și cerințele acestora și am opinii care merită menționate:

«2% din PIB pentru educație este inacceptabil. cerem 6%. aceștia trebuie distribuiti echitabil, in functie de nevoile studentilor si nu conform cerintelor pietei.»
de acord. parțial. îmi plac argumentele și le au foștii colegi de la Ghimpele. în ceea ce privește a doua parte, nu pot să nu regăsesc în frază frustrarea conducerii facultăților nepopulare, a căror situație este consecința directă a inadaptării cadrelor didactice la situația economică și socială actuală, a conducerii care tolerează, invocând principiile colegialității, profesori și curicule care și-au dobândit de mult statutul de exponat de muzeu și care păstrează în subconștient îndoctrinarea ideologică socialistă a dezvoltării multilaterale. cerințele pieței ar trebui să fie și nevoile majorității studenților, însă din punct de vedere al angajatorului, o diplomă de studii superioare este nulă pentru că, nu-i așa, la job nu poți să ai tot timpul “casca” la tine.

«Dorim cresterea autonomiei universitatilor. Au devenit dependente de capital, care reprezinta elita economica a lumii. Universitatile ar trebui sa fie autonome si sprijinite de stat, care sa reprezinte populatia.»
pentru cititorul neinițiat, nu este cazul României. la noi e fix invers: dacă cineva încearcă să atragă fonduri suplimentare de la parteneri privați, devine un “bandit” care își vinde sufletul. în timp ce profesorii care cercetează fictiv pe banii bugetului de stat sunt promovați drept elită. universitatea e autonomă! e un fel de stat în stat, cu guvern, cu președinte, cu parlament și constituție. universitățile sunt sprijinite de stat! însă au și datoria de a atrage fonduri suplimentare, partea vulgarizată de conducere.

«Diploma ar trebui sa reprezinte un statut social ce reflecta o insusire de cunostiinte reale. Acest statut social trebuie sa inceteze sa mai fie o conditie pentru demnitate si functionare normala in societate.»
de acord. însă, după umila mea părere, statutul unui grup se câștigă prin creșterea calității grupului respectiv, nu prin impunere. atât timp cât profesorii cer “șpagă” pentru examene iar studenții se conformează, sau atât timp cât studenții copiază cu “casca” iar profesorii se fac că nu observă, în afară de statutul social de hoț nu prea ai ce să ceri.

«Democratizarea curriculei: orice subiect, orice interes ar trebui reprezentat. Orice student care doreste sa aprofundeze un subiect aleatoriu trebuie sa poate fi reprezentat.»
adevărat. cu o singură completare: există grupuri dizitente care implementează acest sistem fără știrea conducerii. de fapt, singura soluție pentru implementarea acestei cerințe este selecția natural?. la propriu.

voi sări peste o serie de cerințe evidente.

«Cerem statului marirea subventiei fondului de burse. Actuala suma alocata fiecarui individ ca bursa este insuficienta pentru a avea un trai decent. Consideram inacceptabila aceasta umilinta sistematica aplicata studentilor.»
vrem independență și autonomie, însă nu și economică. fondul de burse, dragi protestatari, nu este exclusiv de la bugetul de stat. o universitate care se respectă atrage și altfel de fonduri ce pot fi folosite pentru burse. printre ele se numără inclusiv salariile pentru studenții prinși în contractele de cercetare, care nu numai că nu primesc drepturile salariale cuvenite – cum? este sub demnitatea profesorului să fie plătit din același fond cu un student – dar de multe ori nici nu știu că participă în proiect! apoi, fiecare licitație publică este îndulcită de «ofertanși» cu un număr de burse private acordate fictiv.

«Statutul actual al profesorului este sub demnitatea umana ce poate fi acceptata. Mai mult, remuneratia este inacceptabila, contribuind la scaderea drastica a calitatii educatiei.»
statutul, este cum spuneam și mai sus, consecință a calității grupului din care face parte. remunerația este cât se poate de în concordanță cu munca depusă. să nu ne amăgim. un profesor bun își rotunjește veniturile din contracte de cercetare, câștigate pe drept, pentru care muncește în plus. un profesor prost se plânge la televizor și în proteste că e dezavantajat. că banii sunt puțini pentru cele 6 ore pe săptămână pe care le muncește maximum 28 de săptămâni pe an. să fim serioși.

în concluzie,
grupurile de interese universitare ar trebui să facă presiuni – dacă asta le face plăcere – și în anii în care nu sunt alegeri, iar studenții ar trebui să ocupe biblioteca centrală universitară, și nu o dată pe an, ci în fiecare zi din săptămână.

sursa revendicărilor.

bogdan » franz ferdinand – turn it on; grand va …

11:28 pm on Nov 20, 2011 | read the article | tags:

franz ferdinand – turn it on; grand vanity – got a nerve; wolfmother – woman; the constellations – perfect day; and last, but not least, black rebel motorcycle club – beat the devil’s tatoo

bogdan » dom’ profesor, ați mai pierdut un om. …

10:51 pm on Sep 20, 2011 | read the article | tags:

dom’ profesor, ați mai pierdut un om. care muncea aproape pe gratis și venea și cu bani d-acasă.

aceast sait folosește cookie-uri pentru a îmbunătăți experiența ta, ca vizitator. în același scop, acest sait utilizează modulul Facebook pentru integrarea cu rețeaua lor socială. poți accesa aici politica mea de confidențialitate.