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

📄 commtest.cpp

📁 VxWorks环境下串口程序!配合硬件系统可以实现定时发送数据
💻 CPP
字号:
#include <vxworks.h>
#include <strLib.h>
#include <stdio.h>
#include <ioLib.h>
#include <logLib.h>
#include <ioctl.h>
#include <selectLib.h>
#include <string.h>
#include <taskLib.h>
#include "intLib.h"
#include "types/vxTypesOld.h"


#include "iv.h"
#include "sysLib.h"
#include "semLib.h"

#define MUL_INT_NUM 		35
#define MUL_R_INT		0x000d43ff
char mQuit;
int sFd;
int tId;
struct fd_set data_fds;
char accept_buf[100];

SEM_ID	semMulId;

void mul_bus_int(void)
{
	semGive(semMulId);
}
void send_data(void)
{
	sFd = open("/tyCo/0", O_RDWR, 0);
	int i, num;
	i = 0;
	unsigned char tmp;
	char buff[] = "Hello!\n";
	int len;
	int width;
	ioctl(sFd, FIOSETOPTIONS, OPT_RAW);	
	ioctl(sFd, FIOBAUDRATE, 9600);
//	ioctl(sFd, SIO_HW_OPTS_SET, CS8|STOPB|PARENB|PARODD);
	ioctl(sFd,FIOFLUSH,0);
	while(mQuit)
	{
		semTake(semMulId, WAIT_FOREVER);
		bcopyBytes((char *)(MUL_R_INT),(char *)tmp,1);	
//		printf("Hello\n");
/*		ioctl(sFd,FIOFLUSH,0);
//		FD_ZERO(&data_fds);
//		FD_SET(sFd, &data_fds);
//		width = sFd + 1;
		if(select(width, NULL, &data_fds, NULL, NULL) == ERROR)
			logMsg("Select Error!\n", 0, 0, 0, 0, 0, 0);
		if(FD_ISSET(sFd, &data_fds));
*/
		len = write(sFd,buff,sizeof(buff));
		logMsg("%d\t%d\n",i++, len, 0, 0, 0, 0);

	}
	ioctl(sFd,FIOFLUSH,0);
	close(sFd);
}

void st()
{
	unsigned char tmp;
	mQuit = 1;
	semMulId = semBCreate (SEM_Q_FIFO, SEM_EMPTY);

	intConnect(INUM_TO_IVEC(MUL_INT_NUM),(VOIDFUNCPTR)mul_bus_int,1);

   	if((tId =taskSpawn ("tSend_data",235,VX_FP_TASK,2000,(FUNCPTR)send_data,0,0,0,0,0,0,0,0,0,0))==ERROR)
	{
		logMsg("task spawn error in recv_data!!\n",0,0,0,0,0,0);
		return;
	}	
	bcopyBytes((char *)(MUL_R_INT),(char *)tmp,1);	
}
void ss()
{
	mQuit = 0;
	close(sFd);
	taskDelete(tId);
	printf("exit\n");
}

⌨️ 快捷键说明

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