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

📄 sp2339.c

📁 采用gpio口来控制串口扩展芯片的驱动和测试程序
💻 C
字号:
#include <fcntl.h>#include <stdio.h>#include <sys/types.h>#include <sys/stat.h>#include <termios.h>#include <unistd.h>#include <stdlib.h>#include <string.h>#include "serial.h"//#include "sp2339.h"#define IOCTL_GPIO_INIT			1#define IOCTL_GPIO_WRITE		2#define IOCTL_GPIO_READ			3#define get_term_param(param) tcgetattr(0, param)#define set_term_param(param) tcsetattr(0, TCSANOW, param)#define     Nop      0x00#define     Reset     0x01#define     Sleep     0x02#define     P0_only   0x0C#define     P1_only   0x0D#define     P2_only   0x0E#define	STR_LEN	1024//char *phone_num   = (char *) 0;//char *phone_num2  = (char *) 0;//int use_env=0;void init_sp2339(int, char, unsigned long);void send_change(char *,char *);void *dup_mem __P((void *b, size_t c));char *clean __P((register char *s, int sending));static int fd;        //= open("/dev/ttyS0", O_RDWR|O_NOCTTY);static int fd_gpio;   //= open("/dev/ttyS0", O_RDWR|O_NOCTTY); void Delay(int nSecNr){   //int iMsec=1250;  // float iMsec=1250*nSecNr;  float iMsec=1250*nSecNr;   while(iMsec>0)       iMsec--;}int main(int argc, char *argv[]){	int size;	struct termios oldt,newt; 	char buffer[256]; 			 int ComPort=1;	 int baudrate=460800;	 int databit=8;	 const char *stopbit="1";	 char parity='N';	 printf("begin to open\n");	 int reval=OpenComPort(ComPort, baudrate, databit, stopbit, parity);                 //      printf("argv[1] is: %s\n",argv[1]);	//	int len=strlen(argv[1]);		//   char init_com4=(char)(0x00); 	char str[]="dfhj"; 	int i=0;	for(i; i<1; i++)	{	WriteComPort (str, strlen(str));	printf("str= %s   %d\n",str, strlen(str));	}	  		  	//	  sleep(10);	  	 unsigned char init_com0=0x31;	  //int res=WriteComPort (&init_com0, 1);	  /*	  	  int nLoop=0;	  int nResult=0;	  for(;nLoop<1;nLoop++)	  {						//printf("No%d= data=%d char=%c\n",nLoop,init_com0,init_com0);		//printf("data=%d  char=%c\n",init_com0,init_com0);			//nResult+=		WriteComPort (&init_com0, 1);					init_com0++;		//printf("nResult==%d\n",nResult);	  }	  */	  	  	  	  //	   memset(buffer,'\0',256);//	 size=ReadComPort (buffer, 256);//	 size = read(fd,buffer,256);	 	//	buffer[size]='\0';//	printf("Read return is: %s\n",buffer);              Delay(5);	CloseComPort ( );//       fd_gpio = open("/dev/gpio", O_RDWR|O_NOCTTY);  	            }void init_sp2339(int argc, char argv,unsigned long arg){        printf("start of init \n");   	char init_string=(char)(0x07);//	int len=strlen(init_string);	 printf("end of init\n");}void send_change(char ch[],char ch_new[]){ int len=strlen(ch);//char ch_new[len*4]; //printf("send string length is %d\n",len); int i=0,j=0;while(i<len){ch_new[4*i]=ch[i];for(j=1;j<=3;j++){ //ch_new[j+4*i]=(char)(0x30); ch_new[j+4*i]=(char)(0x00); printf("%c\n",ch_new[j+4*i]); }i++;//printf("value of i is %d \n",i);}printf("ch_new is %s\n",ch_new); int length=strlen(ch_new);  printf("lenght of ch_new is %d\n",ch_new );}void *dup_mem(b, c)void *b;size_t c;{    void *ans = malloc (c);    if (!ans)	printf("memory error!");    memcpy (ans, b, c);    return ans;}char *clean(s, sending)register char *s;int sending;  /* set to 1 when sending (putting) this string. */{    char temp[STR_LEN], env_str[STR_LEN], cur_chr;    register char *s1, *phchar;    int add_return = sending;#define isoctal(chr)	(((chr) >= '0') && ((chr) <= '7'))#define isalnumx(chr)	((((chr) >= '0') && ((chr) <= '9')) \			 || (((chr) >= 'a') && ((chr) <= 'z')) \			 || (((chr) >= 'A') && ((chr) <= 'Z')) \			 || (chr) == '_')    s1 = temp;    while (*s)     {	cur_chr = *s++;	if (cur_chr == '^') {	    cur_chr = *s++;	    if (cur_chr == '\0') {		*s1++ = '^';		break;	    }	    cur_chr &= 0x1F;	    if (cur_chr != 0) {		*s1++ = cur_chr;	    }	    continue;	}		/*		if (use_env && cur_chr == '$') {		//ARI 	    phchar = env_str;	    while (isalnumx(*s))		*phchar++ = *s++;	    *phchar = '\0';	    phchar = getenv(env_str);	    if (phchar)		while (*phchar)		    *s1++ = *phchar++;	    continue;	}*/	if (cur_chr != '\\') 	{	    *s1++ = cur_chr;	    continue;		}	cur_chr = *s++;	if (cur_chr == '\0') 	{	    if (sending) 	    {		*s1++ = '\\';		*s1++ = '\\';	    }	    break;	 }	switch (cur_chr) 	{	case 'b':	    *s1++ = '\b';	    break;	case 'c':	    if (sending && *s == '\0')		add_return = 0;	    else		*s1++ = cur_chr;	    break;	case '\\':	case 'K':	case 'p':	case 'd':	    if (sending)		*s1++ = '\\';	    *s1++ = cur_chr;	    break;	case 'q'://	    quiet = 1;	    break;	case 'r':	    *s1++ = '\r';	    break;	case 'n':	    *s1++ = '\n';	    break;	case 's':	    *s1++ = ' ';	    break;	case 't':	    *s1++ = '\t';	    break;	case 'N':	    if (sending) {		*s1++ = '\\';		*s1++ = '\0';	    }	    else		*s1++ = 'N';	    break;/*	    	case '$':			// ARI	    if (use_env) {		*s1++ = cur_chr;		break;	    }	    */	    /* FALL THROUGH */	default:	    if (isoctal (cur_chr)) 	    {		cur_chr &= 0x07;		if (isoctal (*s)) {		    cur_chr <<= 3;		    cur_chr |= *s++ - '0';		    if (isoctal (*s)) {			cur_chr <<= 3;			cur_chr |= *s++ - '0';		    }		}		if (cur_chr != 0 || sending) {		    if (sending && (cur_chr == '\\' || cur_chr == 0))			*s1++ = '\\';		    *s1++ = cur_chr;		}		break;	    }	    if (sending)	    *s1++ = '\\';	    *s1++ = cur_chr;	    break;	}	    }    if (add_return)    *s1++ = '\r';     *s1++ = '\0'; /* guarantee closure */     *s1++ = '\0'; /* terminate the string */    return dup_mem (temp, (size_t) (s1 - temp)); /* may have embedded nuls */}

⌨️ 快捷键说明

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