打印

不错的**!!!

[复制链接]
楼主: jxyhome
手机看帖
扫描二维码
随时随地手机跟帖
41
dudongdao| | 2007-8-31 17:04 | 只看该作者 回帖奖励 |倒序浏览

我觉得不开缓冲处理串口的很少~~

   大家写串口的时候都是怎么搞的,开缓冲的多还是不开的多,还是刚开始不开,以后成为高手后就开了.

使用特权

评论回复
42
jxyhome|  楼主 | 2007-8-31 17:28 | 只看该作者

呵呵

是不开缓冲的少,我只是探讨下一个特殊情况下的处理以及如何优化程序.我不是什么高手.

使用特权

评论回复
43
jxyhome|  楼主 | 2007-8-31 17:31 | 只看该作者

呵呵

因为能够多仔细考虑一些东西,在平台相互移植时候就会避免一些问题:)

使用特权

评论回复
44
dudongdao| | 2007-8-31 17:32 | 只看该作者

在你的状态机基础上加个缓冲

   你的状态机是很高明的

使用特权

评论回复
45
jxyhome|  楼主 | 2007-8-31 17:45 | 只看该作者

其实我的里面也用到了缓冲

中间数据解析的时候就用了结构体做缓冲存储数据.我见到有个网友在我的基础上改了下状态机用于他的项目的一个文档,他针对他的应用自己设置了下状态的切换我觉得挺好的.我这个只是提供一个架构,具体应用大家仔细修改下就可以了.另外我绝对对于资源比较缺乏的ARM芯片比如LPC的就可以采用我的方法.

使用特权

评论回复
46
ocon| | 2007-8-31 21:00 | 只看该作者

适用于简单的系统,我刚学单片机的时候也是这样做的,

说白了就是把数据处理放在中断里运行,这样不利于程序移植和维护,如果不是迫不得已不要这样干。

使用特权

评论回复
47
sky134579| | 2007-8-31 22:43 | 只看该作者

楼主不错!是个高手!

受教了

其实只要我们在处理手里的案子,多注意下,像楼主说说的状态机之类的处理手
法已经应用很普遍了,在台湾过来的程式中特普遍

关键融会贯通,自己也能熟练的用这种处理方式,这个是难点

使用特权

评论回复
48
jxyhome|  楼主 | 2007-8-31 23:02 | 只看该作者

楼上过奖了

其实我对TCP/IP理解在串口通讯之前,因为出现了一些问题才去思考一些解决的方法。过阵子贴个TCP/IP协议中实现上层的HTTP协议中的状态机,里面对于状态的校验和重发就做的很好。还是一句老话:“由俭入奢易,由奢入俭难”,很多一些从ARM上跑的好的程序到其他平台出问题都可能出这样那样的问题,这样一个好的架构是很有必要的。当然不是说我这个东西有什么高明的地方,只是平时写code的时候多想想一些问题可能会有意想不到的收获!

使用特权

评论回复
49
Autine| | 2007-9-1 08:51 | 只看该作者

这样写的话 得保证发来的第二、第三、、、、数不被

这样写的话  得保证发来的第二、第三、、、、等等数不别的器件当成地址 或别的啊

使用特权

评论回复
50
jxyhome|  楼主 | 2007-9-1 10:11 | 只看该作者

回楼上

我在这个坛子另外个帖子里面提到避免这点,比如我将STX和ETX设为HEX,中间的数据帧为ASCII就不避免了……

使用特权

评论回复
51
海天一色| | 2007-9-1 11:23 | 只看该作者

占个位子

使用特权

评论回复
52
海天一色| | 2007-9-1 11:34 | 只看该作者

这个思路可以看the final world里的串口通信的例程

使用特权

评论回复
53
hollly| | 2007-9-2 15:15 | 只看该作者

Ding

跟着大家学习一下 ^_^

使用特权

评论回复
54
lshlin| | 2007-9-3 09:54 | 只看该作者

不错的贴

帮顶

使用特权

评论回复
55
大大山| | 2007-9-3 11:52 | 只看该作者

不错

顶...以后有这样的**多发一下..呵呵

使用特权

评论回复
56
5_0_5| | 2007-9-3 16:03 | 只看该作者

顶了再看

使用特权

评论回复
57
zhiwei| | 2007-9-3 22:44 | 只看该作者

看了

状态机的方式我也常用,应该是比较好的方法,但是我反对把解析等操作放在中断种进行。36楼中断中只接受数据放到FIFO中也许是不错的方法,楼下说while(1)效率低,可能他没有考虑到,确实不能这样傻等,效率太低,可以改进一下,采用轮询,每隔1mS或其他时间查询一下,同时可以计算超时。不过我建议将解析帧头放到接收中断中,用一个缓冲区来放数据,中断中帧头同步之后设定标志并依次接收存储每一个数据,中途有奇偶校验错误或者缓冲区益处则等待超时,主程序轮询并设定超时,超时后关中断,开始解析数据。把命令结构体直接指向缓冲区即可取得所需的数据。
现在的这种常用的通信协议都是帧头同步,帧尾超时来处理,所以我常用上面的方法。不过需要注意避免主程序和中断竞争数据。

使用特权

评论回复
58
hsw_21| | 2007-9-4 09:02 | 只看该作者

搬个板凳过来

使用特权

评论回复
59
dudongdao| | 2007-9-4 16:44 | 只看该作者

同步可以用多机通讯

   采用多机器通讯做同步最好了,无论小系统,还是大系统都统统可以~
采用缓冲方式效率高啊,放在主函数中检测,经过实际应用,效果非常好,不是傻等啊.

使用特权

评论回复
60
hanker510| | 2007-9-5 09:54 | 只看该作者

支持一下

  不懂  将所有的活都放到串口中断中去完成,会不会影响通讯质量 和占用系统资源阿 请教

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则