亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? ndirect.c

?? 卡內基梅隆大學(CMU)開發的移動機器人控制開發軟件包。可對多種機器人進行控制
?? C
?? 第 1 頁 / 共 5 頁
字號:
 * ALGORITHM:    --- * RETURN:       static int  * SIDE EFFECT:   * CALLS:         * CALLED BY:     ***************/static int voltPackageProcess ( unsigned char *inbuf, 			        unsigned char *voltCPU,			        unsigned char *voltMotor){  int i = 0;  /* read the raw voltages out of the buffer */  *voltCPU   = *(inbuf + i++);  *voltMotor = *(inbuf + i++);    return ( i );}/***************************** *                           * * Robot Interface Functions * *                           * *****************************//* * dummy function to maintain compatibility with Nclient * * create_robot - requests the server to create a robot with *                id = robot_id and establishes a connection with *                the robot. This function is disabled in this *                version of the software. *  * parameters: *    long robot_id -- id of the robot to be created. The robot *                     will be referred to by this id. If a process *                     wants to talk (connect) to a robot, it must *                     know its id. */int create_robot ( long robot_id ){  Robot_id = robot_id;  return ( TRUE );}/* Helper function for connect_robot */static char *convertAddr ( char *name, char *addr ){  int addrInt[10];  sscanf(name, "%d.%d.%d.%d", 	 &(addrInt[0]), &(addrInt[1]), &(addrInt[2]), &(addrInt[3]));  addr[0] = addrInt[0];  addr[1] = addrInt[1];  addr[2] = addrInt[2];  addr[3] = addrInt[3];  return ( addr );}int open_serial(char *port, unsigned short baud){  struct termios info;    if (Fd != -1)    close(Fd);  if ((Fd=open(port, O_RDWR|O_NONBLOCK)) < 0)    {      perror("Error opening serial port");      return 0;    }    if (tcgetattr(Fd, &info) < 0)     {      perror("Error using TCGETS in ioctl.");      close(Fd);      Fd = -1;      return 0;    }    /* restore old values to unhang the bastard, if hung */  info.c_iflag=1280;  info.c_oflag=5;  info.c_cflag=3261;  info.c_lflag=35387;    if (tcsetattr(Fd, TCSANOW, &info) < 0)     {       perror("Error using TCSETS in ioctl.");      close(Fd);      Fd = -1;      return 0;    }   close(Fd);    if ((Fd = open(port, O_RDWR)) == -1) {    perror("Error opening serial port");    errorp = SERIAL_OPEN_ERROR;    return(FALSE);  }    if (tcgetattr(Fd,&info) < 0) {    perror("Error using TCGETS in ioctl.");    errorp = SERIAL_OPEN_ERROR;    close(Fd);    Fd = -1;    return(FALSE);  }    if (baud != 4800 && baud != 9600 && baud != 19200 && baud != 38400)  {    if (baud != 0)    {      fprintf(stderr, "Invalid baud rate %d, using %d\n", baud,              DEFAULT_SERIAL_BAUD);    }    baud = DEFAULT_SERIAL_BAUD;  }    info.c_iflag = 0;  info.c_oflag = 0;  info.c_lflag = 0;  switch (baud) { /* serial port rate */  case 4800:    info.c_cflag = B4800 | CS8 | CREAD | CLOCAL;    break;  case 9600:    info.c_cflag = B9600 | CS8 | CREAD | CLOCAL;    break;  case 19200:    info.c_cflag = B19200 | CS8 | CREAD | CLOCAL;    break;  case 38400:    info.c_cflag = B38400 | CS8 | CREAD | CLOCAL;    break;  default:    break;  }  /* set time out on serial read */#if 1  info.c_cc[VMIN] = 0;  info.c_cc[VTIME] = 10;#endif   wait_time = NORMAL_TIMEOUT;  if (tcsetattr(Fd,TCSANOW,&info) < 0) {     perror("Error using TCSETS in ioctl.");    errorp = SERIAL_OPEN_ERROR;    close(Fd);    Fd = -1;    return(FALSE);  }    printf("Robot <-> Host serial communication setup\n");  printf("(%d baud using %s)\n", baud, port);  return(TRUE);}/* * connect_robot - requests the server to connect to the robot *                 with id = robot_id. In order to talk to the server, *                 the SERVER_MACHINE_NAME and SERV_TCP_PORT must be *                 set properly. If a robot with robot_id exists, *                 a connection is established with that robot. If *                 no robot exists with robot_id, no connection is *                 established. In this single robot version, the robot_id *                 is unimportant. You can call connect_robot with any *                 robot_id, it will connect to the robot. * * parameters: *    long robot_id -- robot's id. In this multiple robot version, in order *                     to connect to a robot, you must know it's id. *         model    -- robot type: 0 = Nomad 200, 1 = Nomad 150, 2 = Scout *         *dev     -- hostname for TCP, device file for serial ("/dev/" prefix *                     or ":" suffix means serial) *         conn     -- TCP port for TCP, baud rate for serial */int connect_robot(long robot_id, ...){  static char first = 1;  struct hostent *hp;  struct sockaddr_in serv_addr;  int ret, retlen, i;  unsigned char ir_mask[16],sn_mask[16],cf_mask[4],vl_mask[3];  unsigned char cp_mask,bp_mask,ls_mask,pos_mask, byte;  char addr[10];  va_list args;    if (first)  {    fprintf(stderr, "Ndirect version 2.6.13\n");    fprintf(stderr, "Copyright 1991-1998, Nomadic Technologies, Inc.\n");    first = 0;  }    va_start(args, robot_id);  model = va_arg(args, int);  device = va_arg(args, char *);  conn_value = va_arg(args, int);  if (strncmp(device, "/dev", 4) != 0 && device[strlen(device)-1] != ':')  {    connect_type = 2;  }  va_end(args);    if (connect_type == 1)   {    open_serial(device, conn_value);        /* Send init_sensors to make sure that server and robot are synchronized */    if (model == MODEL_N200)    {      init_sensors();    }    else    {      usedSmask[0] = 0;      /* IR */      for (i = 1; i < 17; i++)	usedSmask[i] = 0;      /* Sonar */      for (i = 17; i < 33; i++)	usedSmask[i] = 1;      /* Bumper */      usedSmask[33] = 1;      /* Conf */      for (i = 34; i < 38; i++)	usedSmask[i] = 1;      /* Velocity */      for (i = 38; i < 41; i++)	usedSmask[i] = 1;      /* Motor */      usedSmask[41] = 1;      /* Laser */      usedSmask[42] = 0;      /* Compass */      usedSmask[43] = 1;    }  } else {    if (device[0] == 0)      device = "localhost";    if ( ((hp = gethostbyname(device)) == NULL))    {      convertAddr(device, addr);      if (addr[0] != 0 || addr[1] != 0 || addr[2] != 0 || addr[3] != 0)      {	memset((char *) &serv_addr, 0, sizeof(serv_addr));	memcpy((char *) &(serv_addr.sin_addr), addr, 4);      }      else      {	fprintf(stderr, "Machine %s not valid.\n", device);	return FALSE;      }    }    else    {      memset((char *) &serv_addr, 0, sizeof(serv_addr));      memcpy((char *) &(serv_addr.sin_addr), hp->h_addr, hp->h_length);    }        serv_addr.sin_family = AF_INET;            /* address family */        /* TCP port number */    if (conn_value == 0)    {      conn_value = DEFAULT_ROBOT_TCP_PORT;    }    serv_addr.sin_port = htons(conn_value);        if ((Fd = socket(AF_INET, SOCK_STREAM, 0)) < 0) {      fprintf(stderr, "Error: in open_socket_to_send_data, socket failed.\n");      return FALSE;    }    fcntl(Fd, F_SETFL, O_NDELAY);    if (connect(Fd, (struct sockaddr *) &serv_addr, sizeof(serv_addr)) < 0) {      if (errno == EINPROGRESS) {        fd_set          lfdvar;        struct timeval  timeout;                FD_ZERO(&lfdvar);        FD_SET(Fd, &lfdvar);                timeout.tv_sec = (long)CONNECT_TIMEOUT;        timeout.tv_usec = (long)0;                if (select(Fd+1, NULL, &lfdvar, NULL, &timeout) == 0) {          fprintf(stderr, "Error: connect timed out.\n");          close(Fd);	  Fd = -1;          return FALSE;        } else {	  errno = 0;	  retlen = 4;	  if (getsockopt(Fd, SOL_SOCKET, SO_ERROR, (char *)&ret, (unsigned int *) &retlen) == 0)	  {	    if (ret != 0)	      errno = ret;	    if (errno != 0)	    {	      perror("Error: connect failed");	      close(Fd);	      Fd = -1;	      return FALSE;	    }	  }	}      } else {        perror("Error: connect failed");        close(Fd);	Fd = -1;        return FALSE;      }    }        wait_time = NORMAL_TIMEOUT;        printf("Robot <-> Host TCP/IP communication setup\n");    printf("(machine %s on port %d)\n", device, conn_value);        /* Read configuration data */    if (model == MODEL_N200)    {      byte = GETC(Fd, connect_type);      ir_mask[ 0] = byte & (1 << 0) ? 1 : 0;      ir_mask[ 1] = byte & (1 << 1) ? 1 : 0;      ir_mask[ 2] = byte & (1 << 2) ? 1 : 0;      ir_mask[ 3] = byte & (1 << 3) ? 1 : 0;      ir_mask[ 4] = byte & (1 << 4) ? 1 : 0;      ir_mask[ 5] = byte & (1 << 5) ? 1 : 0;      ir_mask[ 6] = byte & (1 << 6) ? 1 : 0;      ir_mask[ 7] = byte & (1 << 7) ? 1 : 0;      byte = GETC(Fd, connect_type);      ir_mask[ 8] = byte & (1 << 0) ? 1 : 0;      ir_mask[ 9] = byte & (1 << 1) ? 1 : 0;      ir_mask[10] = byte & (1 << 2) ? 1 : 0;      ir_mask[11] = byte & (1 << 3) ? 1 : 0;      ir_mask[12] = byte & (1 << 4) ? 1 : 0;      ir_mask[13] = byte & (1 << 5) ? 1 : 0;      ir_mask[14] = byte & (1 << 6) ? 1 : 0;      ir_mask[15] = byte & (1 << 7) ? 1 : 0;      byte = GETC(Fd, connect_type);      sn_mask[ 0] = byte & (1 << 0) ? 1 : 0;      sn_mask[ 1] = byte & (1 << 1) ? 1 : 0;      sn_mask[ 2] = byte & (1 << 2) ? 1 : 0;      sn_mask[ 3] = byte & (1 << 3) ? 1 : 0;      sn_mask[ 4] = byte & (1 << 4) ? 1 : 0;      sn_mask[ 5] = byte & (1 << 5) ? 1 : 0;      sn_mask[ 6] = byte & (1 << 6) ? 1 : 0;      sn_mask[ 7] = byte & (1 << 7) ? 1 : 0;      byte = GETC(Fd, connect_type);      sn_mask[ 8] = byte & (1 << 0) ? 1 : 0;      sn_mask[ 9] = byte & (1 << 1) ? 1 : 0;      sn_mask[10] = byte & (1 << 2) ? 1 : 0;      sn_mask[11] = byte & (1 << 3) ? 1 : 0;      sn_mask[12] = byte & (1 << 4) ? 1 : 0;      sn_mask[13] = byte & (1 << 5) ? 1 : 0;      sn_mask[14] = byte & (1 << 6) ? 1 : 0;      sn_mask[15] = byte & (1 << 7) ? 1 : 0;      byte = GETC(Fd, connect_type);      bp_mask    = byte & (1 << 0) ? 1 : 0;      cf_mask[0] = byte & (1 << 1) ? 1 : 0;      cf_mask[1] = byte & (1 << 2) ? 1 : 0;      cf_mask[2] = byte & (1 << 3) ? 1 : 0;      cf_mask[3] = byte & (1 << 4) ? 1 : 0;      vl_mask[0] = byte & (1 << 5) ? 1 : 0;      vl_mask[1] = byte & (1 << 6) ? 1 : 0;      vl_mask[2] = byte & (1 << 7) ? 1 : 0;      byte = GETC(Fd, connect_type);      cp_mask = byte & 1;      byte = GETC(Fd, connect_type);      ls_mask = byte & 1;      pos_mask = byte >> 1;            usedSmask[0] = pos_mask;      for (i = 0; i < 16; i++)	usedSmask[i+1] = ir_mask[i];      for (i = 0; i < 16; i++)	usedSmask[i+17] = sn_mask[i];      usedSmask[33] = bp_mask;      for (i = 0; i < 4; i++)	usedSmask[i+34] = cf_mask[i];      for (i = 0; i < 3; i++)	usedSmask[i+38] = vl_mask[i];      usedSmask[42] = ls_mask;      usedSmask[43] = cp_mask;            /* get laser mode, num_points, processing */      byte = GETC(Fd, connect_type);      laser_mode = byte;      byte = GETC(Fd, connect_type);      byte = GETC(Fd, connect_type);      byte = GETC(Fd, connect_type);    }    else    {      usedSmask[0] = 0;      /* IR */      for (i = 1; i < 17; i++)	usedSmask[i] = 0;      /* Sonar */      for (i = 17; i < 33; i++)	usedSmask[i] = 1;      /* Bumper */      usedSmask[33] = 1;      /* Conf */      for (i = 34; i < 38; i++)	usedSmask[i] = 1;      /* Velocity */      for (i = 38; i < 41; i++)	usedSmask[i] = 1;      /* Motor */      usedSmask[41] = 1;      /* Laser */      usedSmask[42] = 0;      /* Compass */      usedSmask[43] = 1;    }  }    return TRUE;}/* * dummy function to maintain compatibility with Nclient * * disconnect_robot - requests the server to close the connect with robot *                    with id = robot_id.  * * parameters: *    long robot_id -- robot's id. In order to disconnect a robot, you *                     must know it's id. */int disconnect_robot(long robot_id __attribute__ ((unused))){  Robot_id = -1;  return ( TRUE );}/*  * ac - sets accelerations of the robot. Currently it has no effect in  *      simulation mode. * * parameters: *    int t_ac, s_ac, r_ac -- the translation, steering, and turret *                            accelerations. t_ac is in 1/10 inch/sec^2 *                            s_ac and r_ac are in 1/10 degree/sec^2. */int ac(int t_ac, int s_ac, int r_ac){  unsigned char outbuf[BUFSIZE];    stuff_three_unsigned_int(8, AC, t_ac, s_ac, r_ac, outbuf);  return(Comm_Robot(Fd, outbuf));  }/* * sp - sets speeds of the robot, this function will not cause the robot to *      move. However, the set speed will be used when executing a pr() *      or a pa(). * * parameters: *    int t_sp, s_sp, r_sp -- the translation, steering, and turret *                            speeds. t_sp is in 1/10 inch/sec and *                            s_sp and r_sp are in 1/10 degree/sec. */int sp(int t_sp, int s_sp, int r_sp){  unsigned char outbuf[BUFSIZE];    stuff_three_unsigned_int(8, SP, t_sp, s_sp, r_sp, outbuf);  return(Comm_Robot(Fd, outbuf));}/* * pr - moves the motors of the robot by a relative distance, using the speeds *      set by sp(). The three parameters specify the relative distances for *      the three motors: translation, steering, and turret. All the three *      motors move concurrently if the speeds are not set to zero and the  *      distances to be traveled are non-zero. Depending on the timeout  *      period set (by function conf_tm(timeout)), the motion may  *      terminate before the robot has moved the specified distances * * parameters:

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产一区二区三区国产| 欧美高清视频在线高清观看mv色露露十八| 成人午夜精品一区二区三区| 色综合中文字幕国产 | 91精品一区二区三区在线观看| 欧美videofree性高清杂交| 亚洲天堂福利av| 国产真实乱子伦精品视频| 欧美伊人久久大香线蕉综合69 | 18成人在线观看| 日本91福利区| 欧美亚洲国产一卡| 亚洲欧洲国产日本综合| 激情小说欧美图片| 337p亚洲精品色噜噜噜| 亚洲精品综合在线| www.亚洲免费av| 国产亚洲午夜高清国产拍精品| 免费精品视频最新在线| 欧美日韩一区二区三区在线| 中文字幕永久在线不卡| 国产伦精品一区二区三区在线观看| 69堂精品视频| 亚洲国产乱码最新视频| 欧美性三三影院| 亚洲午夜精品在线| 91精品1区2区| 亚洲国产日韩精品| 色婷婷久久久综合中文字幕| 国产精品久久久久一区二区三区 | 色综合色综合色综合色综合色综合| 久久精品网站免费观看| 国产精品一二一区| 国产亚洲欧美激情| 成人一区二区三区| 成人免费在线播放视频| 不卡欧美aaaaa| 中文字幕在线不卡视频| 91热门视频在线观看| 亚洲激情av在线| 欧美午夜精品久久久久久超碰 | 在线一区二区视频| 亚洲成年人影院| 欧美一区在线视频| 久久福利视频一区二区| 精品福利一区二区三区免费视频| 裸体在线国模精品偷拍| 久久亚洲精品国产精品紫薇| 丁香一区二区三区| 亚洲免费av高清| 欧美日韩www| 韩国欧美一区二区| 国产精品久久三| 91行情网站电视在线观看高清版| 亚洲成人免费av| 精品国产区一区| 成人久久视频在线观看| 亚洲精品视频免费看| 在线电影院国产精品| 国产一区二区调教| 亚洲欧美日韩人成在线播放| 欧美精品在线视频| 国产不卡免费视频| 夜夜揉揉日日人人青青一国产精品| 337p亚洲精品色噜噜狠狠| 国产一区二区三区黄视频| 亚洲欧美在线观看| 欧美一级免费大片| 91免费精品国自产拍在线不卡| 日本少妇一区二区| 中文字幕一区二区三区不卡| 欧美日韩精品福利| 懂色av中文一区二区三区| 午夜激情久久久| 中文字幕日韩欧美一区二区三区| 欧美精品vⅰdeose4hd| 成人h动漫精品一区二区| 日韩电影一区二区三区| 国产精品久久99| 精品久久久久一区| 欧美日韩一二三区| 91在线视频18| 国产夫妻精品视频| 日韩在线一区二区三区| 国产精品色哟哟网站| 日韩亚洲欧美中文三级| 色婷婷av一区二区三区大白胸| 精品一二三四区| 图片区小说区国产精品视频| 国产精品视频免费看| 337p粉嫩大胆色噜噜噜噜亚洲| 欧美视频一区在线| 一本大道久久a久久综合| 懂色中文一区二区在线播放| 久久99精品一区二区三区三区| 亚洲线精品一区二区三区| 国产精品免费免费| 国产午夜精品福利| 精品国产百合女同互慰| 91精品国产乱码| 欧美三级电影一区| 91国产丝袜在线播放| 99久久久免费精品国产一区二区 | 男人操女人的视频在线观看欧美| 亚洲精品成a人| 亚洲欧美日韩小说| 亚洲婷婷综合色高清在线| 亚洲国产激情av| 国产精品天干天干在观线| 国产午夜精品在线观看| 久久久精品国产99久久精品芒果| 精品乱人伦小说| 26uuuu精品一区二区| 欧美一级搡bbbb搡bbbb| 日韩欧美一二区| 日韩欧美一卡二卡| 日韩区在线观看| 日韩精品最新网址| 精品裸体舞一区二区三区| 欧美精品一区二区高清在线观看| 日韩精品一区国产麻豆| 精品国产乱码久久久久久免费| 日韩欧美国产三级电影视频| 日韩精品中午字幕| 国产亚洲一区二区三区在线观看| 久久久不卡网国产精品一区| 国产欧美综合在线| 国产精品国产三级国产三级人妇| 国产精品黄色在线观看| 亚洲精品亚洲人成人网 | 麻豆精品国产91久久久久久| 蜜桃视频免费观看一区| 国产一区二区三区电影在线观看 | 韩国v欧美v亚洲v日本v| 国产毛片精品视频| 色综合天天综合色综合av | 成人97人人超碰人人99| 色天天综合色天天久久| 91麻豆精品国产91久久久更新时间| 日韩午夜在线影院| 中文天堂在线一区| 亚洲成a人片综合在线| 精品一区二区影视| 91在线视频观看| 欧美一级黄色片| 亚洲欧洲av一区二区三区久久| 亚洲欧美日韩在线播放| 青青草原综合久久大伊人精品| 国内一区二区在线| 91成人在线免费观看| 精品久久久久一区二区国产| 亚洲欧美一区二区三区极速播放| 亚洲18色成人| 国产成人免费av在线| 欧美人伦禁忌dvd放荡欲情| 久久久久久久久一| 亚洲国产日韩a在线播放性色| 国产一区二区视频在线| 欧美视频完全免费看| 久久久国际精品| 亚洲动漫第一页| 国产福利不卡视频| 日韩一区二区影院| 亚洲免费高清视频在线| 国产精品香蕉一区二区三区| 欧美日韩在线一区二区| 国产精品传媒在线| 久久99精品久久久久久国产越南| 色一情一乱一乱一91av| 国产日产精品一区| 免费的国产精品| 欧美性大战久久久| 亚洲女性喷水在线观看一区| 国产精品一区二区在线看| 91精品国产黑色紧身裤美女| 亚洲三级在线播放| 高清日韩电视剧大全免费| 欧美一区二区三区思思人| 亚洲自拍偷拍欧美| 成人黄色电影在线 | 亚洲成人先锋电影| 色综合久久久久综合体| 亚洲国产岛国毛片在线| 国产久卡久卡久卡久卡视频精品| 欧美日韩激情在线| 亚洲一区精品在线| 色婷婷久久一区二区三区麻豆| 国产精品乱码人人做人人爱| 国产资源精品在线观看| 日韩一级片在线观看| 天天综合色天天| 欧美性一二三区| 亚洲3atv精品一区二区三区| 欧美亚洲动漫制服丝袜| 亚洲一区二区欧美日韩| 在线亚洲一区二区| 亚洲观看高清完整版在线观看| 欧美中文字幕亚洲一区二区va在线| 中文字幕中文字幕在线一区| jvid福利写真一区二区三区|