/** *@breif main() */ int main(int argc, char *argv[]) { int fd; int nread; char buff[512]; char *dev ="/dev/ttyACM0"; char recchr[512]; int device, c; sleep(1); fd = OpenDev(dev); if (fd>0){ set_speed(fd,9600); } else{ printf("Can't Open Serial Port!\n"); exit(0); } if (set_Parity(fd,8,1,'N')== FALSE) { printf("Set Parity Error\n"); exit(1); } // while(1) // { scanf("%s",recchr) ; write(fd, "c", 1); write(fd, "\"\n", 2); printf("发完!\n"); // } close(fd); exit(0); }
/** *@breif main() */ int main(int argc, char **argv) { int fd; int nread; char buff[512]; char *dev ="/dev/ttty0"; fd = OpenDev(dev); if (fd>0) set_speed(fd,19200); else { printf("Can't Open Serial Port!\n"); exit(0); } if (set_Parity(fd,8,1,'N')== FALSE) { printf("Set Parity Error\n"); exit(1); } while(1) { while((nread = read(fd,buff,512))>0) { printf("\nLen %d\n",nread); buff[nread+1]='\0'; printf("\n%s",buff); } } //close(fd); //exit(0); }
int main(int argc, char **argv) { int fd; int nread; int speedcom; char buff[512]; time_t nowtime; time(&nowtime); printf("%s",asctime(gmtime(&nowtime))); //char command[100] = {0x01, 0x03, 0x00, 0x40, 0x00, 0x18, 0x44, 0x14}; char *command = argv[3]; fd = OpenDev(argv[2]); printf("fd: %u\n", fd); printf("open tty: %s\n", argv[2]); if (fd>0) { speedcom = ascii_to_integer(argv[1]); printf("speedcom: %d\n", speedcom); set_speed(fd,speedcom); printf("open fd: %u\n", fd); } else { printf("Can't Open Serial Port!\n"); exit(0); } if (set_Parity(fd,8,1,'N')== FALSE) { printf("Set Parity Error\n"); exit(1); } //ioctl(fd, RS4851_C30, 1); //printf("writting command: %s\n", command); //write(fd, command, sizeof(command)); //usleep(10000); while(1) { //ioctl(fd,RS4851_C30,1); //printf("writting command: %s\n", command); //write(fd, command, 8); //usleep(500000); //ioctl(fd,RS4851_C30,0); //usleep(500000); //while((nread = read(fd,buff,512))>0) //{ // printf("\nLen %d\n",nread); // buff[nread+1]='\0'; // printf("\n%s",buff); //} while(nread = read(fd,buff,512)) { buff[nread+1]='\0'; //printf("printf %s\n", buff); //write(1, buff, nread); //write(fd, buff, nread); } } close(fd); exit(0); }
/** *@breif main() */ int main(int argc, char **argv) { int fd; int nread; char buff[512], readbuff[32]; if (argc < 2) { printf("Usage: %s devicefile \n", *argv); exit(1); } char *dev = *(argv + 1); printf("Device: %s \n", dev); fd = OpenDev(dev); printf("Device opened\n"); if (fd > 0) { printf("Begin set speed\n"); SetSpeed(fd, 9600); } else { printf("Can't Open Serial Port!\n"); exit(0); } printf("Begin set parity\n"); if (SetParity(fd,8,1,'N') == FALSE) { printf("Set Parity Error\n"); exit(1); } sleep(3); // wait for Arduino while(1) { char w[] = "hello$"; int x = write(fd, w, 6); if (x == -1) { perror("Can't write to device"); } int buffi=0; int tempi=0; while((nread = read(fd,readbuff, 32)) > 0) { for (tempi=0; tempi<nread; tempi++) { buff[buffi++] = readbuff[tempi]; } } buff[buffi]='\0'; printf("Reply:%s\n",buff); } //close(fd); //exit(0); }
//启动录音 BOOL CWaveIn::StartRec() { #ifdef PLAY //开始播放 m_WaveOut.StartPlay(); #endif //返回值 BOOL bRet = FALSE; //启动线程失败 if (!StartThread()) { goto Exit; } //打开录音设备失败 if (!OpenDev()) { goto Exit1; } //准备缓存失败 if (!PerPareBuffer()) { goto Exit2; } /* //开始录音 if (!OpenRecord()) { goto Exit3; } */ //设置返回值 bRet = TRUE; goto Exit; /* Exit3: //释放缓存 FreeBuffer(); */ Exit2: //关闭录音设备 CloseDev(); Exit1: //停止线程 StopThread(); Exit: //返回 return bRet; }
void *pthread_ck2316_alarm(void *arg) { int com_fd; int recv_ret = 0; //unsigned char recv_buffer[72] = {0}; while (1) { recv_ret = ck2316_alarm_init(); if (recv_ret == -1) { printf("FUNC[%s] LINE[%d]\tCK2316 alarm init failed!\n",__FUNCTION__, __LINE__); sleep(10); } else break; } while (1) { com_fd = OpenDev(CK2316_UART_DEVICE); if (com_fd == -1) { printf("FUNC[%s] LINE[%d]\tOpen uart failed!\n",__FUNCTION__, __LINE__); sleep(10); continue; } //fd nSpeed nBits nEvent nStop) //set_opt(com_fd, 2400, 3, 2, 0); //for ck2316 //recv_ret = set_opt(com_fd, 9600, 3, 0, 0); //for ck2316 //recv_ret = set_opt(com_fd, CK2316_UART_BOARD, CK2316_UART_DATA_BIT, CK2316_UART_CHECK_BIT, CK2316_UART_STOP_BIT); recv_ret = set_opt(com_fd, ck2316_alarm_data.ck2316_alarm_serial_pamater.serialAttr.dwBaudRate, ck2316_alarm_data.ck2316_alarm_serial_pamater.serialAttr.byDataBit, ck2316_alarm_data.ck2316_alarm_serial_pamater.serialAttr.byParity, ck2316_alarm_data.ck2316_alarm_serial_pamater.serialAttr.byStopBit); if (recv_ret == -1) { printf("FUNC[%s] LINE[%d]\tInit uart failed!\n",__FUNCTION__, __LINE__); sleep(10); continue; } ClrCom(com_fd); recv_ret = ck2316_alarm_handshake_and_setup(&com_fd); if (recv_ret == -1) { close(com_fd); sleep(10); } } return (void *)1; }
//打开录音设备 BOOL CAudioRec::Create(WAVEFORMATEX *pwf,DWORD dwCallBack,DWORD dwInst,DWORD fdwOpen ,DWORD dwBufSize) { BOOL bRet=FALSE; if(m_hIn) { bRet=TRUE; goto RET; } if(!OpenDev(pwf,dwCallBack,dwInst,fdwOpen)) goto RET; m_nBufSize=dwBufSize; bRet=TRUE; RET: return bRet; }
//打开音频输出设备 BOOL CAudioPlay::Create(WAVEFORMATEX *pwf,DWORD dwCallBack,DWORD dwInst,DWORD fdwOpen ) { BOOL bRet=FALSE; if(m_hOut) { bRet=TRUE; goto RET; } //打开设备 if(!OpenDev(pwf,dwCallBack,dwInst,fdwOpen)) goto RET; bRet=TRUE; RET: return bRet; }
// 开启通信服务 int CComDev::Start() { if (OpenDev(m_cDev) != TRUE) { return FALSE; } if (set_opt(115200, 8, 'N', 1) != TRUE) { return FALSE; } //开启接收线程 pthread_create(&m_RecvPt, NULL, threadRecv, this); return TRUE; }
void *pthread_matrix_control(void *arg) { int com_fd; int recv_ret = 0; //unsigned char send_buffer[] = {0xBB, 0x00, 0x06, 0x02}; while (1) { com_fd = OpenDev(MATRIX_UART_DEVICE); if (com_fd == -1) { printf("FUNC[%s] LINE[%d]\tOpen uart failed!\n",__FUNCTION__, __LINE__); sleep(10); continue; } //fd nSpeed nBits nEvent nStop) //recv_ret = set_opt(com_fd, 9600, 3, 0, 0); //for matrix recv_ret = set_opt(com_fd, MATRIX_UART_BOARD, MATRIX_UART_DATA_BIT, MATRIX_UART_CHECK_BIT, MATRIX_UART_STOP_BIT); if (recv_ret == -1) { printf("FUNC[%s] LINE[%d]\tInit uart failed!\n",__FUNCTION__, __LINE__); sleep(10); continue; } ClrCom(com_fd); #if 0 while (1) { send_buffer[2] = 0x07; printf("1\n"); write(com_fd, send_buffer, 4); sleep(2); } #endif recv_ret = matrix_handshake_and_setup(&com_fd); if (recv_ret == -1) { close(com_fd); sleep(10); } } return (void *)1; }
BOOL CWaveOut::StartPlay() { BOOL bRet=FALSE; if (!StartThread()) { goto Exit; }; if (!OpenDev()) { goto Exit1; }; bRet = TRUE; goto Exit; Exit1: StopThread (); Exit: return bRet; }
int Uart_Init(char *Dev) //打开串口 设置波特率115200 数据位8 两个结束位 奇偶校验位 { int fd; if((fd = OpenDev(Dev)) > 0) { //set_speed(fd, 115200); set_speed(fd, 9600); if (set_Parity(fd,8,2,'N')== -1) { printf("Set Parity Error\n"); return -1; } else return fd; } else { return -1; } }
//------------------------------------------------------------------------- //串口初始化 参数:设备名,波特率,数据位,停止位,校验位 //------------------------------------------------------------------------- int serial_init(int Dev, int speed, int databits, int stopbits, int parity) { static int serial_fd; //打开串口设备 serial_fd = OpenDev(Dev); if(serial_fd > 0) set_speed(serial_fd, speed); //设置波特率 else { printf("Can't Open Serial Port!\n"); exit(0); } //恢复串口未阻塞状态 if (fcntl(serial_fd, F_SETFL, O_NONBLOCK) < 0) { printf("fcntl failed!\n"); exit(0); } //检查是否是终端设备 #if 1 //如果屏蔽下面这段代码,在串口输入时不会有回显的情况,调用下面这段代码时会出现回显现象。 if(isatty(STDIN_FILENO)==0) { printf("standard input is not a terminal device\n"); } else printf("isatty success!\n"); #endif //设置串口参数 if(set_Parity(serial_fd, databits, parity, stopbits) == FALSE) { printf("Set parity Error\n"); exit(1); } return serial_fd; }
DLLEXP bool StartSvr(PSvrHnds pSH) { bool bSuccess = false; if(pSH == NULL) { PRINT("[%s]error : pSH == NULL!\n",__func__); goto QUIT; } if(pSH->hSVR == 0) { PRINT("[%s]error : pSH->hSVR == 0!\n",__func__); goto QUIT; } bool bRet = StartService(pSH->hSVR,0,NULL); if(!bRet && GetLastError() == ERROR_SERVICE_ALREADY_RUNNING) { PRINT("[%s]msg : Service is Already Running!\n",\ __func__); } else if(!bRet) { PRINT("[%s]error : StartService Failed!\n",\ __func__); goto QUIT; } if(!OpenDev(pSH)) { goto QUIT; } bSuccess = true; QUIT: return bSuccess; }
void *pthread_cradle_head_control(void *arg) { int com_fd; int recv_ret = 0; //unsigned char send_buffer[] = {0xBB, 0x00, 0x06, 0x02}; while (1) { com_fd = OpenDev(CRADLE_HEAD_UART_DEVICE); if (com_fd == -1) { printf("FUNC[%s] LINE[%d]\tOpen uart failed!\n",__FUNCTION__, __LINE__); sleep(10); continue; } //fd nSpeed nBits nEvent nStop) //recv_ret = set_opt(com_fd, 9600, 3, 0, 0); //for cradle head 8N1 recv_ret = set_opt(com_fd, CRADLE_HEAD_UART_BOARD, CRADLE_HEAD_UART_DATA_BIT, CRADLE_HEAD_UART_CHECK_BIT, CRADLE_HEAD_UART_STOP_BIT); if (recv_ret == -1) { printf("FUNC[%s] LINE[%d]\tInit uart failed!\n",__FUNCTION__, __LINE__); sleep(10); continue; } ClrCom(com_fd); recv_ret = cradle_head_handshake_and_contorl(&com_fd); if (recv_ret == -1) { close(com_fd); sleep(10); } } return (void *)1; }
int main(int argc,char* argv[]) { if(argc != 3) { printf("缺少参数:error!\n"); exit(0); } //*********打开串口并设置波特率********* char *dev = (char*)argv[2]; //串口 int fd = OpenDev(dev); //打开串口函数 if(fd<0) { close(fd); return FALSE; } int set_res=set_speed(fd,9600); //设置串口 if(set_res==FALSE) { close(fd); return FALSE; } if (set_Parity(fd,8,1,'N') == FALSE) { close(fd); return FALSE; } //***********从文件中读出指令*************** int temperature = atoi(argv[1]); set_temperature(temperature); //*********发送命令************** int send_res = Send_order(fd,outcommand,24); if(send_res==FALSE) { close(fd); return FALSE; } char total_buff[1024]; int length = Recv_data(fd,total_buff);//读取串口数据 printf("接收数据长度为:%d\n",length); int j;//显示接收到的字符 FILE *stream; stream = fopen("receiveinfo","w+"); for (j = 0 ; j < length; j++) { printf("%02X ", total_buff[j]); fprintf(stream, "%02X", total_buff[j]); } fclose(stream); printf("\n"); close(fd); return 0; }
int main() { int i,j,k,m=0; int fd; int nread; char tempbuff[37]; char *dev = "/dev/ttyS0"; //串口1 start: fd = OpenDev(dev); set_speed(fd,57600); if (set_Parity(fd,8,1,'N') == FALSE) { printf("Set Parity Error\n"); //return -1; } iniconnect(); while (1) //循环读取数据 { if((nread = read(fd, tempbuff, 37))>0) { //printf("\nLen %d\n",nread); //printf("%s",tempbuff); //printf("%c\n",tempbuff[1]); for(m=0;tempbuff[m]!='#';m++); m++; if(tempbuff[m]=='@') { m++; for(i=0;i<16;i++) str2[23+i]=tempbuff[m++]; str2[39]='\''; str2[40]=','; str2[41]='\''; for(j=0;j<17;j++) str2[42+j]=tempbuff[m++]; str2[59]='\''; str2[60]=')'; str2[61]='\0'; printf("%s\n",str2); if(strlen(str2)!=61) goto start; mysql_query(&connection,str2); } else if(tempbuff[m]=='$') { m++; for(i=0;i<16;i++) str3[24+i]=tempbuff[m++]; str3[40]='\''; str3[41]=','; str3[42]='\''; for(j=0;j<17;j++) str3[43+j]=tempbuff[m++]; str3[60]='\''; str3[61]=')'; str3[62]='\0'; printf("%s\n",str3); if(strlen(str3)!=62) goto start; mysql_query(&connection,str3); } else if(tempbuff[m]=='%') { m++; for(i=0;i<16;i++) str4[25+i]=tempbuff[m++]; str4[41]='\''; str4[42]=','; str4[43]='\''; for(j=0;j<17;j++) str4[44+j]=tempbuff[m++]; str4[61]='\''; str4[62]=')'; str4[63]='\0'; printf("%s\n",str4); if(strlen(str4)!=63) goto start; mysql_query(&connection,str4); } else if(tempbuff[m]=='^') { m++; for(i=0;i<16;i++) str5[25+i]=tempbuff[m++]; str5[41]='\''; str5[42]=','; str5[43]='\''; for(j=0;j<17;j++) str5[44+j]=tempbuff[m++]; str5[61]='\''; str5[62]=')'; str5[63]='\0'; printf("%s\n",str5); if(strlen(str5)!=63) goto start; mysql_query(&connection,str5); } else{ for(i=0;i<16;i++) str1[18+i]=tempbuff[m++]; str1[34]='\''; str1[35]=','; str1[36]='\''; for(j=0;j<8;j++) str1[37+j]=tempbuff[m++]; str1[45]='\''; str1[46]=','; str1[47]='\''; for(k=0;k<10;k++) str1[48+k]=tempbuff[m++]; str1[58]='\''; str1[59]=')'; str1[60]='\0'; printf("%s\n",str1); if(strlen(str1)!=60) goto start; mysql_query(&connection,str1); } } } //return buff; close(fd); return 0; //close(fd); // exit (0); }
void send_buff(int id,char *ag,int n,char *fla) { int fd; char *dev = "/dev/ttyS1"; fd = OpenDev(dev); set_speed(fd,9600); if (set_Parity(fd,8,1,'N' )== -1) { printf("Set Parity Errorn"); exit (0); } char buf[4096]="\0"; char flag[4096]="\0"; strcat(flag,fla); printf("flag==%s\n",flag); strcat(ag,"&"); strcat(buf,ag); ag=buf; printf("ag=%s\n",ag); int t=0; char c='1'; int j=0; int res; int i; c=ag[j]; /* char buff[4096]="\0"; int jj; int ii; char fh=';'; printf("buf======%s,,flag=====%s\n",buf,flag); for(jj=0;'&'!=buf[jj]&&jj<20;jj++) { for(ii=0;';'!=buff[ii]Z;ii++,jj++) { buff[ii]=buf[jj]; printf("~~~~~buff[%d]=========%c\n",ii,buff[ii]); } printf("~~~~~jj====%d\n",jj); strcat(flag,buff); printf("for jj flag===%s\n",flag); uart_send(fd,flag); flag[5]='\0'; } */ while('&'!=c) { while(';'!=c) { send_buf[t]=c; t++; j++; c=ag[j]; } send_buf[t]=c; res=-1; i=0; //int flag_break=0; do { printf("in send_buff buff====%s\n",send_buf); if(i==0) strcat(flag,send_buf); printf("in send_buff flag====%s\n",flag); res = uart_send(fd,flag); sleep(3); if(i == 5) exit(0);// i++; }while(res<0); t=0; j++; c=ag[j]; bzero(send_buf,sizeof(send_buf)); //bzero(flag,sizeof(flag)); sprintf(flag,"\0"); strcat(flag,fla); } close(fd); }
int main(int argc,char* argv[]) { if(argc != 3) { printf("缺少参数:error!\n"); exit(0); } //*********打开串口并设置波特率********* char *dev = (char*)argv[2]; //串口 int fd = OpenDev(dev); //打开串口函数 if(fd<0) { close(fd); return FALSE; } int set_res=set_speed(fd,9600); //设置串口 if(set_res==FALSE) { close(fd); return FALSE; } if (set_Parity(fd,8,1,'N') == FALSE) { close(fd); return FALSE; } //***********从文件中读出指令*************** char order1[8]={0x01,0x03,0x00,0x01,0x00,0x01,0xd5,0xca}; char order2[8]={0x01,0x03,0x03,0x00,0x00,0x01,0x84,0x4e}; char order3[18]={0x7E,0x32,0x30,0x30,0x31,0x39,0x30,0x38,0x41, 0x30,0x30,0x30,0x30,0x46,0x44,0x39,0x41,0x0D}; char order4[8]={0x01,0x03,0x06,0x06,0x00,0x01,0x84,0x82}; //char order4[8]={0x01,0x04,0x00,0x04,0x00,0x01,0x70,0x0b}; int result =0; int flag = atoi(argv[1]); int send_res; int recv_length = 7; char total_buff[1024]; if(flag ==1) { send_res=Send_order(fd,order1,8); Recv_data(fd,total_buff,recv_length);//读取串口数据 if(total_buff[2]==0x2 & total_buff[3]==0x0 & total_buff[4]==0x1) { result =flag; } } if(flag ==2) { send_res=Send_order(fd,order2,8); Recv_data(fd,total_buff,recv_length);//读取串口数据 if(total_buff[2]==0x2 & total_buff[3]==0x0 & total_buff[4]==0x1) { result =flag; } } if(flag ==3) { send_res=Send_order(fd,order3,18); Recv_data(fd,total_buff,recv_length);//读取串口数据 if(total_buff[0]== 0x7E ) { result =flag; } } if(flag ==4) { send_res=Send_order(fd,order4,8); Recv_data(fd,total_buff,recv_length);//读取串口数据 if(total_buff[2]==0x2 & total_buff[4]==0x1 ) { result =flag; } } //*********发送命令************** if(send_res==FALSE) { close(fd); return FALSE; } int j; for (j = 0 ; j < recv_length; j++) { printf("%02X ", (unsigned char)total_buff[j]); } printf("\n"); close(fd); return result; }
/** *@breif main() */ int main(int argc, char **argv) { int fd; int nwrite,nread; char buff[512],temp[16]; char buff3[3] = {"aaa"}; char *dev ="/dev/ttyS0",*dev1 ="/dev/ttyS1",*dev2 ="/dev/ttyS2",*dev3 ="/dev/ttyS3", *dev4="/dev/ttyS4"; memset(buff,'A',512); if(argc>=2) { if(*argv[1]=='1') { fd = OpenDev(dev1); tcgetattr( fd,&old_options); if (fd>0) set_speed(fd,115200); else { printf("Can't Open Serial Port 1!\n"); exit(0); } if (set_Parity(fd,8,1,'N')== FALSE) { printf("Set Parity Error\n"); exit(1); } nwrite = write(fd,buff,512); printf("\nSent %d Bytes\n\n",nwrite); tcsetattr(fd,TCSANOW,&old_options); sleep(1); // make sure all bytes are sent out. or we'll have to wait for 30 seconds. close(fd); } else if(*argv[1]=='2') { fd = OpenDev(dev2); tcgetattr( fd,&old_options); if (fd>0) set_speed(fd,115200); else { printf("Can't Open Serial Port 2!\n"); exit(0); } if (set_Parity(fd,8,1,'N')== FALSE) { printf("Set Parity Error\n"); exit(1); } nwrite = write(fd,buff,512); printf("\nSent %d Bytes\n\n",nwrite); tcsetattr(fd,TCSANOW,&old_options); sleep(1); // make sure all bytes are sent out. or we'll have to wait for 30 seconds. close(fd); } else if(*argv[1]=='3') { fd = OpenDev(dev3); tcgetattr( fd,&old_options); if (fd>0) set_speed(fd,115200); else { printf("Can't Open Serial Port 3!\n"); exit(0); } if (set_Parity(fd,8,1,'N')== FALSE) { printf("Set Parity Error\n"); exit(1); } nwrite = write(fd,buff,512); printf("\nSent %d Bytes\n\n",nwrite); tcsetattr(fd,TCSANOW,&old_options); sleep(1); // make sure all bytes are sent out. or we'll have to wait for 30 seconds. close(fd); } else if(*argv[1]=='4') { fd = OpenDev(dev4); tcgetattr( fd,&old_options); if (fd>0) set_speed(fd,115200); else { printf("Can't Open Serial Port 4!\n"); exit(0); } if (set_Parity(fd,8,1,'N')== FALSE) { printf("Set Parity Error\n"); exit(1); } nwrite = write(fd,buff,512); printf("\nSent %d Bytes\n\n",nwrite); tcsetattr(fd,TCSANOW,&old_options); sleep(1); // make sure all bytes are sent out. or we'll have to wait for 30 seconds. close(fd); } else { fd = OpenDev(dev); tcgetattr( fd,&old_options); if (fd>0) set_speed(fd,115200); else { printf("Can't Open Serial Port 0!\n"); exit(0); } if (set_Parity(fd,8,1,'N')== FALSE) { printf("Set Parity Error\n"); exit(1); } nwrite = write(fd,buff,512); printf("\nSent %d Bytes\n\n",nwrite); tcsetattr(fd,TCSANOW,&old_options); sleep(1); // make sure all bytes are sent out. or we'll have to wait for 30 seconds. close(fd); } } else { fd = OpenDev(dev); tcgetattr( fd,&old_options); if (fd < 0) { printf("Can't Open Serial Port 0!\n"); exit(0); } if (set_Parity(fd,8,1,'N')== FALSE) { printf("Set Parity Error\n"); exit(1); } nwrite = write(fd,buff,512); printf("\nSent %d Bytes\n\n",nwrite); tcsetattr(fd,TCSANOW,&old_options); sleep(1); // make sure all bytes are sent out. or we'll have to wait for 30 seconds. close(fd); } return 0; }
int Mouse::Loop() { fd_set readfds; struct timeval timeout = {0, 10000}; bool isDeviceAdd = false; if (access(DEVICE_PATH, 0) != 0) { printf("device do not exist\n"); return -1; } /* open /dev/mouse */ OpenDev(); CursorBounds desireBounds; desireBounds.width = mWidth; desireBounds.height = mHeight; desireBounds.spotX = mSpotX; desireBounds.spotY = mSpotY; mDrawBitmaps = (char *)mDefaultBitmap->getPixels(); printf("now draw default cursor bitmap\n"); DrawCursor(desireBounds); printf("finish draw default cursor bitmap\n"); while(mIsRunning) { readfds = mSelectFds; int retval; retval = select(mMaxFd + 1, &readfds, NULL, NULL, NULL); if (retval == 0) { printf("select time out\n"); continue; } if (FD_ISSET(mUnixFd, &readfds)) { struct sockaddr_in address; int addrLength; int acceptFd = accept(mUnixFd, (struct sockaddr *)&address, &addrLength); if (acceptFd > mMaxFd) { mMaxFd = acceptFd; } mAcceptFds.add(String8("cursor"), acceptFd); FD_SET(acceptFd, &mSelectFds); printf("new connect accept\n"); } if (FD_ISSET(mDeviceFd, &readfds)) { InputPosition tmpPos; bool isOK = true; int read_size = read(mDeviceFd, &tmpPos, sizeof(tmpPos));; if (read_size <= 0 && errno == ENODEV) { printf("device is closed\n"); isOK = false; } else if(read_size > 0 && read_size % sizeof(tmpPos) != 0) { printf("read fd %d error\n", mDeviceFd); isOK = false; } if (isOK) { memcpy(&mPos, &tmpPos, sizeof(mPos)); mMove = true; } DrawCursor(desireBounds); //printf("mouse move\n"); } for (int i = 0;i < mAcceptFds.size();i++) { int acceptFd = mAcceptFds.valueAt(i); if (FD_ISSET(acceptFd, &readfds)) { CmdHeader header; int read_size; read_size = read(acceptFd, &header, sizeof(CmdHeader)); if (read_size == 0) { printf("remote close unix socket\n"); FD_CLR(acceptFd, &mSelectFds); mAcceptFds.removeItemsAt(i); close(acceptFd); mWantChange = true; mUpdateCursor = true; if (mDrawBitmaps != NULL && !mUseDefaultBitmap) { char *freeHeader = mDrawBitmaps - sizeof(CmdHeader) + sizeof(CursorBounds); free(freeHeader); } desireBounds.width = mDefaultBitmap->width(); desireBounds.height = mDefaultBitmap->height(); desireBounds.spotX = IMAGE_HOT_X; desireBounds.spotY = IMAGE_HOT_Y; mUseDefaultBitmap = true; mDrawBitmaps = mDefaultBitmap->getPixels(); DrawCursor(desireBounds); continue; } char *data = (char *)malloc(sizeof(CmdHeader) + header.length); memcpy(data, &header, sizeof(CmdHeader)); read_size = read(acceptFd, data + sizeof(CmdHeader), header.length); ProcessCmd(data, sizeof(CmdHeader) + header.length, desireBounds); DrawCursor(desireBounds); mUseDefaultBitmap = false; } } } return 0; }