tq2440开发板串口读写问题,各位请进,在线等待

dingyuanpu 2010-10-09 09:00:43
用串口线 pc机连接tc35开发板,使用虚拟机Linux,执行下列程序,能够成功打电话
可是用我的tq2440连接tc35开发板,写入数据却读不出来,也不能打电话,请各位大侠指点


#include <stdio.h>
#include <string.h>
#include <sys/types.h>
#include <error.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <termios.h>
#include <stdlib.h>

int fd;

/*
* 打开串口1
*/
int open_ttyS0()
{
//O_RDWR:以读写的方式打开设备
//O_NOCTTY:如果欲打开的文件为终端设备时,则不会将该终端当成当前进程控制终端
//O_NDELAY:以不可阻断的方式打开文件,即无论有无数据读取或等待,都会立即返回进程之中

//fd = open("/dev/ttyS0", O_RDWR | O_NOCTTY | O_NDELAY); //虚拟机Linux测试
fd = open("/dev/tq2440_serial0", O_RDWR | O_NOCTTY | O_NDELAY); //tq2440 Linux测试

printf("\nfd = %d\n\n", fd);

if(fd < 0) //打开失败
{
return -1;
}

//恢复串口为阻塞状态
if(fcntl(fd, F_SETFL, 0) < 0) //F_SETFL:改变open设置的标志
{
close(fd);

return -2;
}

//测试是否为终端设备
if(0 == isatty(fd)) //isatty:检查设备类型
{
close(fd);

return -3;
}

return fd;
}

/*
* 设置串口1,共9步
* 数据位:8
* 校验位:无
* 波特率:115200
* 停止位:1
*/
int set_ttyS0()
{
struct termios newtio, oldtio;

//1、保存原有串口配置
if(tcgetattr(fd, &oldtio) != 0)
{
return -1;
}

//2、激活本地连接和接受使能
bzero(&newtio, sizeof(newtio)); //使用之前先清空
newtio.c_cflag |= CLOCAL | CREAD;

//3、设置字符大小
newtio.c_cflag &= ~CSIZE; //除去数据位中的位掩码
newtio.c_cflag |= CS8; //设置数据位

//4、设置奇偶校验位:无奇偶校验位
newtio.c_cflag &= ~PARENB; //激活校验位使能标志

//5、设置波特率
cfsetispeed(&newtio, B115200);
cfsetospeed(&newtio, B115200);

//6、设置停止位:1
newtio.c_cflag &= ~CSTOPB;

//7、设置等待时间和最小接收字符
newtio.c_cc[VTIME] = 0;
newtio.c_cc[VMIN] = 0;

//8、处理要写入的引用对象
tcflush(fd, TCIFLUSH); //处理未接收字符串,TCIFLUSH:刷新收到的数据但不读

//9、激活新配置
if(tcsetattr(fd, TCSANOW, &newtio) != 0) //TCSANOW:改变的配置立即生效
{
return -2;
}

return 0;
}

int main()
{
char cmd[] = "ATD 15954179972;\r";

open_ttyS0();
set_ttyS0();

printf("write: %d\n", write(fd, cmd, sizeof(cmd)));
sleep(2);
printf("read: %d\n", read(fd, cmd, sizeof(cmd)));

return 0;
}


在tc35和pc机相连的时候执行成功,如下图

但是tc35和tq2440开发板相连的时候就出现问题了,如下图
...全文
126 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
手机写程序 2010-10-11
  • 打赏
  • 举报
回复
set_ttyS0()后sleep(2);试试.
manytao 2010-10-10
  • 打赏
  • 举报
回复
....友情帮顶..没搞过 学习了
dingyuanpu 2010-10-10
  • 打赏
  • 举报
回复
太伤人了,自己再顶

23,125

社区成员

发帖
与我相关
我的任务
社区描述
Linux/Unix社区 应用程序开发区
社区管理员
  • 应用程序开发区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧