|
最近编一个串口通信的程序,运行程序后在minicom中没有显示任何的传输数据迹象。程序的功能是当向下位机发送一个字符“0x0d”后,下位机自动回复,当缓存区再次接收到“0x0d”后在终端显示,哪位师兄师姐能指点我这个小师弟一下。串口参数是:比特率19200,数据位8,奇偶校验位无,无数据流,停止位1.程序如下:
#include
#include
#include
#include
#include
#include
#include
#include
#define DEVICE_TTYS "/dev/ttyS0"
void init_ttyS(int fd)
{
struct termios options;
bzero(&options,sizeof(options));
cfsetispeed(&options,B19200);
cfsetospeed(&options,B19200);
options.c_cflag |=(-CRTSCTS|CS8|CLOCAL|CREAD);
options.c_iflag=IGNPAR;
tcflush(fd,TCIFLUSH);
tcsetattr(fd,TCSANOW,&options);
}
void Link_test(void)
{
int fd;
int a=0;
int nread;
char c=13;
char buff1[1];
buff1[0]=c;
char buff[512];
write(fd,buff1,1);
do{nread=read(fd,buff,512);}
while(buff[nread+1]!=c);
printf("\n%s",buff);
}
int main(void)
{
int fd;
fd=open(DEVICE_TTYS,O_RDWR);
if(fd==-1)
{
printf("open device %s error\n",DEVICE_TTYS);
}
else
{
init_ttyS(fd);
Link_test();
}
|
|