我在写一个判断短信自动回复的程序,
void* gprs_read(void * data)
{
int i=0;
char c;
char buf[1024];
printf("\nread modem\n");
while (STOP==FALSE) {
tty_read(&c,1);
printf("%c",c);
}
printf("exit from reading modem\n");
return NULL;
}
通过这个程序一直读串口的数据按字符读取数据!!!!
可是发现这样无法判断什么时候获得数据????什么时候是在等待!!!我真的不懂这个是怎么回事呢,希望大家给予解答!!怎么判断接受字符串暂告结束???
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(5)
你这样的写法,有点 。。。 咳咳。。。
if (NULL != select(fd,fset,......))
{
len = read_tty(fd,buffer,len);
......
//组合上次的包
//判读是否是一个完整包
}
回复 2# fanronghua
怎么判断是否是一个完整的包呢?
结束符是? '\0’ ?
我读的是一个字符,估计没什么影响,
我自己想了很久不知道这个怎么样?大家看看
void* gprs_read(void * data)
{
int i=0;
char c;
char buf[1024];
printf("\nread modem\n");
while (STOP==FALSE) {
label: tty_read(&c,1);
printf("%c",c);
buf[i]=c;
if(buf[i]!='\0')
goto label;
else
//开始执行分析过程
。。。。;
}
printf("exit from reading modem\n");
return NULL;
}
我按照上面的方法做了,可是没有得到想要的结果。!!!!
这个就是接口问题吧!!怎么才能判断已经读取完毕呢?
判断有没有读完,在串口协议中,只有两个办法,超时和协议控制。