Chinaunix首页 | 论坛 | 博客
  • 博客访问: 526116
  • 博文数量: 87
  • 博客积分: 4086
  • 博客等级: 上校
  • 技术积分: 900
  • 用 户 组: 普通用户
  • 注册时间: 2007-12-23 15:55
文章分类

全部博文(87)

文章存档

2012年(3)

2010年(13)

2009年(7)

2008年(64)

我的朋友

分类: LINUX

2008-07-09 09:40:20

    昨天写了一个2410和gprs通信的小程序,模拟xp的超级终端与gprs通信的方式。用户从命令行界面输入命令,和超级终端下调试的时候是一样的,就不多说了。代码比较少,如下:

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <unistd.h>
#include <fcntl.h>
#include <errno.h>
#include <termios.h>


int open_port(void)
{
  int fd;

  fd = open("/dev/s3c2410_serial1", O_RDWR|O_NOCTTY|O_NDELAY);

  if(fd == -1)
    printf("Unable to open uart1\n");
  else
    fcntl(fd, F_SETFL, 0);

  return fd;
}

int setup_uart(int fd)
{
  struct termios oldtio, newtio;

  if((tcgetattr(fd, &oldtio)) != 0)
    {
      printf("Save old error!\n");
      return -1;
    }

  bzero(&newtio, sizeof(newtio));

  newtio.c_cflag |= (CLOCAL | CREAD);

  newtio.c_cflag &= ~CSIZE;
  newtio.c_cflag &= ~CSTOPB;// 1 stop bit

  newtio.c_cflag &= ~PARENB;// No parity

  newtio.c_cflag |= CS8; // 8 bits data


  cfsetispeed(&newtio, B9600);
  cfsetospeed(&newtio, B9600);

  //newtio.c_lflag |= (ICANON | ECHO);

  //newtio.c_lflag &= ~ECHOE;


  //newtio.c_iflag &= ~(IXON | IXOFF | IXANY);


  newtio.c_cc[VTIME] = 0;
  newtio.c_cc[VMIN] = 0;

  tcflush(fd, TCIFLUSH);

  if((tcsetattr(fd, TCSANOW, &newtio)) != 0)
    {
      printf("Set new error!\n");
      return -1;
    }
}

int main(void)
{
  int i;
  int fd;
  char c,str[200];

  fd = open_port();

  if(fd == -1)
    return 0;

  i = setup_uart(fd);
  if(i == -1)
    return 0;

  while(1)
    {
      for(i=0; i<200; i++)
    str[i] = '\0';
      i = 0;
      
      printf("GPRS-CMD #");

      while((c=getchar()) != 10)
    {
     str[i] = c;
     i++;
    }
      str[i] = 13;
      str[i+1] = '\0';

      i = write(fd, str, strlen(str));

      if(i < 0)
    printf("write error!");
      
      for(i=0; i<100; i++)
    usleep(100);

      i = read(fd, str, 200);
      printf("%s\n", str);
    }
}

 

    程序中还有一些小bug,由于只是用于调试,就没有花时间去修改。有兴趣的朋友可以修改一下。改完了别忘记告诉大家哈!

 

    接下来要写一个自动发短信的程序,写好了会上传。

阅读(1552) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~