LINUX_RS232/RS485通信
#include <stdio.h>
#include <pthread.h>
#include “RS485.h”
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <fcntl.h>
#include <unistd.h>
#include <termios.h>
#include <linux/serial.h>
#include <sys/ioctl.h>
#include <sys/utsname.h>
#include <stdint.h>
/**
- @brief: set the properties of serial port
- @Param: fd: file descriptor
- @Param: nSpeed: Baud Rate
- @Param: nBits: character size
- @Param: nEvent: parity of serial port
- @Param: nStop: stop bits
*/
typedef enum {DISABLE = 0, ENABLE} RS485_ENABLE_t;
int Set_Uart(int fd, int nSpeed, int nBits, char nEvent, int nStop)
{
struct termios newtio, oldtio;
memset(&oldtio, 0, sizeof(oldtio));
/* save the old serial port configuration */
if(tcgetattr(fd, &oldtio) != 0) {
perror("set_port/tcgetattr");
return -1;
}
memset(&newtio, 0, sizeof(newtio));
/* ignore modem control lines and enable receiver */
newtio.c_cflag = newtio.c_cflag |= CLOCAL | CREAD;// 开启读取模式和本地连接模式
newtio.c_cflag &= ~CSIZE;// 数据位掩码
/* set character size */
switch (nBits) {
case 8:
newtio.c_cflag |= CS8;// 8个数据位
break;
case 7:
newtio.c_cflag |= CS7;
break;
case 6:
newtio.c_cflag |= CS6;
break;
case 5:
newtio.c_cflag |= CS5;
break;
default:
newtio.c_cflag |= CS8;
break;
}
/* set the parity */
switc