Итак, у меня есть эта функция (код ниже) в 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