找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 1856|回复: 1
打印 上一主题 下一主题
收起左侧

哈哈问题解决

[复制链接]
跳转到指定楼层
楼主
ID:82781 发表于 2015-6-13 01:51 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
昨天搞了一下午的程序,一头雾水,没点思路,今天在软件孙大神的帮助下终于解决这个问题,
是这样的嵌入式设备要和手机做链接,但是为了方便所以把固定IP改成DHCP方式,然后流程是这样的,第一步嵌入式设备上点想DHCP服务器获取IP地址,然后得到IP地址后启动UDP广播,向这个号段内的指定端口广播一帧数据,手机也在这个网段内,所以收到回复,我独立开辟一个UDP接受线程接受来自手机端的数据,一旦受到数据立马开始向这个IP的指定端口做TCP链接,完事之后线程挂起开始运行TCP客户端线程,如果在此时手机主动关闭TCP链接,那么嵌入式设备要可以重新发起这个过程,昨天的现象是,A,第一次可以联机成功,一旦TCP释放之后无法联接,UDP所有的广播都是正常的,然后用网络调试助手流程都通,没有一点问题,手机软件方面也是所有问题都通,一旦和嵌入式设备链接就不行,原来是这样的:

只说主要的,其他线程不予考虑。。
系统初始化的时候创建了2个主线程,一个用来初始化网口和上层栈,一个用来接收UDP数据,即A线程B线程,A线程优先级最搞,B线程次之, 然后A线程初始化完毕之后启动DHCP,得到IP地址就开始向此号段尽享广播,就是在这个广播中出错了,在广播完毕之后我进行了线程睡眠,正事这个线程睡眠使得系统挂起这个线程,但是此时这个UDP端口没有注销,然后转而执行B线程,创建好了UDP另一个端口,就在此时A线程睡眠完毕,毫不犹豫的抢了B线程的CPU时间片,导致B线程还没有完全的执行完毕,就被抢走了,如果此时来一个UDP包从手机发来就会导致UDP线程收不到,因为此时CPU正在A线程处执行关闭端口程序呢,UDP收不到就导致TCP无法启动,那么为什么用网络调试助手可以呢?因为网络调试助手是手动的,非常慢,等你发的时候A线程早已经结束了关闭端口命令,而且B线程也得到了足够的时间执行也堵塞在一个邮箱上,所以再来UDP数据是可以收到的,反之,手机回复速度小于线程睡眠时间,导致A线程抢占B线程,以至于有此事,去掉这个县城睡眠,等待A线程老老实实执行完毕,就好了!哈哈!

sendto(sock, send_data, strlen(send_data), 0,
(struct sockaddr *)&server_addr, sizeof(struct
sockaddr));
thread_delay(50);
close(sock);

此乃罪魁祸首!  实在是忽略了呀!实时系统!一点想不到就不行啊!坑爹!

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:82781 发表于 2015-6-13 01:52 | 只看该作者
    今天是最后一个工作日了。对ADC进行调整,采样率始终达不到300KHZ,所有的流程都对,输入时钟是22MHZ2分频也就是11MHZ,那么采样率就是11M/27=400KHZ/秒足够了,但是通过示波器观察到的IO翻转没达到预定的要求,芯片不咋地,手册含糊其辞,莫明奇妙的。有待研究。。
突然有些感怀, 职业生涯很短暂只有短短的一年多时间的嵌入式开发,整理了从工作到目前的所有的程序代码,写了每段程序的简介,归档整理交接给同事,一年半前我还是一名电工,电工过度到嵌入式程序开发我花了整整4年业余时间去准备,终于如愿以偿的走上了开发岗位,在这一年半中几乎比我这4年学习的东西的总和还要多,我第一次的真正意义上搞明白了多处理机的机制和实现,真正意义的把软件和硬件联系起来,更加熟悉了TCP/IP协议,搞懂了神马叫做软核和硬核,使用了至少3款操作系统编程,后来才发现原来以前觉得那么难,其实也不过如此,天下大同,搞了一年的433通讯距离的问题原来不是我程序写的问题而是硬件的天线不匹配造成了,所有的指责都是没有道理的,我没错,程序是正确的,更加深刻的明白了算法和数据结构是多么多么的重要,至于驱动程序什么的还是停留在一年前的水平,也就是这些年加深了自己的软件层面的东西,真真意义的做了几片PCB,知道了流程和原理,虽然做的不好,但是总是有东西出来了,不虚此行,硬件远远比想象的要广博。好多好多.....
过些日子就要离开了,离开了一起合作的同事,一起傻逼的日子,有点小伤感,也许真的爱好不能当成职业,也许。。。。
不过认识了一大堆的朋友,还是很庆幸的,一个终结就是另一个的开始,就是这样,好还是坏谁也不知道。
其实我早已做好准备,收入锐减,地位不保,环境不优越,规范严苛,可是老王你难道忘记你曾经谈过的棉花了吗?
未来的日子,嵌入式软件学习还不能放,即使不干也要继续走下去,那是我的梦,还有好多未搞明白的知识。。。加油吧!
下午和小弟们开玩笑说:以前我总是号令你们,明天终于我成了别人的小弟哈哈!
加油吧!没什么可说的,
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表