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

📄 yt-bak2.15.c

📁 1、监控行业云台控制代码 2、对Pelco-P,Pelco-D进行解析
💻 C
📖 第 1 页 / 共 2 页
字号:
#include     <stdio.h>     #include     <stdlib.h>     #include     <unistd.h>     #include     <sys/types.h>  #include     <sys/stat.h>   #include     <fcntl.h>     #include     <termios.h>   #include     <errno.h>     #include     <string.h>#define YTMAXNUM  16#define TM9K_DEBUG			#ifdef	TM9K_DEBUG#define debug(fmt,args...)	printf(fmt ,##args)#else#define debug(fmt,args...)#endiftypedef struct YTCtrlInfo{    char *name;    char *fileName;    char *codAddr[16];    char *codCtrl[48];    char *codComm[4];    char *codCmd[16];    int  CtrlNum;               //record how many Ctrl Code    int  CmdNum;              //record how many Command Code}YTCTRLINFO, *PYTCTRLINFO;PYTCTRLINFO TMYTCtrlInfo[YTMAXNUM];int SendYTCommand(int Index, int Address, char *Command, char* YTName, unsigned char PresetNo);//---------------------------------------------------------------------int  fd;int  fdio;//---------------------------------------------------------------------//---------------------------------------------------------------------unsigned short io_write(int fd, unsigned long Addr, unsigned short data){		return ioctl(fd, 0x1 | Addr, data);}unsigned short io_read(int fd, unsigned long Addr){	return ioctl(fd, 0x0 | Addr, 0);}//---------------------------------------------------------------------//---------------------------------------------------------------------int main(int argc, char **argv){	int i;	int ret;	 	char *dev    = "/dev/com1"; 		//串口一	char *devio  = "/dev/io"; 			//控制MAX1487E的方向	    printf("Hello  every body!\n");	fd   = open(dev, O_RDWR );         		//| O_NOCTTY | O_NDELAY		fdio = open(devio, O_RDWR );         	//| O_NOCTTY | O_NDELAY		if(fd < 0)	{		printf("com1 file open fail!");	}		if(fdio < 0)	{		printf("io   file open fail!");	}				ret = ioctl(fd, 2400, 0x3);	io_write(fdio, 0x7d400000, 0xffff);	//设置MAX1487E为发送状态    i = strstr("abcddTX", "STX");    printf("strstr= %d %d\n", strstr("abcd", "STX") , i);         InitYTInfo();    ReadYTCommand(0, "./AB.COD");    ReadYTCommand(1, "./PELCO-P.COD");    ReadYTCommand(2, "./TOTA B01.cod");    ReadYTCommand(3, "./PELCO-D.COD");         //SendYTCommand(3, 3, "Up_Start", "AA");    //SendYTCommand(2, 2, "Up_Start", "AA");    //SendYTCommand(1, 1, "Up_Start", "AA");     for(i =0; i < 10; i++){    SendYTCommand(3, 1, "Left_Start", "AA", 0);	sleep(3);	SendYTCommand(3, 1, "Left_Stop", "AA", 0);    	SendYTCommand(3, 1, "Right_Start", "AA", 0);	sleep(3);	SendYTCommand(3, 1, "Right_Stop", "AA", 0);    	SendYTCommand(3, 1, "Up_Start", "AA", 0);	sleep(3);	SendYTCommand(3, 1, "Up_Stop", "AA", 0);    	SendYTCommand(3, 1, "Down_Start", "AA", 0);	sleep(3);	SendYTCommand(3, 1, "Down_Stop", "AA", 0);}			          FreeYTInfo(); 	close(fdio);      close(fd);  	       exit (0);}//-----------------------------------------------------------------------------//Name: InitYTInfo()//Input://-----------------------------------------------------------------------------int InitYTInfo(){     int i, j;           for(j = 0; j < YTMAXNUM ; j++)     {         TMYTCtrlInfo[j] = malloc(sizeof(YTCTRLINFO));         memset( TMYTCtrlInfo[j], 0, sizeof(YTCTRLINFO) );         //--------------------------------------malloc buffer         TMYTCtrlInfo[j]->name = malloc(64);                 TMYTCtrlInfo[j]->fileName = malloc(64);         for(i = 0; i < 16; i++)         {              TMYTCtrlInfo[j]->codAddr[i] = malloc(64);         }         for(i = 0; i < 48; i++)         {              TMYTCtrlInfo[j]->codCtrl[i] = malloc(128);         }         for(i = 0; i < 4; i++)         {              TMYTCtrlInfo[j]->codComm[i] = malloc(32);         }         for(i = 0; i < 16; i++)         {              TMYTCtrlInfo[j]->codCmd[i] = malloc(128);         }         //--------------------------------------     }     return 0;}//-----------------------------------------------------------------------------//Name: InitYTInfo()//Input://-----------------------------------------------------------------------------int FreeYTInfo(){     int i, j;     for(j = 0; j < YTMAXNUM ; j++)     {         //--------------------------------------malloc buffer         free(TMYTCtrlInfo[j]->name);         free(TMYTCtrlInfo[j]->fileName);         for(i = 0; i < 16; i++)         {              free(TMYTCtrlInfo[j]->codAddr[i]);         }         for(i = 0; i < 48; i++)         {              free(TMYTCtrlInfo[j]->codCtrl[i]);         }         for(i = 0; i < 4; i++)         {              free(TMYTCtrlInfo[j]->codComm[i]);         }         for(i = 0; i < 16; i++)         {              free(TMYTCtrlInfo[j]->codCmd[i]);         }         //--------------------------------------         free(TMYTCtrlInfo[j]);     }     return 0;     }//-----------------------------------------------------------------------------//Name: ReadYTCommand//YTName://        YunTai code filename               ex."/user/Cod/AB.COD"//-----------------------------------------------------------------------------int ReadYTCommand(int index, char* fileName){	FILE      *fp;    char       *s;    int        ret = 0;	int        i;    TMYTCtrlInfo[index]->CtrlNum = 0;    TMYTCtrlInfo[index]->CmdNum = 0;    //--------------------------------------malloc buffer    s = malloc(128);    //--------------------------------------	fp = fopen(fileName, "r" );    if(fp == NULL)    {          ret = -1;          goto ReadFreeAll ;    }    //---------------------------Read Address Data    s = fgets(s, 128, fp);    if(strncasecmp(s, "[Address]", 9) != 0)    {          ret = -2;          goto ReadFreeAll ;    }    for(i = 0; i < 16; i++)    {          s  = fgets(s, 128, fp);          if(s == NULL)          {               ret = -2;               goto ReadFreeAll ;          }          strcpy(TMYTCtrlInfo[index]->codAddr[i], s);          //debug("codAddr[%d] -->%s\n", i, TMYTCtrlInfo[index]->codAddr[i] );    }    //---------------------------    Read Crtl Data "[CtrlCode]"    for(i = 0; i < 100; i++)    {          s  = fgets(s, 128, fp);          if(s == NULL)          {               ret = -3;               goto ReadFreeAll ;          }          if(strncasecmp(s, "[CtrlCode]", 10) == 0)          {               break;          }    }    if( i >= 100)    {          ret = -3;          goto ReadFreeAll ;    }    for(i = 0; i < 48; i++)    {          s  = fgets(s, 128, fp);          if(s == NULL)          {               ret = -3;               goto ReadFreeAll ;          }          if(strncasecmp(s, "[Comm]", 6) == 0)          {               break;          }          strcpy(TMYTCtrlInfo[index]->codCtrl[i], s);          //debug("codCtrl[%d] -->%s\n", i, TMYTCtrlInfo[index]->codCtrl[i] );    }    //---------------------------  Read Comm Data "[Comm]"    if( i >= 48)    {          ret = -4;          goto ReadFreeAll ;    }    TMYTCtrlInfo[index]->CtrlNum = i;        for(i = 0; i < 4; i++)    {          s  = fgets(s, 128, fp);          if(s == NULL)          {               ret = -4;               goto ReadFreeAll ;          }          strcpy(TMYTCtrlInfo[index]->codComm[i], s);          //debug("codComm[%d] -->%s\n", i, TMYTCtrlInfo[index]->codComm[i] );    }    if (feof(fp) != 0)    {          ret = 0;          goto ReadFreeAll ;    }    //---------------------------    Read Crtl Data "[CmdCode]"    for(i = 0; i < 10; i++)    {          if (feof(fp) != 0)          {               ret = 0;               goto ReadFreeAll ;          }          s  = fgets(s, 128, fp);          if(s == NULL)          {               ret = 0;               goto ReadFreeAll ;          }          if(strncasecmp(s, "[CmdCode]", 9) == 0)          {               break;          }    }    if( i >= 10)    {          ret = 0;          goto ReadFreeAll ;    }    for(i = 0; i < 16; i++)    {          if (feof(fp) != 0)          {               ret = 0;                         goto ReadCmdEnd;          //file end          }          s  = fgets(s, 128, fp);          if(s == NULL)          {               ret = 0;               goto ReadCmdEnd ;          }          strcpy(TMYTCtrlInfo[index]->codCmd[i], s);          //debug("codCmd[%d] -->%s\n", i, TMYTCtrlInfo[index]->codCmd[i] );    }   ReadCmdEnd:    TMYTCtrlInfo[index]->CmdNum = i;    //--------------------free allReadFreeAll:    	fclose(fp);    free(s);    //--------------------    debug("ReadYTCommand end -------------------------%s, %d, %d, %d !\n", fileName, TMYTCtrlInfo[index]->CtrlNum, TMYTCtrlInfo[index]->CmdNum, ret);        return ret;}//-----------------------------------------------------------------------------//Name: TCVSSendYTCommand//Input://        index = 0: yuntai control code//        index = 1: yuntai command//Address://        YunTai Address ( 1 -- 16)//Command://        control or command code(see appendix) ex. "Up_Start" "Up_Stop" ......//YTName://        YunTai code filename               ex."/user/Cod/AB.COD"//PresetNo:预置点号      (1  --  64)//-----------------------------------------------------------------------------#define TCVYTCodeLength 128int SendYTCommand(int Index, int Address, char *Command, char* YTName, unsigned char PresetNo){    int   i, j;    int   ret = 0;    char *s;    char *ss;    char *Info;    char *Temp;         char  addr[10];    //unsigned char  data;			//2005.2.5	int  data;

⌨️ 快捷键说明

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