#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<sys/types.h>
#include<sys/stat.h>
#include<fcntl.h>
#include<unistd.h>
#include<termios.h>
#include<string.h>
#include<ctype.h>
#include <unistd.h>
#define FRAMEHEADER_FLAG 0XA5
#define FRAMEND_FLAG 0X5A
#define READ_RET_FLAG 0XAF
#define READ_FLAG 0X0A
#define READ_LOCALSYSTEM_PARM_FLAG 0X00
#define READ_LINUX_VER 0X01
#define READ_LINUX_TIME 0X02
#define READ_LINUX_IP 0X03
#define READ_LINUX_MAC 0X04
#define READ_LINUX_DNS 0X05
unsigned int TaskList; //任务列表
#define TASK_START 0X01//BIT0
#define R_LINUX_VER_TASK 0X02//BIT1
#define R_LINUX_TIME_TASK 0X04//BIT2
#define R_LINUX_IP_TASK 0X08//BIT3
#define R_LINUX_MAC_TASK 0X10//BIT4
#define R_LINUX_DNS_TASK 0X20//BIT5
unsigned int TaskErrorDeal;//出错任务处理
#define DNS_FILE "/etc/resolv.conf"
char ReadBuf[80] = {0};
char WriteBuf[50] = {0};
int uart_fd;
char DatNum;
static char* getDNSInfo(char *maches);
void DecodeTask(void);
int set_opt(int fd,int nSpeed, int nBits, char nEvent, int nStop);
char CheckOutDat(char *checkDat,unsigned int n);
char comp_dat(char *SourDat,char Num);
void ReadUart(void);
#define Debug
/*=================================================================
函数功能描述;实现对串口设备的设置
参数描述: fd:需要设置的串口的文件描述符
nSpeed:设置波特率
nBits:设置数据位
nEvent:设置校验位
nStop:停止位
===================================================================*/
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;//
//设置数据位
switch (nBits)
{
case 7:
newtio.c_cflag |= CS7;
break;
case 8:
newtio.c_cflag |= CS8;
break;
default:
break;
}
//设置校验位
switch (nEvent )
{
case 'O':
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;