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

📄 ul_tst.c

📁 linux下的RS485的驱动 值得一看
💻 C
字号:
/*******************************************************************  uLan Communication - uL_DRV - multiplatform uLan driver  ul_tst.c	- some routines for kernel internal tests of driver  (C) Copyright 1996-2004 by Pavel Pisa - project originator        http://cmp.felk.cvut.cz/~pisa  (C) Copyright 1996-2004 PiKRON Ltd.        http://www.pikron.com  (C) Copyright 2002-2004 Petr Smolik    The uLan driver project can be used and distributed   in compliance with any of next licenses   - GPL - GNU Public License     See file COPYING for details.   - LGPL - Lesser GNU Public License   - MPL - Mozilla Public License   - and other licenses added by project originator  Code can be modified and re-distributed under any combination  of the above listed licenses. If contributor does not agree with  some of the licenses, he/she can delete appropriate line.  WARNING: if you delete all lines, you are not allowed to  distribute code or sources in any form. *******************************************************************//*******************************************************************//* Some internal test routines *//* standard command codes    00H .. 3FH    store to buffer    40H .. 7FH    store to buffer without ACK   80H .. 9FH    proccess at onece   A0H .. BFH    process with additional receive   C0H .. FFH    process with additional send*/#define UL_CMD_RES	0x80	/* Reinitialize RS485 */#define UL_CMD_SFT	0x81	/* Test free space in input buffer */#define UL_CMD_SID	0xF0	/* Send identification */#define UL_CMD_SFI	0xF1	/* Send amount of free space in IB */#define UL_CMD_TF0	0x98	/* End of stepping */#define UL_CMD_TF1	0x99	/* Begin of stepping */#define UL_CMD_STP	0x9A	/* Do step */#define UL_CMD_DEB	0x9B	/* Additional debug commands */#define UL_CMD_SPC	0xDA	/* Send state - for 8051 PCL PCH PSW ACC */#define UL_CMD_RDM	0xF8	/* Read memory   T T B B L L */#define UL_CMD_WRM	0xB8	/* Write mamory  T T B B L L */void genrdmemblk(ul_drv *udrv, uchar dadr, int mtyp, int mbeg, int mlen){  ul_mem_blk *blk, *beg_blk;  ul_data_it di;  blk=ul_new_frame_head(udrv, 3, 2, UL_CMD_RDM,       UL_BFL_M2IN|UL_BFL_TAIL|UL_BFL_SND|       UL_BFL_PRQ|UL_BFL_ARQ);  if(blk==NULL) return;  beg_blk=blk;  ul_di_init(&di,blk);  /* ul_di_write1(&di,0); */  ul_di_write1(&di,(uchar)mtyp);  ul_di_write1(&di,(uchar)(mtyp>>8));  ul_di_write1(&di,(uchar)mbeg);  ul_di_write1(&di,(uchar)(mbeg>>8));  ul_di_write1(&di,(uchar)mlen);  ul_di_write1(&di,(uchar)(mlen>>8));  UL_BLK_HEAD(blk).len=di.pos;  blk=ul_new_frame_head(udrv, 0, 0, 0,       UL_BFL_M2IN|UL_BFL_REC|       UL_BFL_PRQ|UL_BFL_ARQ /*|UL_BFL_LNMM*/);  if(blk==NULL) { ul_free_blk(udrv,beg_blk); return;};  /* UL_BLK_HEAD(blk).len=mlen; */  ul_tail_frame_head(beg_blk,blk);  ul_bll_move_mes(&udrv->prep_bll,beg_blk);};void geninfoblk(ul_drv *udrv){  static int seq_num=0;  ul_mem_blk *blk, *beg_blk;  ul_data_it di;  blk=ul_new_frame_head(udrv, 3, 2, UL_CMD_SID,       UL_BFL_M2IN|UL_BFL_TAIL|UL_BFL_SND|       UL_BFL_PRQ|UL_BFL_ARQ);  if(blk==NULL) return;  beg_blk=blk;  ul_di_init(&di,blk);  /* ul_di_write1(&di,0); */  ul_di_write1(&di,1);  ul_di_write1(&di,2);  ul_di_write1(&di,3);  ul_di_write1(&di,(uchar)(seq_num++));  UL_BLK_HEAD(blk).len=di.pos;  blk=ul_new_frame_head(udrv, 0, 0, 0,       UL_BFL_M2IN|UL_BFL_REC|       UL_BFL_PRQ|UL_BFL_ARQ);  if(blk==NULL) { ul_free_blk(udrv,beg_blk); return;};  ul_tail_frame_head(beg_blk,blk);  ul_bll_move_mes(&udrv->prep_bll,beg_blk);};void gentestblk(ul_drv *udrv){  static int seq_num=0;  ul_mem_blk *blk;  ul_data_it di;  blk=ul_new_frame_head(udrv, 3, 2, 0x23,       UL_BFL_M2IN|UL_BFL_SND|UL_BFL_ARQ);  if(blk==NULL) return;  ul_di_init(&di,blk);  /* ul_di_write1(&di,0); */  ul_di_write1(&di,0x11);  ul_di_write1(&di,0x12);  ul_di_write1(&di,0x13);  ul_di_write1(&di,(uchar)(seq_num++));  UL_BLK_HEAD(blk).len=di.pos;  ul_bll_move_mes(&udrv->prep_bll,blk);};

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -