//串口2接收线程 static void * Serial_2_RecvThread(void * arg) { int ret; unsigned int depth,len; unsigned char buf[64]; int i; while(1) { // printf("5467\n"); ret = select(FD_SETSIZE, &serial_2_fd_set, (fd_set *)0, (fd_set *)0,(struct timeval *) 0); // printf("123\n"); if (ret < 1) { printf("%s,%d,ERROR\n", __func__, __LINE__); FD_ZERO(&serial_2_fd_set); FD_SET(serial_2_fd, &serial_2_fd_set); continue; } ioctl(serial_2_fd, FIONREAD, &depth); if(depth > 0) { //TODO...Call protocol decode function len = depth > sizeof(buf) ? sizeof(buf) : depth; ret = read(serial_2_fd,buf,len); for(i = 0; i < ret; i ++) { sdk_serial_byte_handle(buf[i]); } buf[i]='\0'; printf("buf2=%s\n",buf); } } return NULL; }
void DJI_Pro_Hw::run() { int depth; int limit_len,read_len; while(1) { if(port->isOpen()) { depth = port->bytesAvailable(); if(depth > 0) { limit_len = depth > DJI_PRO_HW_BUFFER_SIZE ? DJI_PRO_HW_BUFFER_SIZE \ : depth; read_len = port->read((char *)pbuffer,limit_len); for(int i = 0; i < read_len; i ++) { sdk_serial_byte_handle(pbuffer[i]); } load_con += read_len; //printf("\rReceived :%d",load_con); } else { msleep(2); } } else { msleep(2); } } }