#include <stdio.h> /*标准输入输出定义*/
#include <stdlib.h> /*标准函数库定义*/
#include <unistd.h> /*Unix 标准函数定义*/
#include <sys/types.h> /*系统类型定义*/
#include <sys/stat.h> /*系统状态定义*/
#include <fcntl.h> /*文件控制定义*/
#include <termios.h> /*PPSIX 终端控制定义*/
#include <errno.h> /*错误号定义*/
int main(void)
{
int fd;
struct termios option;
int status = 0;
char buff[512];//这样定义buff的内容是随机数
int num = 0;
fd = open("/dev/ttyUSB0", O_RDWR | O_NOCTTY );
if (-1 == fd)
{
perror("can not open serial port");
}
tcgetattr(fd, &option);
option.c_cflag |= CLOCAL; //保证程序不会成为端的占有者
option.c_cflag |= CREAD; //使端口能读取输入的数据
cfsetispeed(&option, B2400);
cfsetospeed(&option, B2400);
option.c_cflag &= ~CSIZE;
option.c_cflag |= CS8;
option.c_cflag |= PARENB;
//option.c_cflag &= ~PARODD;
option.c_cflag |= PARODD; //奇校验
option.c_cflag |= CMSPAR; //标记校验位
option.c_cflag &= ~CSTOPB; //一位停止位
option.c_iflag |= INPCK; /* Disnable parity checking */
// 一下是添加测试
///
option.c_lflag &= ~(ICANON | ECHO | ECHOE | ISIG);
option.c_oflag &= ~OPOST;
option.c_oflag &= ~(ONLCR | OCRNL); //添加的
option.c_iflag &= ~(ICRNL | INLCR);
option.c_iflag &= ~(IXON | IXOFF | IXANY); //添加的
///
option.c_cc[VTIME] = 0; //设置超时
option.c_cc[VMIN] = 1; //设置最小字节数
tcflush(fd, TCIFLUSH);
//=================================================
//SPACE
option.c_cflag |= PARENB | CS8 | CMSPAR |PARODD;
//================================================
status = tcsetattr(fd, TCSANOW, &option);
if (-1 == status)
{
perror("tcsetattr false");
}
while(1)
{
write(fd, "\x00", sizeof("\x02"));
usleep(50000);
}
num = read(fd, buff, 512);
printf("%d\n", num);
printf("%d\n", errno);
printf("%x", buff[0]);//注意这里,如果读取不成功,将是随机值。
}
Linux串口编程-5-space校验2
最新推荐文章于 2022-12-25 18:48:57 发布