Chinaunix首页 | 论坛 | 博客
  • 博客访问: 144685
  • 博文数量: 66
  • 博客积分: 1571
  • 博客等级: 上尉
  • 技术积分: 715
  • 用 户 组: 普通用户
  • 注册时间: 2011-10-24 22:55
文章分类

全部博文(66)

文章存档

2012年(66)

我的朋友

分类: 嵌入式

2012-04-26 10:55:25

串口发送函数
===========================================================================================
/******************头文件定义******************/
#include
#include
#include
#include
#include
#include
#include
#include
#define max_buffer_size 100 /*定义缓冲区最大宽度*/
/*******************************************/
int fd; /*定义设备文件描述符*/
int open_serial(int k)
{
if(k==0) /*串口选择*/
{
   fd = open("/dev/ttyS0",O_RDWR|O_NOCTTY|O_NDELAY); /*读写方式打开串口*/
}
else
{
    perror("can't open /dev/ttyS");
    return(-1);
}
if(fd == -1) /*打开失败*/
 {
    perror("can't open /dev/ttyS0");
    return -1;
 }
else
  return 0;
}
/********************************************************************/
int main(int argc, char *argv[ ] )
{
char sbuf[]={"Hello,this is a Serial_Port test!\n"};/*待发送的内容,以\n 为结束标志*/
int sfd,retv,i;
struct termios newtio,oldtio;
int length=sizeof(sbuf);/*发送缓冲区数据宽度*/
/*******************************************************************/
open_serial(0); /*打开串口1*/
/*******************************************************************/
printf("ready for sending data...\n"); /*准备开始发送数据*/
if(tcgetattr(fd,&oldtio)!=0)
   {
         perror("SetupSerial 1");
         return -1;
   }
/*bzero( &newtio, sizeof(newtio));
newtio.c_cflag |= CLOCAL | CREAD;
newtio.c_cflag &= ~CSIZE;
newtio.c_cflag | =CS8; */
cfmakeraw(&newtio); //一步到位全部设置好
/*****************************************************************/
cfsetispeed(&newtio,B115200); /*波特率设置为115200bps*/
cfsetospeed(&newtio,B115200);
/*******************************************************************/
newtio.c_cc[VTIME] = 0;  /*设置接收条件*/
newtio.c_cc[VMIN] = 0;
/*******************************************************************/
tcflush(fd,TCIFLUSH);  /*设置完成*/
if((tcsetattr(fd,TCSANOW,&newtio))!=0)
{
  perror("com set error");
  return -1;
}
printf("set done!\n");
/*******************************************************************/
  retv=write(fd,sbuf,length); /*接收数据*/
  if(retv==-1)
   {
     perror("write");
   }
  printf("the number of char sent is %d\n",retv);
 if(close(fd)!=0) /*判断是否成功关闭文件*/
 {
  perror("Close the Device failur!\n");
  return 0;
 }
}
/****************************结束***********************************/
 
串口接收函数
============================================================================
/*********************头文件定义***********************/
#include
#include
#include
#include
#include
#include
#include
#include
#include "math.h"
#define max_buffer_size 100 /*定义缓冲区最大宽度*/
int fd; /*定义设备文件描述符*/
int open_serial(int k)
{
if(k==0) /*串口选择*/
 {
   fd = open("/dev/ttyS0",O_RDWR|O_NOCTTY|O_NDELAY); /*读写方式打开串口*/
 }
else
 {
    perror("can't open /dev/ttyS");
    return(-1);
 }
if(fd == -1) /*打开失败*/
 {
    perror("can't open /dev/ttyS0");
    return -1;
  }
else
  return 0;
}
int main(int argc, char *argv[ ] )
{
char hd[max_buffer_size],*rbuf; /*定义接收缓冲区*/
int  retv,i,ncount=0;
struct termios newtio,oldtio;
/*******************************************************************/
open_serial(0); /*打开串口1*/
/*******************************************************************/
if(tcgetattr(fd,&oldtio)!=0)
   {
         perror("SetupSerial 1");
         return -1;
   }
cfmakeraw(&newtio); //一步到位全部设置好
/*****************************************************************/
cfsetispeed(&newtio,B115200); /*波特率设置为115200bps*/
cfsetospeed(&newtio,B115200);
/*******************************************************************/
newtio.c_cc[VTIME] = 0;  /*设置接收条件*/
newtio.c_cc[VMIN] = 0;
if((tcsetattr(fd,TCSANOW,&newtio))!=0)
{
  perror("com set error");
  return -1;
}
printf("set done!\n");
rbuf=hd; /*数据保存*/
printf("ready for receiving data...\n");
retv=read(fd,rbuf,1); /*接收数据*/
if(retv==-1)
{
perror("read error"); /*读状态标志判断*/
}
/*************************开始接收数据******************************/
while(*rbuf!='\n') /*判断数据是否接收完毕*/
{
  ncount++;
  rbuf++;
  retv=read(fd,rbuf,1);
  if(retv==-1)
  {
    perror("read error");
  }
}
/*******************************************************************/
printf("The data received is:\n"); /*输出接收到的数据*/
for(i=0;i{
  printf("%c",hd[i]);
}
printf("\n");
if(close(fd)!=0) /*判断是否成功关闭文件*/
 {
  perror("Close the Device failur!\n");
  return 0;
 }
}
/****************************结束***********************************/
阅读(1524) | 评论(0) | 转发(0) |
0

上一篇:赫夫曼树

下一篇:Makefile文件

给主人留下些什么吧!~~