boonC Ответов: 1

Проблема конфликтующих типов "чтения" в C, при объединении gtk с датчиком bme280


мне нужна некоторая помощь, как я могу решить конфликт ошибок типов 'read' void read(){ ? этот код может сочетать форму GTK и датчик барометра BME280. коды могут работать, если я изначально запускаю отдельно. у меня есть некоторые проблемы, когда я пытаюсь объединить его, я поделюсь своим кодом. проблема будет говорить об этом....


///
280b.c: на верхнем уровне:
280b.c:158:6: ошибка: конфликтующие типы для " чтения’
пустое чтение(){
^~~~
В файле included from /usr/include/glib-2.0/gio/gcredentials.h:32,
from /usr/include/glib-2.0/gio/gio.h:46,
from /usr/include/gtk-2.0/gdk/gdkapplaunchcontext.h:30,
from /usr/include/gtk-2.0/gdk/gdk.h:32,
from /usr/include/gtk-2.0/gtk/gtk.h:32,
от 280b.c:4:
/usr/include/unistd.h:360:16: Примечание: предыдущее объявление ‘read’ было здесь
Экстерн определены чтение (тип int __FD, то на пустоту *__буфер buf, size_t в __то nbytes) __Союз;
///


код bmp280 от sunfounder

/**********************************************************************
* Filename    : bmp280.c
* Description : Simple use for bmp280 through i2c bus
* Author      : Cavon
* Brand       : SunFounder
* E-mail      : support@sunfounder.com
* Website     : www.sunfounder.com
* Update      : Cavon    2016-10-09    New release
**********************************************************************/

#include <stdio.h>
#include <wiringPiI2C.h>
#include <math.h>

#define QNH             1020

// Power mode
//#define POWER_MODE    0   // sleep mode
//#define POWER_MODE    1   // forced mode
//#define POWER_MODE    2   // forced mode
#define POWER_MODE      3   // normal mode

// Temperature resolution
//#define OSRS_T    0    // skipped
//#define OSRS_T    1    // 16 Bit
//#define OSRS_T    2    // 17 Bit
//#define OSRS_T    3    // 18 Bit
//#define OSRS_T    4    // 19 Bit
#define OSRS_T      5    // 20 Bit

// Pressure resolution
//#define OSRS_P    0   // pressure measurement skipped
//#define OSRS_P    1   // 16 Bit ultra low power
//#define OSRS_P    2   // 17 Bit low power
//#define OSRS_P    3   // 18 Bit standard resolution
//#define OSRS_P    4   // 19 Bit high resolution
#define OSRS_P      5   // 20 Bit ultra high resolution

// Filter settings
//#define FILTER    0   //
//#define FILTER    1   //
//#define FILTER    2   //
//#define FILTER    3   //
#define FILTER      4   //
//#define FILTER    5   //
//#define FILTER    6   //
//#define FILTER    7   //

// Standby settings
//#define T_SB      0     // 000 0,5ms
//#define T_SB      1     // 001 62.5 ms
//#define T_SB      2     // 010 125 ms
//#define T_SB      3     // 011 250ms
#define T_SB        4     // 100 500ms
//#define T_SB      5     // 101 1000ms
//#define T_SB      6     // 110 2000ms
//#define T_SB      7     // 111 4000ms

#define BMP280_REGISTER_DIG_T1				0x88
#define BMP280_REGISTER_DIG_T2				0x8A
#define BMP280_REGISTER_DIG_T3				0x8C
#define BMP280_REGISTER_DIG_P1				0x8E
#define BMP280_REGISTER_DIG_P2				0x90
#define BMP280_REGISTER_DIG_P3				0x92
#define BMP280_REGISTER_DIG_P4				0x94
#define BMP280_REGISTER_DIG_P5				0x96
#define BMP280_REGISTER_DIG_P6				0x98
#define BMP280_REGISTER_DIG_P7				0x9A
#define BMP280_REGISTER_DIG_P8				0x9C
#define BMP280_REGISTER_DIG_P9				0x9E
#define BMP280_REGISTER_CHIPID				0xD0
#define BMP280_REGISTER_VERSION				0xD1
#define BMP280_REGISTER_SOFTRESET			0xE0
#define BMP280_REGISTER_CONTROL				0xF4
#define BMP280_REGISTER_CONFIG				0xF5
#define BMP280_REGISTER_STATUS				0xF3
#define BMP280_REGISTER_TEMPDATA_MSB		0xFA
#define BMP280_REGISTER_TEMPDATA_LSB		0xFB
#define BMP280_REGISTER_TEMPDATA_XLSB		0xFC
#define BMP280_REGISTER_PRESSDATA_MSB		0xF7
#define BMP280_REGISTER_PRESSDATA_LSB		0xF8
#define BMP280_REGISTER_PRESSDATA_XLSB		0xF9

int CONFIG = (T_SB <<5) + (FILTER <<2); // combine bits for config
int CTRL_MEAS = (OSRS_T <<5) + (OSRS_P <<2) + POWER_MODE; // combine bits for ctrl_meas

int bmp280 = 0;
struct {
	int chip_id;
	int chip_version;
	double temperature;
	double pressure;
	double altitude;
} bmp;

int dig_T1 = 0;
int dig_T2 = 0;
int dig_T3 = 0;
int dig_P1 = 0;
int dig_P2 = 0;
int dig_P3 = 0;
int dig_P4 = 0;
int dig_P5 = 0;
int dig_P6 = 0;
int dig_P7 = 0;
int dig_P8 = 0;
int dig_P9 = 0;

void write_byte_data(int reg, int value){
	wiringPiI2CWriteReg8(bmp280, reg, value);
}

int read_byte_data(int reg){
	int result;
	result = wiringPiI2CReadReg8(bmp280, reg);
	return result;
}

int read_word_data_unsigned(int reg){
	int result;
	result = wiringPiI2CReadReg16(bmp280, reg);
	return result;
}

int read_word_data_signed(int reg){
	int result;
	result = read_word_data_unsigned(reg);
	if (result > 32767){
		result -= 65536;
	}
	return result;
}

void read_id(self){
	int REG_ID     = 0xD0;
	int result;
	result = read_word_data_unsigned(REG_ID);
	bmp.chip_id = result & 0x00FF;
	bmp.chip_version = result >> 8;
}

void reg_check(self){
	write_byte_data(BMP280_REGISTER_SOFTRESET, 0xB6);
	delay(200);
	write_byte_data(BMP280_REGISTER_CONTROL, CTRL_MEAS);
	delay(200);
	write_byte_data(BMP280_REGISTER_CONFIG, CONFIG);
	delay(200);

	dig_T1 = read_word_data_unsigned(BMP280_REGISTER_DIG_T1); // read correction settings
	dig_T2 = read_word_data_signed(BMP280_REGISTER_DIG_T2);
	dig_T3 = read_word_data_signed(BMP280_REGISTER_DIG_T3);
	dig_P1 = read_word_data_unsigned(BMP280_REGISTER_DIG_P1);
	dig_P2 = read_word_data_signed(BMP280_REGISTER_DIG_P2);
	dig_P3 = read_word_data_signed(BMP280_REGISTER_DIG_P3);
	dig_P4 = read_word_data_signed(BMP280_REGISTER_DIG_P4);
	dig_P5 = read_word_data_signed(BMP280_REGISTER_DIG_P5);
	dig_P6 = read_word_data_signed(BMP280_REGISTER_DIG_P6);
	dig_P7 = read_word_data_signed(BMP280_REGISTER_DIG_P7);
	dig_P8 = read_word_data_signed(BMP280_REGISTER_DIG_P8);
	dig_P9 = read_word_data_signed(BMP280_REGISTER_DIG_P9);
}

void read(){
	int raw_temperature_msb, raw_temperature_lsb, raw_temperature_xlsb;
	int raw_pressure_msb, raw_pressure_lsb, raw_pressure_xlsb;
	int raw_temperature;
	int raw_pressure;
	double var1, var2, temperature, t_fine, pressure, altitude;

	raw_temperature_msb = read_byte_data(BMP280_REGISTER_TEMPDATA_MSB); // read raw temperature msb
	raw_temperature_lsb = read_byte_data(BMP280_REGISTER_TEMPDATA_LSB); // read raw temperature lsb
	raw_temperature_xlsb = read_byte_data(BMP280_REGISTER_TEMPDATA_XLSB); // read raw temperature xlsb
	raw_pressure_msb = read_byte_data(BMP280_REGISTER_PRESSDATA_MSB); // read raw pressure msb
	raw_pressure_lsb = read_byte_data(BMP280_REGISTER_PRESSDATA_LSB); // read raw pressure lsb
	raw_pressure_xlsb = read_byte_data(BMP280_REGISTER_PRESSDATA_XLSB); // read raw pressure xlsb

	raw_temperature=(raw_temperature_msb <<12)+(raw_temperature_lsb<<4)+(raw_temperature_xlsb>>4); // combine 3 bytes  msb 12 bits left, lsb 4 bits left, xlsb 4 bits right
	raw_pressure=(raw_pressure_msb <<12)+(raw_pressure_lsb <<4)+(raw_pressure_xlsb >>4); // combine 3 bytes  msb 12 bits left, lsb 4 bits left, xlsb 4 bits right

	var1=(raw_temperature/16384.0-dig_T1/1024.0)*dig_T2; // formula for temperature from datasheet
	var2=(raw_temperature/131072.0-dig_T1/8192.0)*(raw_temperature/131072.0-dig_T1/8192.0)*dig_T3; // formula for temperature from datasheet
	temperature=(var1+var2)/5120.0; // formula for temperature from datasheet
	t_fine=(var1+var2); // need for pressure calculation

	var1=t_fine/2.0-64000.0; // formula for pressure from datasheet
	var2=var1*var1*dig_P6/32768.0; // formula for pressure from datasheet
	var2=var2+var1*dig_P5*2; // formula for pressure from datasheet
	var2=var2/4.0+dig_P4*65536.0; // formula for pressure from datasheet
	var1=(dig_P3*var1*var1/524288.0+dig_P2*var1)/524288.0; // formula for pressure from datasheet
	var1=(1.0+var1/32768.0)*dig_P1; // formula for pressure from datasheet
	pressure=1048576.0-raw_pressure; // formula for pressure from datasheet
	pressure=(pressure-var2/4096.0)*6250.0/var1; // formula for pressure from datasheet
	var1=dig_P9*pressure*pressure/2147483648.0; // formula for pressure from datasheet
	var2=pressure*dig_P8/32768.0; // formula for pressure from datasheet
	pressure=pressure+(var1+var2+dig_P7)/16.0; // formula for pressure from datasheet

	//altitude= 44330.0 * (1.0 - pow(pressure / (QNH*100), (1.0/5.255))); // formula for altitude from airpressure

	bmp.temperature = temperature;
	bmp.pressure = pressure / 100.0;
}

void main(){
	int address = 0x77;
	bmp280 = wiringPiI2CSetup(address);
	while (1){
		read_id();

		if(bmp.chip_id == 88){
			reg_check();
			read();
			printf("Temperature : %2.2f `C\n", bmp.temperature);
			printf("Pressure    : %5.4f mbar\n\n", bmp.pressure);
		}
		else{
			printf("Error\n");
			// Chip ID should be 88
			printf("Chip ID     : %d\n", bmp.chip_id);
			printf("Version     : %d\n", bmp.chip_version);
			delay(1000);
		}
	}
}



------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------



образец gtk с этикеткой
#include <gtk/gtk.h>

void main(int argc, char *argv[])
{
   gtk_init (&argc, &argv);
   GtkWidget *win = gtk_window_new (GTK_WINDOW_TOPLEVEL);

   gtk_window_set_default_size(GTK_WINDOW(win), 250, 150);

   GtkWidget *lbl = gtk_label_new ("100 C");
   GtkWidget *lbl2 = gtk_label_new ("Bar");

   GtkWidget *tbl = gtk_table_new (1, 2, TRUE);
   gtk_table_attach_defaults (GTK_TABLE (tbl),lbl, 0,1,0,1);
   gtk_table_attach_defaults (GTK_TABLE (tbl),lbl2, 1,2,0,1);
   gtk_container_add (GTK_CONTAINER (win), tbl);

   gtk_widget_show_all (win);

   gtk_main();

}



------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------



проблема первая { попытка заменить метку gtk на чтение bmp280 }

#include <stdio.h>
#include <wiringPiI2C.h>
#include <math.h>
#include <gtk/gtk.h>
#include <string.h>
#include <glib.h>
#include <unistd.h>

#define QNH             1020

// Power mode
//#define POWER_MODE    0   // sleep mode
//#define POWER_MODE    1   // forced mode
//#define POWER_MODE    2   // forced mode
#define POWER_MODE      3   // normal mode

// Temperature resolution
//#define OSRS_T    0    // skipped
//#define OSRS_T    1    // 16 Bit
//#define OSRS_T    2    // 17 Bit
//#define OSRS_T    3    // 18 Bit
//#define OSRS_T    4    // 19 Bit
#define OSRS_T      5    // 20 Bit

// Pressure resolution
//#define OSRS_P    0   // pressure measurement skipped
//#define OSRS_P    1   // 16 Bit ultra low power
//#define OSRS_P    2   // 17 Bit low power
//#define OSRS_P    3   // 18 Bit standard resolution
//#define OSRS_P    4   // 19 Bit high resolution
#define OSRS_P      5   // 20 Bit ultra high resolution

// Filter settings
//#define FILTER    0   //
//#define FILTER    1   //
//#define FILTER    2   //
//#define FILTER    3   //
#define FILTER      4   //
//#define FILTER    5   //
//#define FILTER    6   //
//#define FILTER    7   //

// Standby settings
//#define T_SB      0     // 000 0,5ms
//#define T_SB      1     // 001 62.5 ms
//#define T_SB      2     // 010 125 ms
//#define T_SB      3     // 011 250ms
#define T_SB        4     // 100 500ms
//#define T_SB      5     // 101 1000ms
//#define T_SB      6     // 110 2000ms
//#define T_SB      7     // 111 4000ms

#define BMP280_REGISTER_DIG_T1				0x88
#define BMP280_REGISTER_DIG_T2				0x8A
#define BMP280_REGISTER_DIG_T3				0x8C
#define BMP280_REGISTER_DIG_P1				0x8E
#define BMP280_REGISTER_DIG_P2				0x90
#define BMP280_REGISTER_DIG_P3				0x92
#define BMP280_REGISTER_DIG_P4				0x94
#define BMP280_REGISTER_DIG_P5				0x96
#define BMP280_REGISTER_DIG_P6				0x98
#define BMP280_REGISTER_DIG_P7				0x9A
#define BMP280_REGISTER_DIG_P8				0x9C
#define BMP280_REGISTER_DIG_P9				0x9E
#define BMP280_REGISTER_CHIPID				0xD0
#define BMP280_REGISTER_VERSION				0xD1
#define BMP280_REGISTER_SOFTRESET			0xE0
#define BMP280_REGISTER_CONTROL				0xF4
#define BMP280_REGISTER_CONFIG				0xF5
#define BMP280_REGISTER_STATUS				0xF3
#define BMP280_REGISTER_TEMPDATA_MSB		0xFA
#define BMP280_REGISTER_TEMPDATA_LSB		0xFB
#define BMP280_REGISTER_TEMPDATA_XLSB		0xFC
#define BMP280_REGISTER_PRESSDATA_MSB		0xF7
#define BMP280_REGISTER_PRESSDATA_LSB		0xF8
#define BMP280_REGISTER_PRESSDATA_XLSB		0xF9

int CONFIG = (T_SB <<5) + (FILTER <<2); // combine bits for config
int CTRL_MEAS = (OSRS_T <<5) + (OSRS_P <<2) + POWER_MODE; // combine bits for ctrl_meas

int bmp280 = 0;
struct {
	int chip_id;
	int chip_version;
	double temperature;
	double pressure;
	double altitude;
} bmp;

int dig_T1 = 0;
int dig_T2 = 0;
int dig_T3 = 0;
int dig_P1 = 0;
int dig_P2 = 0;
int dig_P3 = 0;
int dig_P4 = 0;
int dig_P5 = 0;
int dig_P6 = 0;
int dig_P7 = 0;
int dig_P8 = 0;
int dig_P9 = 0;

void write_byte_data(int reg, int value){
	wiringPiI2CWriteReg8(bmp280, reg, value);
}

int read_byte_data(int reg){
	int result;
	result = wiringPiI2CReadReg8(bmp280, reg);
	return result;
}

int read_word_data_unsigned(int reg){
	int result;
	result = wiringPiI2CReadReg16(bmp280, reg);
	return result;
}

int read_word_data_signed(int reg){
	int result;
	result = read_word_data_unsigned(reg);
	if (result > 32767){
		result -= 65536;
	}
	return result;
}

void read_id(self){
	int REG_ID     = 0xD0;
	int result;
	result = read_word_data_unsigned(REG_ID);
	bmp.chip_id = result & 0x00FF;
	bmp.chip_version = result >> 8;
}

void reg_check(self){
	write_byte_data(BMP280_REGISTER_SOFTRESET, 0xB6);
	delay(200);
	write_byte_data(BMP280_REGISTER_CONTROL, CTRL_MEAS);
	delay(200);
	write_byte_data(BMP280_REGISTER_CONFIG, CONFIG);
	delay(200);

	dig_T1 = read_word_data_unsigned(BMP280_REGISTER_DIG_T1); // read correction settings
	dig_T2 = read_word_data_signed(BMP280_REGISTER_DIG_T2);
	dig_T3 = read_word_data_signed(BMP280_REGISTER_DIG_T3);
	dig_P1 = read_word_data_unsigned(BMP280_REGISTER_DIG_P1);
	dig_P2 = read_word_data_signed(BMP280_REGISTER_DIG_P2);
	dig_P3 = read_word_data_signed(BMP280_REGISTER_DIG_P3);
	dig_P4 = read_word_data_signed(BMP280_REGISTER_DIG_P4);
	dig_P5 = read_word_data_signed(BMP280_REGISTER_DIG_P5);
	dig_P6 = read_word_data_signed(BMP280_REGISTER_DIG_P6);
	dig_P7 = read_word_data_signed(BMP280_REGISTER_DIG_P7);
	dig_P8 = read_word_data_signed(BMP280_REGISTER_DIG_P8);
	dig_P9 = read_word_data_signed(BMP280_REGISTER_DIG_P9);
}

void read(){
	int raw_temperature_msb, raw_temperature_lsb, raw_temperature_xlsb;
	int raw_pressure_msb, raw_pressure_lsb, raw_pressure_xlsb;
	int raw_temperature;
	int raw_pressure;
	double var1, var2, temperature, t_fine, pressure, altitude;

	raw_temperature_msb = read_byte_data(BMP280_REGISTER_TEMPDATA_MSB); // read raw temperature msb
	raw_temperature_lsb = read_byte_data(BMP280_REGISTER_TEMPDATA_LSB); // read raw temperature lsb
	raw_temperature_xlsb = read_byte_data(BMP280_REGISTER_TEMPDATA_XLSB); // read raw temperature xlsb
	raw_pressure_msb = read_byte_data(BMP280_REGISTER_PRESSDATA_MSB); // read raw pressure msb
	raw_pressure_lsb = read_byte_data(BMP280_REGISTER_PRESSDATA_LSB); // read raw pressure lsb
	raw_pressure_xlsb = read_byte_data(BMP280_REGISTER_PRESSDATA_XLSB); // read raw pressure xlsb

	raw_temperature=(raw_temperature_msb <<12)+(raw_temperature_lsb<<4)+(raw_temperature_xlsb>>4); // combine 3 bytes  msb 12 bits left, lsb 4 bits left, xlsb 4 bits right
	raw_pressure=(raw_pressure_msb <<12)+(raw_pressure_lsb <<4)+(raw_pressure_xlsb >>4); // combine 3 bytes  msb 12 bits left, lsb 4 bits left, xlsb 4 bits right

	var1=(raw_temperature/16384.0-dig_T1/1024.0)*dig_T2; // formula for temperature from datasheet
	var2=(raw_temperature/131072.0-dig_T1/8192.0)*(raw_temperature/131072.0-dig_T1/8192.0)*dig_T3; // formula for temperature from datasheet
	temperature=(var1+var2)/5120.0; // formula for temperature from datasheet
	t_fine=(var1+var2); // need for pressure calculation

	var1=t_fine/2.0-64000.0; // formula for pressure from datasheet
	var2=var1*var1*dig_P6/32768.0; // formula for pressure from datasheet
	var2=var2+var1*dig_P5*2; // formula for pressure from datasheet
	var2=var2/4.0+dig_P4*65536.0; // formula for pressure from datasheet
	var1=(dig_P3*var1*var1/524288.0+dig_P2*var1)/524288.0; // formula for pressure from datasheet
	var1=(1.0+var1/32768.0)*dig_P1; // formula for pressure from datasheet
	pressure=1048576.0-raw_pressure; // formula for pressure from datasheet
	pressure=(pressure-var2/4096.0)*6250.0/var1; // formula for pressure from datasheet
	var1=dig_P9*pressure*pressure/2147483648.0; // formula for pressure from datasheet
	var2=pressure*dig_P8/32768.0; // formula for pressure from datasheet
	pressure=pressure+(var1+var2+dig_P7)/16.0; // formula for pressure from datasheet

	//altitude= 44330.0 * (1.0 - pow(pressure / (QNH*100), (1.0/5.255))); // formula for altitude from airpressure

	bmp.temperature = temperature;
	bmp.pressure = pressure / 100.0;

}

 int main(){
	int address = 0x77;
	bmp280 = wiringPiI2CSetup(address);
	while (1){
		read_id();
		char Sta[100];
		char Stb[100];
		if(bmp.chip_id == 88){
			reg_check();
			read();
			
			// printf("Temperature : %2.2f `C\n", bmp.temperature);
			// printf("Pressure    : %5.4f mbar\n\n", bmp.pressure);
			sprintf(Sta, "Temperature : %2.2f `C\n", bmp.temperature);
			sprintf(Stb, "Pressure    : %5.4f mbar\n\n", bmp.pressure);

		

		}
		else{
			printf("Error\n");
			// Chip ID should be 88
			// printf("Chip ID     : %d\n", bmp.chip_id);
			// printf("Version     : %d\n", bmp.chip_version);
			sprintf(Sta, "Chip ID     : %d\n", bmp.chip_id);
			sprintf(Stb, "Version     : %d\n", bmp.chip_version);
			delay(1000);
		}
		


	 int gtk(int argc, char *argv[])
   	{ 


   	gtk_init (&argc, &argv);
   	GtkWidget *win = gtk_window_new (GTK_WINDOW_TOPLEVEL);

	   gtk_window_set_default_size(GTK_WINDOW(win), 250, 150);

	   GtkWidget *lbl = gtk_label_new (Sta);
	   GtkWidget *lbl2 = gtk_label_new (Stb);

	   GtkWidget *tbl = gtk_table_new (1, 2, TRUE);
	   gtk_table_attach_defaults (GTK_TABLE (tbl),lbl, 0,1,0,1);
	   gtk_table_attach_defaults (GTK_TABLE (tbl),lbl2, 1,2,0,1);
	   gtk_container_add (GTK_CONTAINER (win), tbl);

	   gtk_widget_show_all (win);

	   gtk_main();

	  }
     }
}


Что я уже пробовал:

я мог бы быть стартером для программирования на языке Си, но я дал задание сделать графический интерфейс датчика bmp280. На самом деле я никогда раньше не учился программированию, внезапно у меня был перевод на программную часть, и мне пришлось сделать графический интерфейс о чтении датчиков. я хочу получить решение как можно быстрее.

Richard MacCutchan

Бесполезно просто сбрасывать весь ваш код и говорить: "у меня есть какая-то проблема". У нас нет возможности угадать, о какой проблеме вы говорите и где она возникает. Поэтому, пожалуйста, еще раз покажите только тот код, который имеет отношение к проблеме, и четко объясните, что это за проблема и где она возникает. И это включает в себя точный текст любых сообщений об ошибках.

markkuk

Вырезание и склеивание случайных битов кода вместе никогда не будет работать. Вам нужно действительно прочитать и изучить основы, чтобы создать рабочую программу.

KarstenK

покажите проблемную строку кода и полное текстовое сообщение об ошибке. Может быть, вы сами сможете погуглить после кода ошибки ...

boonC

даже вы говорите, что google, google не может помочь так много. google не может дать вам никакого связанного решения. если у google есть решение, я не буду писать форум, чтобы получить какие-то советы или помощь от других.

1 Ответов

Рейтинг:
1

CPallini

Цитата:
пустое чтение(){
инт raw_temperature_msb, raw_temperature_lsb, raw_temperature_xlsb;
инт raw_pressure_msb, raw_pressure_lsb, raw_pressure_xlsb;
инт raw_temperature;
Это и есть виновник.
Имя вашей функции конфликтует с этим именем: read(2) - Страница руководства Linux[^].
Я предлагаю вам изменить сигнатуру вашей функции на что-то вроде:
void read_all_values()