📄 sp2339.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 + -