Linux编程:linux串口示例Linux认证考试

文章作者 100test 发表时间 2009:09:23 08:51:50
来源 100Test.Com百考试题网


  最近看了下linux的串口,发现还是蛮容易的做一些总结和记录
  【这篇文章也重在备份和记录,代码都是套用别人的 ,所以基本只是罗列了些代码,但保证代码可用】
  其实串口操作也就那么几步
  1.打开串口
  2.设置参数
  3.发送接收
  4.按需关闭
  而根据函式提供的形式,
  一般设置参数分两步进行【其实就是那么配置下,分几步都行,只是配合后面的代码了】
  [1]设置波特率
  [2]设置数据格式
  下面还是罗列一些代码
  打开串口
  int OpenDev(char *Dev)
  {
  int fd = open( Dev, O_RDWR ).
  if (-1 == fd)
  {
  perror("Cant Open Serial Port").
  return -1.
  }
  else
  return fd.
  }
  O_RDWR就是可读写的意思设置波特率
  Code
  int speed_arr[] = { B38400, B19200, B9600, B4800, B2400, B1200, B300,
  B38400, B19200, B9600, B4800, B2400, B1200, B300, }.
  int name_arr[] = {38400, 19200, 9600, 4800, 2400, 1200, 300, 38400,
  19200, 9600, 4800, 2400, 1200, 300, }.
  void set_speed(int fd, int speed){
  int i.
  int status.
  struct termios Opt.
  tcgetattr(fd, &.Opt).
  for ( i= 0. i <. sizeof(speed_arr) / sizeof(int). i ) {
  if (speed == name_arr[i]) {
  tcflush(fd, TCIOFLUSH).
  cfsetispeed(&.Opt, speed_arr[i]).
  cfsetospeed(&.Opt, speed_arr[i]).
  status = tcsetattr(fd, TCSANOW, &.Opt).
  if (status != 0) {
  perror("tcsetattr fd1").
  return.
  }
  tcflush(fd,TCIOFLUSH).
  }
  }
  }
  设置参数是用到了一个专用的结构体struct termios其实也没啥说的,就是通过它去配置串口参数罢了注意tcflush,他是清空buffer用的,关于buffer这东西,里面其实挺饶,这里不多说明,只是要注意它清空的buffer并不是printf那类函式中所谓的缓冲。
  另外那两个数组,其实可以弄的简单些,只不过懒得改了有点像画刷的使用,旧的一般都爱保存起来,最后还要还原。

相关文章


ARM携手VIALinux移动平台求更多机会Linux认证考试
谷歌OS能击败Linux的10大理由Linux认证考试
关于劫持系统调用隐藏进程Linux认证考试
UbuntuServer网络配置Linux认证考试
Linux编程:linux串口示例Linux认证考试
文件系统大杂烩看看哪种适合你Linux认证考试
采用Linux能使在线银行交易更安全Linux认证考试
Unix_Linux系统:网络接口带宽管理(1)Linux认证考试
开源Linux虚拟化优势比Windows更明显Linux认证考试
澳大利亚华人论坛
考好网
日本华人论坛
华人移民留学论坛
英国华人论坛