资源简介
此例子经过验证 不是转载 Linux 串口 数据接收 发送
代码片段和文件信息
/*receive.c 没有线程*/
#include /*标准输入输出定义*/
#include /*标准函数库定义*/
#include /*Unix标准函数定义*/
#include /**/
#include /**/
#include /*文件控制定义*/
#include /*PPSIX终端控制定义*/
#include /*错误号定义*/
#define TRUE 0
#define FALSE -1
/***@brief 设置串口通信速率
*@param fd 类型int 打开串口的文件句柄
*@param speed 类型int 串口速度
*@return void*/
int speed_arr[] = {B115200 B38400 B19200 B9600 B4800 B2400 B1200 B300
B38400 B19200 B9600 B4800 B2400 B1200 B300 };
int name_arr[] = {11520038400 19200 9600 4800 2400 1200 300
38400 19200 9600 4800 2400 1200 300 };
//设置波特率
void set_speed(int fd int speed)
{
int i;
int status;
struct termios Opt;
tcgetattr(fd &Opt);
for ( i= 0; i < sizeof(speed_arr) / sizeof(int); i++)
{
if (speed == name_arr[i])
{
tcflush(fd TCIOFLUSH); //清空串口的缓冲区
cfsetispeed(&Opt speed_arr[i]);
cfsetospeed(&Opt speed_arr[i]);
status = tcsetattr(fd TCSANOW &Opt);
if (status != 0)
perror(“tcsetattr fd1“);
return;
}
tcflush(fdTCIOFLUSH);//清空串口的缓冲区
}
}
/**
*@brief 设置串口数据位,停止位和效验位
*@param fd 类型 int 打开的串口文件句柄*
*@param databits 类型 int 数据位 取值为7 或者*
*@param stopbits 类型 int 停止位 取值为1 或者*
*@param parity 类型 int 效验类型取值为NEOS
*/
//此类是封好的比较完整的类 可以直接使用
static int set_Parity(int fd int databits int stopbits int parity)
{
struct termios options;
if(tcgetattr(fd&options)!=0)
{
perror(“SetupSerial 1“);
return(FALSE);
}
options.c_cflag &= ~CSIZE;
switch (databits) /*设置数据位数*/
{
case 7:
options.c_cflag |= CS7;
break;
case 8:
options.c_cflag |= CS8;
break;
default:
fprintf(stderr“Unsupported data size\n“); return (FALSE);
}
//设置校验类型
switch (parity)
{
case ‘n‘:
case ‘N‘:
options.c_cflag &= ~PARENB; /* Clear parity enable */
options.c_iflag &= ~INPCK; /* Enable parity checking */
break;
case ‘o‘:
case ‘O‘:
options.c_cflag |= (PARODD | PARENB); /* 设置为奇效验*/
options.c_iflag |= INPCK; /* Disnable parity checking */
break;
case ‘e‘:
case ‘E‘:
options.c_cflag |= PARENB; /* Enable parity */
options.c_cflag &= ~PARODD; /* 转换为偶效验*/
options.c_iflag |= INPCK; /* Disnable parity checking */
break;
case ‘S‘:
case ‘s‘: /*as no parity*/
options.c_cflag &= ~PARENB;
options.c_cflag &= ~CSTOPB;break;
default:
fprintf(stderr“Unsupported parity\n“);
return (FALSE);
}
//设置停止位
switch (stopbits)
{
case 1:
options.c_cflag &= ~CSTOPB;
break;
case 2:
options.c_cflag |= CSTOPB;
break;
default:
fprintf(stderr“Unsupported stop
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 5907 2010-02-25 00:05 uart.c
----------- --------- ---------- ----- ----
5907 1
相关资源
- 串口通信解决数据乱码和数据丢失
- CUDA 9.1+cuDNN v7 for Ubuntu 16.04
- 基于verilog的串口实现
- Linux 下实现的聊天系统,TCP实现
- linux0.12源码+linux源码剖析0.12PDF+linux源
- Linux增加字符设备驱动实验
- 通过串口控制步进电机
- linux tcp udp 调试工具
- linux 下c实现简单的网络嗅探器
- rm.bat 在win下模拟linux rm命令的bat文件
- 一个完整的串口协议 Verilog语言编写
- Linux下串口读写例程
- stm8 IO口模拟串口程序
- 《嵌入式Linux应用程序开发标准教程》
- E4A 蓝牙串口LED控制
- 串口监听.rar
- linux的arpSpoof源代码加编译好的程序
- 基于VHDL的FPGA串口通信
- linux和win32下通用的互斥锁Mutex封装
- 在Linux下添加系统调用
- 8250串口编程
- 自制串口隔离器原理图
- 串口通信编程大全.pdf
- ARM&linux嵌入式系统教程每章答案-马忠
- Vsftp2.3.4 for linux
- intel_parallel_studio_xe_2013_update2_intel64_
- 蓝牙(Bluetooth)设备查找、蓝牙服务
- 最新 socks5-v1.0r11.tar.gz linux代理配置源
- linux ftp服务器安装包vsftpd-1.1.3-8.i386
- Linux常用Shell脚本珍藏
评论
共有 条评论