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

📄 070204_wd_ready.c

📁 自己写的vxworks下串口编程代码
💻 C
字号:
#include <ioLib.h>
#include <stdio.h>
#include <taskLib.h>
#include <sioLib.h>
#include <logLib.h>
#include <wdLib.h>
#include <sysLib.h>

WDOG_ID wdSend;
#define TPRI_SEND  106
#define TPRI_RECV  102
#define USER_STACK_SIZE 0X2000
#define BAUDRATE 19200

void tySend(int fd);
void tyRecv(int fd);
void initSend(int fd);

int testMain()
{
    int com1_Fd/*,com2_Fd*/;
    com1_Fd = open("/tyCo/0",2,0) ; /* 打开串口0,即serial<->com1 */
   /* com2_Fd = open("/tyCo/1",2,0); */

    /* 设置串口0的波特率19200,8数据为,1停止位,无校验位 */
    if ( ERROR==ioctl(com1_Fd,FIOBAUDRATE,BAUDRATE) )
        {
        	printf("com1 can not set BAUDRATE!\n") ;
        	return ERROR ;
        }
    if ( ERROR==ioctl(com1_Fd,SIO_HW_OPTS_SET,(CLOCAL|CREAD|CS8)&~(HUPCL|STOPB|PARENB)))
    	{
    		printf("can not set OPT!\n") ; 
    		return ERROR ;
      }
    ioctl(com1_Fd,FIOFLUSH,0);

  /*
    if ( ERROR==ioctl(com2_Fd,FIOBAUDRATE,BAUDRATE) )
    	{
    		printf("com2 can not set BAUDRATE!\n") ;
    		return ERROR ;
      }
    if ( ERROR==ioctl(com2_Fd,SIO_HW_OPTS_SET,(CLOCAL|CREAD|CS8)&~(HUPCL|STOPB|PARENB)))
    	{
    		printf("can not set OPT!\n") ;
    		return ERROR ;
    	}
    ioctl(com2_Fd,FIOFLUSH,0);
*/

    /* 发起接受数据的任务 */
 /*   taskSpawn("recv",TPRI_RECV,0,USER_STACK_SIZE,(FUNCPTR)tyRecv,com1_Fd,0,0,0,0,0,0,0,0,0);*/
    /* 发起发送数据的任务*/
    taskSpawn("send",TPRI_SEND,0,USER_STACK_SIZE,(FUNCPTR)initSend,com1_Fd,0,0,0,0,0,0,0,0,0);
    return OK;
}

void initSend(int fd)
{
    wdSend = wdCreate();
    wdStart(wdSend, sysClkRateGet(),(FUNCPTR)tySend,fd);

}



void tySend(int fd)
{  
	/*  int i=0;*/
    int wrtCount;
    unsigned char buff[94]={0x7e,0x7e,0x01}; /* 发送内容 */
    buff[93] = 0xff;
    wdStart(wdSend, sysClkRateGet(),(FUNCPTR)tySend,fd);
     buff[4] = 0x40;
     buff[5] = 0x45;
      wrtCount = write(fd,buff,sizeof(buff));
    /*  printf("write %d bytes to com1\n",wrtCount); 
      printf("%d\n",++i);
     */
      logMsg("write %d bytes to com1\n",wrtCount,0,0,0,0,0) ;
      
   
}

void tyRecv(int fd)
{
    int readCnt1;
     unsigned char rd;
     unsigned char buff[1024];
    int i,j;
    FOREVER
      {
      	i=0; 
        taskDelay(1);
      	ioctl(fd,FIONREAD,(int) &readCnt1); /* 判断接收数据缓冲区是否有数据到来 */
      	if(readCnt1>0) 
      		 { 
      		 	 while(readCnt1>0)
      		 	   {
      		 	   	 read(fd,&rd,1); 
      		 	   	 readCnt1--;
      		 	   	 buff[i++]=rd;
      		 	   }
        printf("read %d chars\n",i);
        for(j=0;j<94;j++)
        printf("%02x",buff[j]);
        printf("\n");
           }
      }
}

⌨️ 快捷键说明

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