Chinaunix首页 | 论坛 | 博客
  • 博客访问: 178405
  • 博文数量: 43
  • 博客积分: 2516
  • 博客等级: 少校
  • 技术积分: 500
  • 用 户 组: 普通用户
  • 注册时间: 2008-11-09 10:25
文章分类

全部博文(43)

文章存档

2011年(1)

2009年(11)

2008年(31)

我的朋友

分类:

2008-12-29 21:05:25

  行将年终,将自己这麽长时间学习Linux的经验与大家分享一下。
  在最近这段时间里,由于本身davince学习比较困难,而自己又有很多东西要做,因此很长时间没有更新,在这里做自我批评。
  最近进展的确很缓慢,很多时候都不知道该怎么下手,可以说进入了迷茫时期,目前正在苦寻解决方案,早日结束这种情况。
  我认为最关键的是我对Linux系统还体会不深,这里不是指别的,而是指glibc,目前正在努力看他的使用手册,偏向于底层的了解,因此应用就做的少些。目前主要有一个任务。我们买了一个测距仪,没有Linux版本的通信程序,她自身可以通过串口或网络来通信,它有一个接口规范。目前主要针对这个接口规范来编写串口接口程序。最终要在davince下实现,目前还徘徊在上位机部分,进展不是很大,串口还要有一段时间需要熟悉。目前对测距仪用串口调试助手测试已经可以(不是我做的),我做的Linux程序如下
 #include
      #include
      #include
      #include
      #include
      #include
      #define BAUDRATE B115200
      #define MODEMDEVICE "/dev/ttyS0"
      #define _POSIX_SOURCE 1 /* POSIX compliant source */
      #define FALSE 0
      #define TRUE 1
       
      volatile int STOP=FALSE;
      
      int main()
      {
        int fd,numberwrite,numberreceived,res;
        struct termios oldtio,newtio;
        char buf[255];
        printf("Hello");
        fd = open(MODEMDEVICE, O_RDWR | O_NOCTTY );
        if (fd <0)
        {perror(MODEMDEVICE);
        return -1; }
        printf("Sucess in open com");
        tcgetattr(fd,&oldtio); /* save current port settings */
        cfsetispeed(&oldtio,B115200);
        cfsetispeed(&oldtio,B115200);
        /*oldtio.c_cflag &= ~PARENB;
        oldtio.c_cflag &= ~CSTOPB;
        oldtio.c_cflag &= ~CSIZE;*/
       
        oldtio.c_cflag |= CLOCAL | CREAD;
        oldtio.c_iflag = IGNPAR;
        oldtio.c_oflag = 0;
       
        /* set input mode (non-canonical, no echo,...) */
        //oldtio.c_lflag =  ICANON;
        
        oldtio.c_cc[VTIME]    = 0;   /* inter-character timer unused */
        oldtio.c_cc[VMIN]      = 5;   /* blocking read until 5 chars received */
       
        tcflush(fd, TCIFLUSH);
        tcsetattr(fd,TCSANOW,&oldtio);
       
        numberwrite= write(fd, "Hello", strlen("Hello"));
        if(numberwrite<0)
        {printf("Faile to send character");
        return -1;
        }
        printf("Success to send character total %d",numberwrite);
         while (STOP==FALSE) {       /* loop for input */
          res = read(fd,buf,5);   /* returns after 5 chars have been input */
         buf[res]=0;               /* so we can printf... */
         printf(":%s:%d\n", buf, res);
          if (buf[0]=='z') STOP=TRUE;
        }
       close(fd);
      return 0;
      }。
这是参考别人做的基本收发模块,目前还在调试中。
我把很多精力放在了glibc上,目前还谈不上了解。
前一段世间装机装的很烦,特别是有一个同学光驱和硬盘是同一个接口,死活装不上,后来我想是否可以利用Linux远程登录到一台服务器,再利用ftp进行文件传输,这样就不用装系统了。telnet是最常用的远程登录方式,主机只要把自己当作ftp服务器就可以了。于是我就下了个Windows版本的ftp服务器,安装后设置用户密码就可以了。
在Windows下命令行中运行 telnet  ***.***.***.***(IP)
进入欢迎界面:user:
输入登录名:××××××
提示输入密码:
输入密码后,正常的话就可以进入了。可以进行多种操作。
其实这就是一种基于socket的通信方式罢了。
要写文件进去,用ftp就可以了,首先确保服务器的ftp client可用。可以ftp 自己一下试试。
例如 ftp ***.***.***.***
如果提示输入名字,密码就ok了。
在telnet后的命令行中输入:ftp ***.***.***.***
输入姓名,密码,成功后,用get 来获取文件。
注意此时主机ftp服务程序要开,ftp服务器安装的时候会提示选择ftp目录,在任一盘建立一个文件夹,将它指定为ftp目录,例如:D:/ftp
登录服务器后可用ls来显示文件夹文件
例如ls
这时候D:/ftp是空的,什么都没有,把需要传送的文件弄进去,
再次ls
看文件是否在,再用get  ****
提示完成后用bye退出。下载的文件一般放在自己的home文件夹里了。可以进行相应操作。
服务器也可以作为ftp服务器,自己机子做client,windows下用命令ftp
进入命令后用open(记不清了,可用ftp -h来看)***.***.***.***(IP)
链接后就可以传文件。
vista系统没有激活client,因此要在控制面板中好像是程序管理中激活ftp,其他无两样。
最近一直钻在通信这一块了,(未完待续)
阅读(1119) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~