查看“第十四课--MicroWRT 串口使用”的源代码
←
第十四课--MicroWRT 串口使用
跳转至:
导航
、
搜索
因为以下原因,您没有权限编辑本页:
您所请求的操作仅限于该用户组的用户使用:
用户
您可以查看与复制此页面的源代码。
1.进入/etc/目录,修改inittab,打开文件并将如下代码的最后一行注释掉。 <source lang="cpp"> ::sysinit:/etc/init.d/rcS S boot ::shutdown:/etc/init.d/rcS K stop ttyS0::askfirst:/bin/login #ttyS1::askfirst:/bin/login </source> 2.编辑serial.c文件,代码如下: <source lang="cpp"> /* *按照教程学习串口的编程 *网址:http://blog.csdn.net/shanzhizi/article/details/9241393 */ //头文件 #include <stdio.h> //标准输入输出定义 #include <stdlib.h> //标准函数库定义 #include <unistd.h> //Unix标准函数定义 #include <sys/types.h> #include <sys/stat.h> #include <fcntl.h> //文件控制定义 #include <termios.h> //POSIX中断控制定义 #include <errno.h> //错误号定义 //定义波特率数组 int speed_arr[] = {B115200, B38400, B19200, B9600, B4800, B2400, B1200, B300}; int name_arr[] = {115200,38400, 19200, 9600, 4800, 2400, 1200, 300}; //打开串口 int open_port(void) { int fd; //串口的标识符 //O_NOCTTY用来告诉Linux这个程序不会成为“控制终端” //O_NDELAY用来告诉Linux这个程序不关心DCD信号 fd=open("/dev/ttyS1",O_RDWR | O_NOCTTY | O_NDELAY); if(fd == -1) { //不能打开串口 perror("open_port: Unable to open /dev/ttyS1 -"); return(fd); } else { fcntl(fd, F_SETFL, 0); printf("open ttys1 .....\n"); return(fd); } } //设置波特率 void set_speed_and_parity(int fd, int speed) { int i=0; //设置循环标志——注意不要在for内设置,否则会出错 struct termios Opt; //定义termios结构 if(tcgetattr(fd,&Opt)!=0) { perror("tcgetattr fd"); return; } for(i = 0; i < 8 ; i++) { if(speed == name_arr[i]) { tcflush(fd, TCIOFLUSH); cfsetispeed(&Opt, speed_arr[i]); cfsetospeed(&Opt, speed_arr[i]); /*tcsetattr函数标志: TCSANOW:立即执行而不等待数据发送或者接受完成。 TCSADRAIN:等待所有数据传递完成后执行。 TCSAFLUSH:Flush input and output buffers and make the change */ if(tcsetattr(fd, TCSANOW, &Opt) != 0) { perror("tcsetattr fd"); return; } tcflush(fd, TCIOFLUSH); } } //设置奇偶校验——默认8个数据位、没有校验位 Opt.c_cflag &= ~PARENB; Opt.c_cflag &= ~CSTOPB; Opt.c_cflag &= ~CSIZE; Opt.c_cflag |= CS8; } /* //设置奇偶校验——默认8个数据位、没有校验位 int set_parity() { Opt.c_options.c_cflag &= ~PARENB options.c_cflag &= ~CSTOPB options.c_cflag &= ~CSIZE; Opt.c_cflag |= CS8; } */ int main(void) { int fd; int nread,i; char buff[]="Hello\n"; //打开串口 if((fd=open_port())<0) { perror("open_port error"); return 0; } //设置波特率和校验位 set_speed_and_parity(fd,115200); //设置校验位 //set_parity(); printf("fd=%d\n",fd); //尝试先写内容 for(int i=0;i<100;i++) { nread=write(fd,buff,8); //nread=read(fd,buff,8); printf("nread=%d,%s\n",nread,buff); } //关闭串口 close(fd); return 0; } </source> 3.进行编译,然后将生成的bin文件放在/usr/bin目录下直接运行,打开串口就可以看到输出地结果了。
返回至
第十四课--MicroWRT 串口使用
。
导航菜单
个人工具
创建账户
登录
名字空间
页面
讨论
变种
视图
阅读
查看源代码
查看历史
更多
搜索
Welcome
首页
创客大赛
大赛详情
3D打印
安装月球车
图形化编程
操控月球车
升级月球车
编程工具下载
软件下载
Arduino
Processing
Mixly
Scratch
模块套件
Microduino 102
mCookie 102
mCookie 202
mCookie 302
IBC
其他
应用套件
四轴飞行器
平衡车
小车CUBE
音乐播放器
刷卡音乐播放器
wifi气象站
彩虹音乐触摸灯
分贝检测仪
迎门汇报
LED点阵时钟
LED点阵屏幕
硬件
mCookie
Sensor
Microduino
MicroWrt
MicroNux
MicroRobot-Core
MicroRobot-CoreESP
ideaBoard
ideaBox
MicroMV
MicroAI
帮助
常见问题
帮助
工具
链入页面
相关更改
特殊页面
页面信息