该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
//žÃ³ÌÐòÊÇÒ»žöÄ£·Â²ÉŒ¯µãµÄ³ÌÐò£¬ÇãÌýŒ¯É¢Æ÷·¢ÀŽµÄµØÖ·ÖžÁÈç¹ûÊÇ×ÔŒºµÄµØÖ·£¬Ôò·¢ËÍÊýŸÝ£¬·ñÔòºöÂÔÖžÁî¡£
#include
#include
#include
#include
#include
#include
#include
#include
#include
#define BAUDRATE B115200
//#define MyAddr 1
#define MODEMDEVICE "/dev/ttyS0"
#define _POSIX_SOURCE 1 /*POSIX compliant source POSIXϵͳŒæÈÝ*/
#define FALSE 0
#define TRUE 1;
volatile int SENT=FALSE;
int fd;
void openserial()
{
struct termios oldtio;
fd = open(MODEMDEVICE, O_RDWR | O_NOCTTY);
if (fd <0) {perror(MODEMDEVICE); exit(-1); }
tcgetattr(fd,&oldtio);
oldtio.c_cflag|=(CLOCAL|CREAD);
oldtio.c_iflag = IGNPAR ; /*ºöÂÔÆæŌУŒìÐòÁÐ*/
oldtio.c_oflag=0;
oldtio.c_cc[VTIME] = 0; /* inter-character timer unused */
oldtio.c_cc[VMIN] = 5; /* blocking read until 5 character arrives */
cfmakeraw(&oldtio);
cfsetispeed(&oldtio,B115200); /*²šÌØÂÊÉèÖÃΪ9600bps*/
cfsetospeed(&oldtio,B115200);
tcsetattr(fd,TCSANOW,&oldtio);
}
void rd()
{
int n;//qaddr,Myaddr;
char buf[50];
n=read(fd,buf,sizeof(buf));//reading sent token
printf(":%s:%d\n",buf,n);
//qaddr=ord(buf[0]);
//Myaddr=ord("1");
if (buf[0]=='I')
{SENT=TRUE;}
}
void wt()
{
int ret1, n;
char buf[10],buf1[]="this is return from clinet";//eading buff
ret1=write(fd,buf1,sizeof(buf1));
printf(":%s:%d\n",buf1,ret1);
}
main()
{
openserial();
rd();
sleep(2);
if (SENT)
{
wt();
}
else
{
write(fd,"wrong addr",10);
printf("it is not my addr:17\n");
}
close(fd);
}