Така че имам тази функция (код по-долу) в c, която проверява данни от моята база данни. Ако тези данни са равни на 255, искам да имам светодиод, който да свети на един от моите GPIO щифтове (12) на raspberry pi.
Първо опитах кода БЕЗ bcm функции, всичко работи добре. Сега, когато имам включен bcm2835 и промених своя Makefile (компилирането работи добре), получавам тази грешка „Грешка на сегментиране“.
Знам, че това означава, че програмата ми използва памет, която не трябва да използва, но нямам представа какво причинява това в bcm редовете.
Ето функцията:
void check_pasid(char k[]){
MYSQL *conn;
MYSQL_RES * result;
MYSQL_ROW row;
char *server = "server";
char *user = "myusername";
char *password = "mypassword";
char *database = "dbname";
char query1[100];
// Make the connection to the Mysql-database.
conn = mysql_init(NULL);
if (!mysql_real_connect(conn, server, user, password, database, 0, NULL, 0)) {
fprintf(stderr, "%s\n", mysql_error(conn));
exit(1);
}
sprintf(query1,"SELECT COUNT(*) FROM passcan WHERE UserID = \"%s\";",k);
int result1 = mysql_query(conn, query1);
result = mysql_store_result(conn);
row = mysql_fetch_row(result);
int compare = 1;
compare = strcmp(row[0], "1");
if(compare == 0){
printf("Led is turning on");
// Turn it on
bcm2835_gpio_write(PIN12, HIGH);
delay(5000);
// Turn it off
bcm2835_gpio_write(PIN12, LOW);
}
else{
printf("Led is not turning on");
}
}
Надявам се някой да има информация за мен.
k
е по-малък от около 50 знака или ще имате препълване на буфера. - person Some programmer dude   schedule 14.01.2014