色婷婷AⅤ一区二区三区|亚洲精品第一国产综合亚AV|久久精品官方网视频|日本28视频香蕉

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計應(yīng)用 > 文件I/O編程之: 實(shí)驗(yàn)內(nèi)容

          文件I/O編程之: 實(shí)驗(yàn)內(nèi)容

          作者: 時間:2013-09-13 來源:網(wǎng)絡(luò) 收藏

          本文引用地址:http://cafeforensic.com/article/257134.htm

          (2)編寫代碼。

          編寫宿主機(jī)和目標(biāo)板上的代碼,在這些程序中用到的open_port()和set_com_config()函數(shù)請參照6.4節(jié)。這里只列出宿主機(jī)上的代碼。

          /*com_host.c*/

          #includestdio.h>

          #includestdlib.h>

          #includeunistd.h>

          #includestring.h>

          #includefcntl.h>

          #includesys/types.h>

          #includesys/stat.h>

          #includeerrno.h>

          #includeuart_api.h

          intmain(void)

          {

          intfds[SEL_FILE_NUM],recv_fd,maxfd;

          charbuff[BUFFER_SIZE];

          fd_setinset,tmp_inset;

          structtimevaltv;

          unsignedloop=1;

          intres,real_read,i;

          /*將從串口讀取的數(shù)據(jù)寫入這個文件中*/

          if((recv_fd=open(RECV_FILE_NAME,O_CREAT|O_WRONLY,0644))0)

          {

          perror(open);

          return1;

          }

          fds[0]=STDIN_FILENO;/*標(biāo)準(zhǔn)輸入*/

          if((fds[1]=open_port(HOST_COM_PORT))0)/*打開串口*/

          {

          perror(open_port);

          return1;

          }

          if(set_com_config(fds[1],115200,8,'N',1)0)/*配置串口*/

          {

          perror(set_com_config);

          return1;

          }

          FD_ZERO(inset);

          FD_SET(fds[0],inset);

          FD_SET(fds[1],inset);

          maxfd=(fds[0]>fds[1])?fds[0]:fds[1];

          tv.tv_sec=TIME_DELAY;

          tv.tv_usec=0;

          printf(Inputsomewords(enter'quit'toexit):n);

          while(loop(FD_ISSET(fds[0],inset)||FD_ISSET(fds[1],inset)))

          {

          tmp_inset=inset;

          res=select(maxfd+1,tmp_inset,NULL,NULL,tv);

          switch(res)

          {

          case-1:

          {

          perror(select);

          loop=0;

          }

          break;

          case0:/*Timeout*/

          {

          perror(selecttimeout);

          loop=0;

          }

          break;

          default:

          {

          for(i=0;iSEL_FILE_NUM;i++)

          {

          if(FD_ISSET(fds[i],tmp_inset))

          {

          memset(buff,0,BUFFER_SIZE);

          /*讀取標(biāo)準(zhǔn)輸入或者串口設(shè)備文件*/

          real_read=read(fds[i],buff,BUFFER_SIZE);

          if((real_read0)(errno!=EAGAIN))

          {

          loop=0;

          }

          elseif(!real_read)

          {

          close(fds[i]);

          FD_CLR(fds[i],inset);

          }

          else

          {

          buff[real_read]='