发表于:2004-07-28 10:11:00
楼主
1. 一个完整的帧处理过程
组帧
组帧之后可能有不同的返回值
在发送帧之前作处理
标准发送帧
非标准发送帧
发送数据出错的返回值
在发送帧之后作处理
接收数据前的处理
接收同步数据的处理
等待的数据长度为0的返回值
在有限次接收过程中等待不到同步的返回值
接收数据头的处理
等待的数据长度为0的返回值
等待的数据不足长度的返回值
对数据头的处理
数据头的处理不正确的返回值
接收数据区的处理
等待的数据长度为0的返回值
等待的数据不足长度的返回值
等待的数据长度超出的返回值
接收数据后的处理
对接收数据作处理
数据的效验不正确的返回值
对接收的数据作处理
数据的处理结束后的返回值
返回值:
发送数据出错的返回值 -1
等待的同步数据长度为0 -2
有限次接收中不能同步的处理 -3
等待的数据头长度为0 -4
等待的数据头不足长度 -5
数据头不正确 -6
等待的数据区长度为0 -7
等待的数据区不足长度 -8
等待的数据区长度超出 -9
数据的效验不正确 -10
组帧之后可能作不同的跳转 0-99
数据的处理结束后的正常返回 100-199
2. 帧处理的多个变种
2.1. 只有接收帧,没有发送帧
2.2. 接收帧没有同步数据处理
2.3. 接收帧没有数据头的处理
3. 帧处理常见错误
3.1. 对出错的处理不够全面(帧处理的每一个步骤都可能出错)
3.2. 对异常情况的处理占用太多的CPU时间
3.3. 等待串口数据返回的时间过长
3.4. 等待时间设置不合理
3.5. 对同一个串口中存在多个设备的处理不周全
3.6. 对串口缓冲区中可能存在数据的处理不周全
3.7. 数据的效验不周全
3.8. 多设备的等待延时处理不周全
3.9. 对不合理数据的处理不周全
4. 帧间处理常见错误
4.1. 读写帧的配合关系未处理好
4.2. 对帧处理的时间过长,占用CPU时间太多
4.3. 装置状态的处理不周全
4.4. 对读取成功后的跳转处理不周全
4.5. 对读取失败的跳转处理不周全
4.6. 写命令需要读帧命令,处理时间太多
4.7. 对帧命令的组合效率太低
4.8. 改变接口数据数组越界
4.9. 不完全按接口要求改动返回数据
4.10. 对设备通道的理解不够,未能按要求实现所有功能
4.11. 对折分命令的处理不全面
5. 编写良好驱动程序的注意事项
5.1. 热爱驱动编程,不以完成驱动任务作为目标
5.2. 必须认识到,通讯的每一个步骤都可能出错,并通过编程对每一种可能的出错进行处理
5.3. 仔细对照以上可能出错的列表,判断是否已考虑周全
5.4. 命令返回参数中能将以上帧内处理和帧间处理的可能情况区分
5.5. 必须考虑如何尽量少的占用CPU时间,要将它作为一个重点进行思考
5.6. 驱动编写完毕,必须形成能满足以上所有要求的用例来测试驱动,用例能够重复利用,并形成标准
5.7. 对每一种情况,都要考虑长期拷机实验的用例,要检查是否有内存丢失的情况
5.8. 针对每个常见PLC和设备,都按以上标准严格考核
祝贺MCGS近期推出新功能“脚本驱动程序”,将一篇关于串口通讯的演讲PPT在此发表,希望与朋友多交流。
关于脚本驱动的话题,请见:http://www.gongkong.com/tech/detail.asp?id=247936
有关界面,请见:http://www.mcgs.com.cn/active/disp.asp?id=103