串口编程485

对于波特率的设置通常使用cfsetospeed和cfsetispeed函数来完成。获取波特率信息是通过cfgetispeed和 cfgetospeed函数来完成的。

  cfsetospeed函数

  头文件:

  #include

  函数原型:

  int cfsetospeed(struct termios *termptr, speed_t speed);

  参数:

  struct termios *termptr - 指向termios结构的指针

  speed_t speed - 需要设置的输出波特率

  返回值:

  如果成功返回0,否则返回-1

  cfsetispeed函数

  头文件:

  #include

  函数原型:

  int cfsetispeed(struct termios *termptr, speed_t speed);

  参数:

  struct termios *termptr - 指向termios结构的指针

  speed_t speed - 需要设置的输入波特率

  返回值:

  如果成功返回0,否则返回-1

  cfgetospeed函数

  头文件:

  #include

  函数原型:

  speed_t cfgetospeed(const struct termios *termptr);

  参数:

  const struct termios - 指向termios结构的指针

  返回值:

  返回输出波特率

  cfgetispeed函数

  头文件:

  #include

  函数原型:

  speed_t cfgetispeed(const struct termios *termptr);

  参数:

  const struct termios *termptr - 指向termios结构的指针

  返回值:

  返回输入波特率

  波特率常量:

  CBAUD 掩码

  B0 0波特

  B50 50波特

  B75 75波特

  B110 100波特

  B134 134波特

  B150 150波特

  B200 200波特

  B300 300波特

  B600 600波特

  B1200 1200波特

  B1800 1800波特

  B2400 2400波特

  B9600 9600波特

  B19200 19200波特

  B38400 38400波特

  B57600 57600波特

  B115200 115200波特

example:

int Uart_Open(char *dev_name)
{
int fd;
//int c=0, res;
#if SET_UART
struct termios oldtio, newtio;
#endif

printf("Start...\n");
fd = open(dev_name, O_RDWR|O_NOCTTY);

if (fd < 0) {
perror(dev_name);
exit(1);
}

printf("Open...\n");
#if SET_UART
tcgetattr(fd, &oldtio);
bzero(&newtio, sizeof(newtio));

newtio = oldtio;

cfsetispeed(&newtio, BAUDRATE);
cfsetospeed(&newtio, BAUDRATE);
cfmakeraw(&newtio);

tcflush(fd, TCIOFLUSH);
tcsetattr(fd, TCSANOW, &newtio);
#else
system("stty sane 115200 raw -echo -crtscts parodd < /dev/tts/0");
#endif
return fd;

}

串口编程485

时间: 2024-12-16 14:17:15

串口编程485的相关文章

基于MODBUS-RTU协议的串口编程

首先给大家描述一下当前样例串口编程的场景,使用一个水位传感器来测试水库水位的高度,水位传感器连接数据采集器,数据采集器通过485串口和USB口转换器和电脑连接,电脑程序通过USB口读取水位传感器上传到采集器的数据,网络连接如下图所示: 样例代码如下,代码中"int hight = (list[3] - 4000) /160;"这个公式就可以获取到水位的高度,这个是比较难理解的,为什么这样就可以得到高度呢,其实这个公式是不完整的,完整公式是这样的:(传感器返回的电流值 - 传感器可输出电

Linux 程序设计学习笔记----终端及串口编程基础之概念详解

转载请注明出处,谢谢! linux下的终端及串口的相关概念有: tty,控制台,虚拟终端,串口,console(控制台终端)详解 部分内容整理于网络. 终端/控制台 终端和控制台都不是个人电脑的概念,而是多人共用的小型中型大型计算机上的概念. 1.终端 一台主机,连很多终端,终端为主机提供了人机接口,每个人都通过终端使用主机的资源. 终端有字符哑终端和图形终端两种. 控制台是另一种人机接口, 不通过终端与主机相连, 而是通过显示卡-显示器和键盘接口分别与主机相连, 这是人控制主机的第一人机接口.

Linux下串口编程【转】

本文转载自:http://blog.csdn.net/w282529350/article/details/7378388 /************声明:本人只是见到这篇文章对我帮助很大才转载的,但是这个完整的程序里面本来有语法错误的,现在让我改过来了************/ --------------------------------------------------------- Author             :tiger-johnWebSite            :b

串口编程补充

首先声明此文只适合我这等串口编程新手,也欢迎大神吐槽 参数转换问题: /// <summary> /// 数据转换 /// </summary> /// <param name="values">要转换的byte数组</param> /// <param name="factor">计算因子</param> /// <param name="reh">高位字符&l

linux串口编程参数配置详解

1.linux串口编程需要的头文件 #include <stdio.h>         //标准输入输出定义 #include <stdlib.h>        //标准函数库定义 #include <unistd.h>       //Unix标准函数定义 #include <sys/types.h> #include <sys/stat.h> #include <fcntl.h>          //文件控制定义 #incl

基于树莓派的Linux串口编程_实现自发自收

串口是计算机上一种非常通用设备通信的协议,常用PC机上包含的是RS232规格的串口,具有连接线少,通讯简单,得到广泛的使用. Linux对所有设备的访问是通过设备文件来进行的,串口也是这样,为了访问串口,只需打开其设备文件即可操作串口设备.在linux系统下面,每一个串口设备都有设备文件与其关联,设备文件位于系统的/dev目录下面.如linux下的/ttyS0,/ttyS1分别表示的是串口1和串口2. 树莓派UART端口的位置:见下图的GPIO14(TXD).GPIO 15(RXD) 本文是基于

Linux串口编程详解

串口本身,标准和硬件 ? 串口是计算机上的串行通讯的物理接口.计算机历史上,串口曾经被广泛用于连接计算机和终端设备和各种外部设备.虽然以太网接口和USB接口也是以一个串行流进行数据传送的,但是串口连接通常特指那些与RS-232标准兼容的硬件或者调制解调器的接口.虽然现在在很多个人计算机上,原来用以连接外部设备的串口已经广泛的被USB和Firewire替代:而原来用以连接网络的串口则被以太网替代,还有用以连接终端的串口设备则已经被MDA或者VGA取而代之.但是,一方面因为串口本身造价便宜技术成熟,

QT开发(五十)——QT串口编程基础

QT开发(五十)--QT串口编程基础 一.QtSerialPort简介 1.串口通信基础 目前使用最广泛的串口为DB9接口,适用于较近距离的通信.一般小于10米.DB9接口有9个针脚. 串口通信的主要参数如下: A.波特率:衡量通信速度的参数,表示每秒钟传送的bit的个数.例如9600波特表示每秒钟发送9600个bit. B.数据位:衡量通信中实际数据位的参数,当计算机发送一个信息包,实际包含的有效数据位个数. C.停止位:用于表示单个包的最后一位.典型的值为1和2位. D.奇偶校验位:串口通信

linux串口编程参数配置详解(转)

1.linux串口编程需要的头文件 #include <stdio.h>         //标准输入输出定义#include <stdlib.h>        //标准函数库定义#include <unistd.h>       //Unix标准函数定义#include <sys/types.h>#include <sys/stat.h>#include <fcntl.h>          //文件控制定义#include &l