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

📄 tyrecv.c

📁 自己近期写的一个串口通信的小程序
💻 C
字号:
#include <vxworks.h>
#include <stdio.h>
#include <ioLib.h >
#include <taskLib.h >
#include <sioLib.h>

int tyRecv( int fd )
{

FILE *stream;
int numread,numwritten,k,mark1;

char buf[100]="set 192.168.1.105:255.255.255.0,192.168.2.105:255.255.255.0,0";
char wbuf[200];
char *bp;
char *wp;

char para[100];
char gpara[200];
char *pa;
char *gp;

char temp[20];

char writ1[]="[network1]";
char writ2[]="\n[network2]";
char writ3[]="\n[canconfig]";
char show1[]="\n ip = ";
char show2[]="\n mask = ";
char show3[]="\n id = ";

char writ0[]="answer ";





//char gpara[200]="answer 192.168.1.105:255.255.255.0,192.168.2.105:255.255.0,1";
char spara[200]="ok";

char c;
int rs;

char *rp;
//char buf[100];
int i,mark;





    printf("tyRecv:");
	printf("%d\n",fd);

	i =0;
       mark=0;
			bzero(buf,sizeof(buf));
			c = '\n';
			printf("'\n' = %d",c);
  while(1)
  {
	rs = read(fd,&c,1);
	if(1==rs)
	{
	  if(('g' == c) || ('G'==c)||('s'==c)||('S'==c))
	     mark=1;
	  if(mark==1)
	  {
		 while(c != 0)
		{ 
//	 		printf("i= %d,c= %c\n",i,c);
			buf[i++]= c;
	//		printf("(if)the string:%s\n",buf);
	        rs=read(fd,&c,1);
		}
		if(c==0)
		{
						printf("i= %d, buf = %s\n",i,buf);
						i=0;
			mark=0;

			if((buf[0]=='g') && (buf[1]=='e')&& (buf[2]=='t'))
			{
			
                /*if( NULL != (stream  = fopen( "boot.ini", "r" )))
                {
					numread=fread(gpara,sizeof(char),200,stream);
				    printf( "Number of items read = %d\n", numread );
                    printf( "Contents of buffer = %.100s\n", gpara );

                    


                    fclose( stream );
				}
                else
                    printf( "File could not be opened\n" );*/
				if( NULL != (stream  = fopen( "boot.ini", "r" )) )
                {
                     printf( "read the writed file\n" ); 
     
                     numread=fread(gpara,sizeof(char),180,stream);
                     printf( "Number of items read = %d\n", numread );
                     printf( "Contents of buffer = %.150s\n", gpara );

	                 /*read 格式处理*/
                     pa=para;
	                 gp=gpara;
	                 strcpy(pa,writ0);
                     k=0;
	                 mark1=0;
	                 while((*gp)!='\0')
	                 {
		                gp++;
		                if((*gp)=='.')
		                {
			               temp[k]=*gp;
			               k++;
		                }

		                if(mark1==1)
		                {
			                if((*gp)>='0'&&(*gp)<='9')
			                {
			                    temp[k]=*gp;
			                    k++;
		                     }

		                }

		                if(*gp=='m')
		                {
                              temp[k]=':';
			                  temp[k+1]='\0';
			                  strcat(pa,temp);
			                  k=0;
		                }

		                if(*gp=='=')
			                 mark1=1;

		                if(*gp=='[')
		                {
			                  temp[k]=',';
			                  temp[k+1]='\0';
			                  strcat(pa,temp);
			                  k=0;
			                  mark1=0;
		                }

	                 }
	                      temp[k]=*gp;
	                      strcat(pa,temp);

	                      printf( "Contents of final  = %s\n", para );

     /*格式转换*/
     /*  [network1]
          ip = 192.168.24.105
          mask = 255.255.255.0
         [network2]
          ip = 192.168.25.105
          mask = 255.255.255.0
         [canconfig]
          id = 0
	 */
                    fclose( stream );
                }
                else
                    printf( "File could not be opened\n" );


			 

			
				rs =write( fd, para, sizeof(para));
	           	printf("rs =%d,the para:%s\n",rs,para);
			}
			else if((buf[0]=='s') && (buf[1]=='e')&& (buf[2]=='t'))
			{
				 
                /*if((stream = fopen( "boot.ini", "w" )) != NULL)
				{
				     numwritten = fwrite( buf, sizeof( char ), 100, stream );
                     printf( "Wrote %d items\n", numwritten );


                     fclose( stream );

                }
				else
                     printf( "Problem opening the file\n" );*/
				if((stream = fopen( "boot.ini", "w" )) != NULL)
                {
	                   printf( "File(write)  opened\n" ); 
		               //write格式处理
		               bp=buf;
		               wp=wbuf;
        
		               bp=bp+3;
    	               while((*bp)==' ')
		                 	bp++;
		               if((*bp)!=' ')
	                   {
			              strcpy(wp,writ1);
			               //get network1 ip
			               k=0;
			              while((*bp)!=':')
			              {
				              temp[k]=*bp;
				              k++;
				              bp++;
			              }
			              bp++;
			              temp[k]='\0';
			              k=0;
			              strcat(wp,show1);
			              strcat(wp,temp);

                          //get network1 mask
                          while((*bp)!=',')
                          {
				                temp[k]=*bp;
				                k++;
				                bp++;
			              }
			              bp++;
			              temp[k]='\0';
			              k=0;
			              strcat(wp,show2);
                          strcat(wp,temp);

                          strcat(wp,writ2);
			              //get network2 ip
			              while((*bp)!=':')
			              {
				             temp[k]=*bp;
				             k++;
				             bp++;
			              }
			              bp++;
			              temp[k]='\0';
			              k=0;
                          strcat(wp,show1);
			              strcat(wp,temp);

                          //get network2 mask
                          while((*bp)!=',')
                          {
				              temp[k]=*bp;
				              k++;
				              bp++;
			              }
			              bp++;
			              temp[k]='\0';
			              k=0;
			              strcat(wp,show2);
                          strcat(wp,temp);

                          strcat(wp,writ3);
			               //get canconfig id
			              while((*bp)!='\0')
			              {
				             temp[k]=*bp;
				             k++;
				             bp++;
			              }
			              temp[k]=*bp;
			              temp[k]='\0';
			              k=0;
			              strcat(wp,show3);
                          strcat(wp,temp);         

		               }	
		
		               numwritten = fwrite( wbuf, sizeof( char ), 180, stream );
                       printf( "Wrote %d items\n", numwritten );
                       // set 192.168.1.105:255.255.255.0,192.168.2.105:255.255.0,0 
        

                       fclose( stream );

                 }
                else
                       printf( "Problem opening the file\n" );





					rs =write( fd, spara, sizeof(spara));
		           	printf("rs =%d,the spara:%s\n",rs,spara);
			}
	  		bzero(buf,sizeof(buf));

		}
		if(i>=100)
		{
			 i=0;
			 mark=0;
 			bzero(buf,sizeof(buf));
		}
	  }
	}
  }

	
taskDelay(1) ;

}

int testMain()
{
int rs =0;
int i;
int fd;
printf("Com Test:\n");
/* Open COM1*/

fd = open("/tyCo/0",O_RDWR,0) ;

if (ERROR==fd)
{
printf("can not open device!\n") ;
return 0 ;
}
/* Set baudrate*/
/*if ( ERROR==ioctl(fd,FIOBAUDRATE,9600) )
{
printf("can not set BAUDRATE!\n") ;
return 0 ;
}

rs = ioctl(fd,FIOSETOPTIONS,OPT_RAW);
if(rs == ERROR )
{
printf("can not set OPT_RAW!\n") ;
return 0 ;
}

rs = ioctl(fd,SIO_HW_OPTS_SET, CS8 | PARENB | PARODD);
if(rs == ERROR )
{
printf("can not set OPTS!\n") ;
return 0 ;
}*/

 /*Start receiving task*/
tyRecv( fd );
//rs = taskSpawn("tComRecv",60,VX_FP_TASK,1024*40,(FUNCPTR)tyRecv,fd,0,0,0,0,0,0,0,0,0) ;

printf("taskSpawn = %d\n ",rs);
}

⌨️ 快捷键说明

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