| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123 |
- #include "sensor_handle.h"
- #include "modbus_handle.h"
- //#include <gpiod.h>
- #define ANDERSON_temp1 0x0400
- #define ANDERSON_temp2 0x0401
- /// @brief 获取温湿度值
- /// @param manger
- /// @param saddr
- /// @param temp
- /// @param humi
- /// @return
- int _g_sensor_get_temperature_value(void* manger,int saddr,float* temp,float* humi)
- {
- int ret = 0 ;
- unsigned short data_temp[2] = {0};
- ret = g_modbus_read_x_reg(manger,saddr,0,2,data_temp);
- if(ret<=0)
- return -1 ;
- //解算湿度值
- *humi = data_temp[0]/10.0 ;
- //解算温度值
- *temp = data_temp[1]/10.0 ;
- return 0;
- }
- int _g_sensor_get_temperature_value_ANDERSON(void* manger,int saddr,float* temp,float* humi)
- {
- int ret = 0 ;
- unsigned short data_temp[2] = {0};
- ret = g_modbus_read_input_reg(manger,saddr,0,2,data_temp);
- if (ret <= 0)
- {
-
- return -1;
- }
- //解算湿度值
- *humi = data_temp[1]/10.0 ;
- //解算温度值
- *temp = data_temp[0]/10.0 ;
- return 0;
- }
- int _g_sensor_get_D_temperature_value_ANDERSON(void* manger,int saddr,float* temp1,float* temp2)
- {
- int ret = 0 ;
- unsigned short data_temp[1] = {0};
- ret = g_modbus_read_input_reg(manger,saddr,ANDERSON_temp1,1,data_temp);
- if (ret <= 0)
- {
-
- return -1;
- }
- //解算湿度值
- *temp1 = data_temp[0]/10.0 ;
- ret = g_modbus_read_input_reg(manger,saddr,ANDERSON_temp2,1,data_temp);
- if (ret <= 0)
- {
-
- return -1;
- }
- //解算温度值
- *temp2 = data_temp[0]/10.0 ;
- return 0;
- }
- /// @brief 获取IO状态
- /// @param saadr
- /// @param sts
- /// @return
- int _gsensor_get_io_status(int saddr,unsigned char* sts)
- {
- int val;
- struct gpiod_line *line;
- //获取系统IO状态
- int ret = 0 ;
- //获取GPIO引脚的值
- //val = gpiod_line_get_value(line);
- return 0;
- }
- /// @brief 设置IO输出状态
- /// @param saadr
- /// @param sts
- /// @return
- int _gsensor_set_io_status(int saddr,unsigned char sts)
- {
- int val;
- return 0;
- }
- // int _gsensor_io_init(char* port_name,int saddr)
- // {
- // int val;
- // struct gpiod_chip *chip;
- // struct gpiod_line *line;
- // chip = gpiod_chip_open_by_number(0); // 0是设备编号,根据实际情况修改
- // line = gpiod_chip_get_line(chip, X); // 替换X为引脚编号
- // //设置GPIO引脚的方向
- // gpiod_line_request_output(line, "gpio-example", GPIOD_LINE_ACTIVE_STATE_HIGH);
- // //设置GPIO引脚的值
- // gpiod_line_set_value(line, 1); // 设置为高电平
- // //读取GPIO引脚的值
- // val = gpiod_line_get_value(line);
- // printf("GPIO value: %d\n", val);
- // // 关闭GPIO设备
- // gpiod_line_release(line);
- // gpiod_chip_close(chip);
- // }
|