当前位置: 首页 > news >正文

网站建设合理流程网络服务商

网站建设合理流程,网络服务商,国内哪个网站是做电子元器件的,天津市建设工程合同备网站一、 串口API 在Linux系统中,操作设备的统一接口就是:open/ioctl/read/write。 对于UART,又在ioctl之上封装了很多函数,主要是用来设置行规程。 所以对于UART,编程的套路就是: open设置行规程,比如波特率、数据位、停止位、检验位、RAW模式、一有数据就返回read/write 怎么设置…

一、 串口API

在这里插入图片描述
在Linux系统中,操作设备的统一接口就是:open/ioctl/read/write。
对于UART,又在ioctl之上封装了很多函数,主要是用来设置行规程。
所以对于UART,编程的套路就是:

  • open
  • 设置行规程,比如波特率、数据位、停止位、检验位、RAW模式、一有数据就返回
  • read/write
    怎么设置行规程?行规程的参数用结构体termios来表示,可以参考Linux串口—struct termios结构体
typedef unsigned char 	cc_t;
typedef unsigned int 	speed_t;
typedef unsgined int 	tcflag_t;#define NCCS 19
struct termios {tcflag_t c_iflag;		/* input mode flags */tcflag_t c_oflag;		/* output mode flags */tcflag_t c_cflag;		/* control mode flags */tcflag_t c_lflag;		/* local mode flags */cc_t c_line;			/* line discipline */cc_t c_cc[NCCS];		/* control characters */
};

这些函数在名称上有一些惯例:

  • tc: terminal control
  • cf: control flag
函数名作用
tcgetattrget terminal attributes,获得终端的属性
tcsetattrset terminal attributes,修改终端参数
tcflush清空终端未完成的输入/输出请求及数据
cfsetispeedsets the input baud rate,设置输入波特率
cfsetospeedsets the output baud rate,设置输出波特率
cfsetspeed同时设置输入、输出波特率

函数不多,主要是需要设置好termios中的参数,这些参数很复杂,可以参考Linux串口—struct termios结构体。

二、编程

#include <stdio.h>
#include <string.h>
#include <sys/types.h>
#include <errno.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <unistd.h>
#include <termios.h>
#include <stdlib.h>int set_opt(int fd, int nSpeed, int nBits, char nEvent, int nStop)
{struct termios newtio, oldtio;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_lflag &= ~(ICANON|ECHO|ECHOE|ISIG);newtio.c_oflag &= ~OPOST;switch(nBits) {case 7:newtio.c_cflag |= CS7;break;case 8:newtio.c_cflag |= CS8;break;}switch(nEvent) {case 0:newtio.c_cflag |= PARENB;newtio.c_cflag |= PARODD;newtio.c_iflag |= (INPCK | ISTRIP);break;case 'E':newtio.c_iflag |= (INPCK|ISTRIP);newtio.c_cflag |= PARENB;newtio.c_cflag &= ~PARODD;break;case 'N':newtio.c_cflag &= ~PARENB;break;}switch(nSpeed) {case 2400:cfsetispeed(&newtio, B2400);cfsetospeed(&newtio, B2400);break;case 4800:cfsetispeed(&newtio, B4800);cfsetospeed(&newtio, B4800);break;case 9600:cfsetispeed(&newtio, B9600);cfsetospeed(&newtio, B9600);break;case 115200:cfsetispeed(&newtio, B115200);cfsetospeed(&newtio, B115200);break;default:cfsetispeed(&newtio, B9600);cfsetospeed(&newtio, B9600);break;}if(nStop == 1)newtio.c_cflag &= ~CSTOPB;else if(nStop == 2)newtio.c_cflag |= CSTOPB;newtio.c_cc[VMIN] = 1;newtio.c_cc[VTIME] = 0;tcflush(fd, TCIFLUSH);if((tcsetattr(fd, TCSANOW, &newtio)) != 0) {perror("com set error");return -1;}return 0;
}int open_port(char *com)
{int fd;fd = open(com, O_RDWR|O_NOCTTY);if(-1 == fd) {return -1;}if(fcntl(fd, F_SETFL, 0) < 0) {printf("fcntl failed\n");return -1;}return fd;
}int main(int argc, char *argv[])
{int fd;int iRet;char c;if(argc != 2) {printf("Usage: \n");printf("%s </dev/ttySAC1 or other>\n", argv[0]);return -1;}fd = open_port(argv[1]);if(fd < 0) {printf("open %s err!\n", argv[1]);return -1;}iRet = set_opt(fd, 115200, 8, 'N', 1);if(iRet) {printf("set port err!\n");return -1;}printf("Enter a char: ");while(1) {scanf("%c", &c);iRet = write(fd, &c, 1);iRet = read(fd, &c, 1);if(iRet == 1) {printf("get: %02x %c\n", c, c);} else {printf("can not get data\n");}}return 0;
}

三、上机实验

短接串口的RX和TX

root@npi:~/test# ./a.out /dev/ttymxc2 
Enter a cahr: a
get: 61 a
get: 0a get: 0a get: 0a a 
get: 61 a
get: 0a 
http://www.tj-hxxt.cn/news/2766.html

相关文章:

  • 十堰的网站建设长沙seo网站优化
  • 微信 app 微网站 整合百度客服24小时人工服务
  • wordpress禁止抓取分页一个网站可以优化多少关键词
  • 怎么给公司做微网站北京seo网站管理
  • 国外做设计赚钱的网站网络营销的重要性与意义
  • 商城网站现在可以做么怎么找到精准客户资源
  • 个人网站整站源码下载长春seo排名
  • 帮客户做违法网站违法么盐城seo营销
  • 建设银行违法网站什么是软文写作
  • 重庆网站建设推广服务深圳营销推广公司
  • 找人帮你做ppt的网站吗百度seo通科
  • 新网站制作怎么样google关键词规划师
  • 乌鲁木齐外贸网页设计培训唐山百度seo公司
  • 新手怎样做网站推广如何利用互联网进行宣传推广
  • 北京网站维护今日足球赛事推荐
  • 青海企业网站建设开发广州百度首页优化
  • 深圳网站建设代理网站营销策划
  • 深圳专业网站建设企业关键字排名查询工具
  • 成都网站快照优化公司站长
  • 有没有做英语试题的网站百度网站快速优化
  • 公司网站建设规划网站关键词排名查询
  • 网站里的地图定位怎么做建站公司排名
  • 网站推广与品牌建设百度站长管理平台
  • 六盘水市网站建设附近学电脑培训班
  • 房产信息查询官网杭州seo网络推广
  • 南宁cms建站无锡谷歌推广
  • 网站地图(build090324)是用什么做的百度手机极速版
  • 做演讲视频的网站企业seo顾问
  • 如何建造免费的网站开发做一个网站需要多少钱
  • 那个网站可以兼职做效果图google优化师