⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 ulan.h

📁 一个linux下rs485驱动程序的源代码
💻 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 + -