📄 ulan.h
字号:
#ifndef _ULAN_H#define _ULAN_H#ifdef __cplusplusextern "C" {#endif#include <stdarg.h>#include <sys/types.h>#include <ul_lib/ul_drvdef.h>#include <ul_lib/ul_fd.h>/* GNUC neat features */#ifdef __GNUC__#ifndef UL_ATTR_UNUSED#define UL_ATTR_PRINTF( format_idx, arg_idx ) \ __attribute__((format (printf, format_idx, arg_idx)))#define UL_ATTR_SCANF( format_idx, arg_idx ) \ __attribute__((format (scanf, format_idx, arg_idx)))#define UL_ATTR_FORMAT( arg_idx ) \ __attribute__((format_arg (arg_idx)))#define UL_ATTR_NORETURN \ __attribute__((noreturn))#define UL_ATTR_CONST \ __attribute__((const))#define UL_ATTR_UNUSED \ __attribute__((unused))#endif /*UL_ATTR_UNUSED*/#else /* !__GNUC__ */#ifndef UL_ATTR_UNUSED#define UL_ATTR_PRINTF( format_idx, arg_idx )#define UL_ATTR_SCANF( format_idx, arg_idx )#define UL_ATTR_FORMAT( arg_idx )#define UL_ATTR_NORETURN#define UL_ATTR_CONST#define UL_ATTR_UNUSED#endif /*UL_ATTR_UNUSED*/#endif /* !__GNUC__ *//* driver interface */ul_fd_t ul_open(const char *dev_name, const char *options);int ul_close(ul_fd_t ul_fd);int ul_drv_version(ul_fd_t ul_fd);ssize_t ul_read(ul_fd_t ul_fd, void *buffer, size_t size);ssize_t ul_write(ul_fd_t ul_fd, const void *buffer, size_t size);int ul_newmsg(ul_fd_t ul_fd,const ul_msginfo *msginfo);int ul_tailmsg(ul_fd_t ul_fd,const ul_msginfo *msginfo);int ul_freemsg(ul_fd_t ul_fd);int ul_acceptmsg(ul_fd_t ul_fd,ul_msginfo *msginfo);int ul_actailmsg(ul_fd_t ul_fd,ul_msginfo *msginfo);int ul_addfilt(ul_fd_t ul_fd,const ul_msginfo *msginfo);int ul_abortmsg(ul_fd_t ul_fd);int ul_rewmsg(ul_fd_t ul_fd);int ul_inepoll(ul_fd_t ul_fd);int ul_drv_debflg(ul_fd_t ul_fd,int debug_msk);int ul_fd_wait(ul_fd_t ul_fd, int wait_sec);int ul_setmyadr(ul_fd_t ul_fd, int newadr);int ul_setidstr(ul_fd_t ul_fd, const char *idstr);int ul_setbaudrate(ul_fd_t ul_fd, int baudrate);int ul_stroke(ul_fd_t ul_fd);/* simple message operations */int ul_send_command(ul_fd_t ul_fd,int dadr,int cmd,int flg, const void *buf,int len);int ul_send_command_wait(ul_fd_t ul_fd,int dadr,int cmd,int flg, const void *buf,int len);int ul_send_query(ul_fd_t ul_fd,int dadr,int cmd,int flg, const void *buf,int len);int ul_send_query_wait(ul_fd_t ul_fd,int dadr,int cmd,int flg, const void *bufin,int lenin,void **bufout,int *lenout);/* basic uLan commands/services */#define UL_CMD_OISV 0x10 /* Object Interface Service */#define UL_CMD_LCDABS 0x4f /* Absorbance data block */#define UL_CMD_LCDMRK 0x4e /* Mark */#define UL_CMD_NCS 0x7f /* Network Control Service */#define UL_CMD_GST 0xc1 /* Fast module get status *//* definitions of basic uLan OI commands */#define ULOI_AOID 10 /* name is defined in ASCII for DOIx */#define ULOI_DOII 12 /* description of input objects */#define ULOI_DOIO 14 /* description of output objects */#define ULOI_QOII 16 /* ID numbers of recognized input objects */#define ULOI_QOIO 18 /* ID numbers of recognized output objects */#define ULOI_RDRQ 20 /* object values read request */#define ULOI_STATUS 30 /* read instrument status */#define ULOI_ERRCLR 31 /* clear error status */typedef struct uloi_coninfo_t { int adr; /* address of target module */ int cmd; /* service/cmd number for uLOI on target */ int bcmd; /* service/cmd number for returned messages */ int sn; /* sequence counter */ int bsn; /* sequence counter of target module */ int outflg; /* flags used for outgoing messages */ ul_fd_t ul_fd;/* handle for ul_drv */ ul_fd_t ul_fd1;/* the auxiliary handle for ULOI direct reply */ int timeout; /* timeout */ int error; /* error condition occurred */ int state; /* internal state */} uloi_coninfo_t;/* definitions of basic uLan OI functions */uloi_coninfo_t* uloi_open(char *ul_dev_name,int adr,int cmd, int bcmd, int timeout);void uloi_close(uloi_coninfo_t *coninfo);int uloi_transfer(uloi_coninfo_t *coninfo, uchar *bufin,int lenin,uchar **bufout,int *lenout);int uloi_set_var(uloi_coninfo_t *coninfo,int oid, void *val, int size);int uloi_get_var(uloi_coninfo_t *coninfo,int oid, void *val, int size);int uloi_set_var_u2(uloi_coninfo_t *coninfo,int oid,unsigned val);int uloi_get_var_u2(uloi_coninfo_t *coninfo,int oid,unsigned *val);int uloi_send_cmd(uloi_coninfo_t *coninfo,int oid);int uloi_get_oids(uloi_coninfo_t *coninfo,int list,int **oids_list);int uloi_get_oiddes(uloi_coninfo_t *coninfo,int list, int oid, uchar **poiddespack);int uloi_get_aoiddes(uloi_coninfo_t *coninfo,int list,char *aoid, uchar **poiddespack);uchar *uloi_oiddespack_getloc(uchar *despack, int strindex);char *uloi_oiddespack_strdup(uchar *despack, int strindex);/* UL_CMD_NCS Network Control Service */#define ULNCS_ADR_RQ 0xC0 /* SN0 SN1 SN2 SN3 */#define ULNCS_SET_ADDR 0xC1 /* SN0 SN1 SN2 SN3 NEW_ADR */#define ULNCS_SID_RQ 0xC2 /* send serial num and ID string request */#define ULNCS_SID_RPLY 0xC3 /* SN0 SN1 SN2 SN3 ID ... */#define ULNCS_ADDR_NVSV 0xC4 /* SN0 SN1 SN2 SN3 - save addres to EEPROM */#define ULNCS_BOOT_ACT 0xC5 /* SN0 SN1 SN2 SN3 */#define ULNCS_BOOT_ACK 0xC6 /* SN0 SN1 SN2 SN3 */#define ULNCS_SET_SN 0xE0 /* SN0 SN1 SN2 SN3 *//* UL_CMD_RES Reinitialize RS485 or connected module */#define ULRES_LINK 0x10#define ULRES_BAUD 0x12#define ULRES_CPU 0x21 /* password - default 0x55 0xAA */#if 0 #define read error_to_use_read #define write error_to_use_write #define open error_to_use_open #define close error_to_use_close #define ioctl error_to_use_ioctl#endif#ifdef __cplusplus} /* extern "C"*/#endif#endif /* _ULAN_H */
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -