📄 yt-bak2.15.c
字号:
#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 + -