Linux下串口read失败,请教linux串口问题!read读取时buf里只读取到8的倍数?

该楼层疑似违规已被系统折叠 隐藏此楼查看此楼

//žÃ³ÌÐòÊÇÒ»žöÄ£·Â²ÉŒ¯µãµÄ³ÌÐò£¬ÇãÌýŒ¯É¢Æ÷·¢ÀŽµÄµØÖ·ÖžÁÈç¹ûÊÇ×ÔŒºµÄµØÖ·£¬Ôò·¢ËÍÊýŸÝ£¬·ñÔòºöÂÔÖžÁî¡£

#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);

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值