串口初始化
编程环境linux,运行环境ARM板(友善之臂的);
硬件条件:arm板和一个温湿度传感器,两者通过串口来通信,他们我已经连接好了;
现在要写一个串口通信函数,以前没写过,就是初始化不会写,不知道怎么弄??请各位大侠帮忙,这是我查资料写的代码,但是没反应。。
#include<stdio.h>
#include<stdlib.h>
#include<unistd.h>
#include<sys/types.h>
#include<sys/socket.h>
#include<netinet/in.h>
#include<netinet/ip.h>
#include<string.h>
#include<fcntl.h>
#include<sys/stat.h>
#include<termios.h>
#include<getopt.h>
#define PORT 12345
int main(int argc,char **argv)
{
char buf[1024]={};
int commfd,ttyfd;
struct termios ttyattr;
int OutputHex=0;
int OutputToStdout=0;
int fp=open("/dev/ttySAC3",O_RDWR);
if(fp==-1)
{
perror("open");
return -1;
}
tcgetattr(fp,&ttyattr);
cfsetispeed(&ttyattr,B9600);
cfsetospeed(&ttyattr,B9600);
ttyattr.c_iflag = IGNPAR;
ttyattr.c_cflag = B9600|CS8|CREAD|CLOCAL;
ttyattr.c_cc[VMIN] = 1;
tcflush(fp,TCIOFLUSH);
tcsetattr(fp, TCSANOW, &ttyattr);
memset(&ttyattr,0,sizeof(struct termios));
int arr[]={0x0104,0x0000,0x0002,0x71CB};
int i=0,ret;
for(i=0;i<4;i++){
write(fp,arr+i,2);
}
for(i=0;i<4;i++)
{
ret=read(fp,buf,1);
if(ret<=0){
break;
}
}
printf("%x\n",*buf);
return 0;
}
[解决办法]
按温湿度传感器通信协议写 但温湿度传感器很可能是485通信口