Пытаюсь прочитать через i2c eeprom память m24sr04 (Dynamic NFC/RFID tag IC with 4-Kbit EEPROM). Предварительно записал в тэг с помощью NFC некоторую информацию. И могу эту же информацию считать с помощью NFC. Данная программа корректно читает вторую eeprom в которую записаны настройки платы (плата на основе PowerPC, Linux), но при считывании eeprom m24sr04 выводит множество "255" (при %d) или множество квадратиков (при %c). Может кто знает в чем моя ошибка и как поступить в данной ситуации?
int main () {
int file;
char filename[40];
const char *buffer;
int addr = 0x2d; // The I2C address of the ADC
sprintf(filename, "/dev/i2c-0");
if ((file = open(filename, O_RDWR)) < 0) {
printf("Failed to open the bus.");
/* ERROR HANDLING; you can check errno to see what went wrong */
exit(1);
} else {
printf("Success open the bus.\n");
}
if (ioctl(file, I2C_SLAVE, addr) < 0) {
printf("Failed to acquire bus access and/or talk to slave.\n");
/* ERROR HANDLING; you can check errno to see what went wrong */
exit(1);
} else {
printf("Managed to access the bus and / or talk to the slave\n");
}
/// Read
unsigned char buf1[10000] = {0};
int buf2[10000] = {0};
if (read(file, buf1, 1000) != 1000) {
/* ERROR HANDLING: i2c transaction failed */
printf("Failed to read from the i2c bus.\n");
buffer = strerror(errno);
cout << buffer << endl;
printf("\n\n");
} else {
for(int j = 0; j<1000; j++) {
printf("%d ", buf1[j]);
}
printf("\n\n");
}
}
Как развивать веб-проекты в 2026 году: технологии, контент E-E-A-T и факторы доверия
Современные инструменты для криптотрейдинга: как технологии помогают принимать решения
Апостиль в Лос-Анджелесе без лишних нервов и бумажной волокиты
Основные этапы разработки сайта для стоматологической клиники