毕业论文开发语言企业开发JAVA技术.NET技术WEB开发Linux/Unix数据库技术Windows平台移动平台嵌入式论文范文英语论文
您现在的位置: 毕业论文 >> 嵌入式 >> 正文

tq2440开发板串口读写问题

更新时间:2013-3-17:  来源:毕业论文

真的可以了。在S5pv210 wince6.0 上可以了,用起来很爽。
我原来版本是6.0.0 的不行,现在这个是6.0.2 版用串口线 pc机连接tc35开发板,使用虚拟机Linux,执行下列程序,能够成功打电话
可是用我的tq2440连接tc35开发板,写入数据却读不出来,也不能打电话的,OK了,

#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; }

串口线必须是交叉的,连在电脑上的线是串口延长线

设为首页 | 联系站长 | 友情链接 | 网站地图 |

copyright©youerw.com 优尔论文网 严禁转载
如果本毕业论文网损害了您的利益或者侵犯了您的权利,请及时联系,我们一定会及时改正。