Fórum Ubuntu CZ/SK

Ubuntu pro osobní počítače => Software => Příkazový řádek a programování pro GNU/Linux => Téma založeno: Dragonn 16 Února 2010, 19:47:30

Název: c++ a mysql [vyřešeno]
Přispěvatel: Dragonn 16 Února 2010, 19:47:30
Ahoj všichni!

Snažím se udělat program, který bude vytvářet prostředníka mezi serivou linkou a mysql databází.
Nejprve jsem řešil jak poslouchat na seriovém portu a sbírat příchozí hodnoty (pouze postupné sčítání čísel) a jednou za určitý čas provést akci (uložit do DB). Hledal jsem vlákna, nebo asynchronní přístup k seriovém portu, ale nakonec jsem využil systémového časovače alarm() a zpracování signálu SIGALRM a funguje to jak jsem si představoval.

Teďko když jsem vyřešil komunikaci na seriové lince, řeším komunikaci s mysql a nedokážu si s tím nějak poradit. Nainstaloval jsem libmysql++-dev a program kompiluju s argumentem -lmysqlclient. Průběh g++ nevypíše nic a vytvoří soubor tak, jak má, ale při spuštění vypíše jenom 'Segmentation fault'. Když zakomentuju všechny mysql_* funkce, tak vše ostatní funguje. Vůbec nevím v čem je chyba...

Celý kód zde: http://pastebin.com/d3d8bad33

Děkuju všem za pomoc.

EDIT: Pro ty, kdo se chystají studovat můj kód bych rád vysvětlil chování zařízení připojeném na seriové lince... Zařízení počítá externí pulzy a když dosáhne určitého počtu, odešle nasbíranou hodnotu. Pokud mu pošlete libovolnou hodnotu, odpoví aktuální hodnotou počítadla a začne počítat zase od nuly
Název: Re: c++ a mysql
Přispěvatel: jfoot 16 Února 2010, 22:53:17
Nazdar Dragonne,

řekl bych, že Ti v programu chybí tohle : conn = mysql_init(NULL);  , čili  obdržení connect handleru.  Teprve až je v proměnné conn hodnota NOT null, můžeš teprve použít ono mysql_real_connect(conn, "localhost", "server", "mozaika", "server", 0, NULL, 0)
Název: Re: c++ a mysql
Přispěvatel: Dragonn 16 Února 2010, 23:04:40
díky moc :-) přesně tenhle jeden příkaz mi tam chyběl, pak už to funguje