YHLIOT使用

一.文件说明

  • YHIIOT.h 动态库头文件,包含数据结构与调用方法接口
  • YHIIOT.dll Windows平台动态库
  • YHIIOT.so Linux平台动态库

二.结构体与数据说明

重要:

​ char* id_name 设备名称是接口识别交互的关键,每次都需要传入,在配置参数以及数据读写都需要。

1.Device 设备结构体

设备结构体定义

typedef struct Device {
    const char *id_name;      // 设备名称,如"Mitsubishi-01"
    enum YHAPI api;   // key API接口,如"YHAPI.Mitsubishi"
    const char *ip;        // ip端口,如"192.168.99.10:8000"    
    enum YHSOCKET socket;      // socket类型TCP、UDP,如"tcp"
    int16_t option;    // 选项参数,参考各API说明
    int32_t args[5];    // 可选参数,参考各API说明
    const char *argsc[5];  // 可选参数,参考各API说明
    enum YHDATATP datatype; // 数据类型,YHDATATP.ABCD,YHDATATP.BADC,YHDATATP.CDAB,YHDATATP.DCBA
} Device;

2.RWSt 读写结构体

读写结构体定义

typedef struct RWSt {
    const char *id_name;  // 设备名称      如"Mitsubishi-01",与设备结构体一致
    enum YHFUN funcs;    // API方法名  如YHFUN.int16
    const char *vars;        // 变量、参数或值       如"D100"
    int16_t number;         // 读取数量                        
    int16_t option;      // 选项参数,参考各API说明
    int16_t types;       //TCP功能 0 str / 1 hex  纯TCP时用到,是否以16进制发送显示
} RWSt;

3.Data 切片结构

typedef Data { void *data; uintptr_t len; } Data;

4.Ret 返回结构体

​ 状态码请查看YHIIOT状态码章节

typedef Ret { 
  int32_t code; // 状态码
  const char *msg; // 消息
} Ret;

//    如正常返回:
//     Ret { 
//        code:1    ,
//        msg:“ok”      
//    } ;

5.YHAPI API枚举结构

typedef enum YHAPI {
  /**
   * TCP客户端 TcpC=1
   * TCP服务端 TcpS=2
   * UDP客户端 UdpC=3
   * UDP服务端 UdpS=4
   * 串口服务端 SerialC=5
   * 串口服务端 SerialS=6
   * ETHER CAT SerialS=7
   */
  None = 0,
  TcpC = 1,
  TcpS = 2,
  UdpC = 3,
  UdpS = 4,
  SerialC = 5,
  SerialS = 6,
  EtherCAT = 7,
  /**
   * ModbusTcp客户端 ModbusTcpC=20
   * ModbusTcp服务端 ModbusTcpS=21
   */
  ModbusTcpC = 20,
  ModbusTcpS = 21,
} YHAPI;

6.YHDATATP 数据类型枚举结构

typedef enum YHDATATP {
  ABCD = 0,
  BADC = 1,
  CDAB = 2,
  DCBA = 3,
} YHDATATP;

7.YHFUN 方法枚举结构

typedef enum YHFUN {
  /**
   * 读写数据类型和方法
   */
  None = 0,
  I8 = 1,
  I16 = 2,
  I32 = 3,
  I64 = 4,
  U8 = 11,
  U16 = 12,
  U32 = 13,
  U64 = 14,
  F32 = 21,
  F64 = 22,
  STR = 31,
  HEX = 32,
} YHFUN;

3.YHSOCKET socke类型枚举结构

typedef enum YHSOCKET {
  /**
   * TCP类型 TcpC=1001
   * UDP类型 UdpC=1003
   */
  None = 0,
  Tcp = 1001,
  Udp = 1011,
} YHSOCKET;

三.函数说明

1.NewNet 新建设备连接

传入参数 :

​ Device 设备结构体

返回 Ret结构

struct Ret  NewNet(struct Device dev);

2.Read 设备读取数据

传入参数:

​ RWSt 读写结构体定义

​ Data *value 传入切片指针、接收结果

返回 Ret结构

// 设备读取数据
//
struct Ret  Read(struct RWSt wst, struct Data *value);

3.Write 设备写入数据

传入参数:

​ RWSt 读写结构体定义

​ Data 传人Data结构

返回 Ret结构

// 设备写入数据
struct Ret  Write(struct RWSt wst, struct Data value));

4.SetConf 参数设置

传入参数:

​ RWStruct 读写结构体定义

​ char* data 传人字符串(暂未使用)

返回 Ret结构

// 参数设置
//
extern GoInt SetConf(struct RWStruct p, char* data);

RWSt 结构体参数说明
struct RWSt {
    char* id_name;  // 设备名称                      如"Mitsubishi-01",与设备结构体一致
    char* funcs;    // 未使用                           
    char* vars;        // 需要设置的参数名               如"hex_str"            
    int number;        // 读取数量                        
    int option;     // 选项参数,参考各API说明
    int types;      // 设置值
};
vars变量值说明
    hex_str   代表设置TCP发送是以字符串还是二进制,仅纯TCP服务或端客户端起作用
        types 值说明  0:字符串,116进制
    type         设置数据类型
        types值说明
              0:ABCD,1:BADC,2:CDAB,3:DCBA

5.NewServe 新建服务端

服务端使用

传入参数:

​ Device 设备结构体定义,参照结构体说明

返回状态码

// 新建服务端
struct Ret NewServe(struct Device dev);

6.Listener监听IP连入

传入参数:

​ RWStruct 读写结构体定义

返回状态码和连接的IP

// 监听连入IP
struct Ret Listener(struct RWSt wst);

//    如正常返回:
//     Ret { 
//        code:1    ,
//        msg:“192.168.99.10:23456”      
//    } ;    

7.NetClose 关闭接口

纯TCP服务端使用

传入参数:

​ DeviceStruct 设备结构体定义

返回状态码

// 服务端关闭
//
struct Ret NewServe(struct Device dev);
作者:云恒物联  创建时间:2024-10-21 05:56
最后编辑:云恒物联  更新时间:2025-06-08 12:38