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
-
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
-
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) .
-
díky moc :-) přesně tenhle jeden příkaz mi tam chyběl, pak už to funguje