6506|13

84

帖子

0

TA的资源

一粒金砂(初级)

楼主
 

wince 程序串口通信问题 请帮忙!! [复制链接]

我在WINCE开发一个串口 通信程序.

其主要代码(读串口的代码) 如下:(在单独一个线程进行读操作)


        //清空串口
        PurgeComm(m_hComm, PURGE_RXCLEAR|PURGE_TXCLEAR);

        // 清空缓冲,并检查串口是否打开。
        ASSERT(m_hComm !=INVALID_HANDLE_VALUE);

        SetCommMask (m_hComm, EV_RXCHAR|EV_CTS|EV_DSR);

        if (WaitCommEvent(m_hComm,&evtMask,0))
        {       
                SetCommMask (m_hComm, EV_RXCHAR|EV_CTS|EV_DSR );
                //表示串口收到字符               
                if (evtMask & EV_RXCHAR)
                {
                         ClearCommError(m_hComm,&dwReadErrors,&cmState);
                         willReadLen = cmState.cbInQue;

                         bReadData = ReadFile(m_hComm, prrr, willReadLen, &actualReadLen,0);


                }
        }


问题是: 当我用PC机给它的串口 发数据,进行测试. 当我每次发一个字节时候,WINCE程序可以正确读到,但是当我每次发多个字节的时候,WINCE程序就会死机,请问这是为什么呢;


跟超时设置有关吗?

我是这么设置的
        CommTimeOuts.ReadIntervalTimeout = 10;  
        CommTimeOuts.ReadTotalTimeoutMultiplier = 10;  
        CommTimeOuts.ReadTotalTimeoutConstant = 500;  




此帖出自WindowsCE论坛

最新回复

你最好在读数据时设定读取一定长度,然后在判断是否读完,如果没读完,继续读,如果串口上的数据长度没有达到设定的长度,那么超时控制起作用,自动结束串口读取。  详情 回复 发表于 2008-8-22 11:24
点赞 关注
 

回复
举报

77

帖子

0

TA的资源

一粒金砂(初级)

沙发
 
CommTimeOuts.ReadTotalTimeoutMultiplier =10是不是太小了呢?你改大点试试看
此帖出自WindowsCE论坛
 
 
 

回复

54

帖子

0

TA的资源

一粒金砂(初级)

板凳
 
请问你的问题解决了吗?

我遇到的问题与你的一样,三星2410的板子;
pc上每次发送一个字节到arm板上,板子可以正常接收,
PC每次连续发送2个字节时,板子可以接收第一个字节,第二个字节为错误数据;
PC每次连续发送3个~5个字节时,ARM板假死机,然后如果再发送一个字节,板子恢复;
PC每次连续发送6个字节时,ARM板不死机,但数据不正确。

请高手解答???????????? 急
此帖出自WindowsCE论坛
 
 
 

回复

78

帖子

0

TA的资源

一粒金砂(初级)

4
 
检查一下,通讯双方的配置参数是否配置一样!
此帖出自WindowsCE论坛
 
 
 

回复

66

帖子

0

TA的资源

一粒金砂(初级)

5
 
可能与编码(ANSI与Unicode)相关。
此帖出自WindowsCE论坛
 
 
 

回复

67

帖子

0

TA的资源

一粒金砂(初级)

6
 
串口的错误一般都是两边参数设置不一造成的。

我以前也遇到过类似问题,就是改设置弄好的。不过不是这个板子。
此帖出自WindowsCE论坛
 
 
 

回复

77

帖子

0

TA的资源

一粒金砂(初级)

7
 
我怀疑是ARM板串口驱动的问题,在PC端连续发送数据的时候只要中间加一个延时就没有问题。

如果是两边的参数不一致造成,应该只是ARM板上的应用程序假死,ARM的操作系统不会假死,
而现在只要在PC端连续发送3个字节,则WINCE操作系统会假死机。

我试验过:当在EVC中只用CreateFile()函数打开串口,而不进行其它任何操作时,都会发生以上情况,
          请高手赐教原因。
           
此帖出自WindowsCE论坛
 
 
 

回复

77

帖子

0

TA的资源

一粒金砂(初级)

8
 
补充:我用的是杭州立宇泰的Sys2410开发板。
此帖出自WindowsCE论坛
 
 
 

回复

78

帖子

0

TA的资源

一粒金砂(初级)

9
 
我这个板子的三个串口都可以在CE下用EVC正常编程收发,就是有以上问题,如果谁能帮忙解决,愿意提供3串口驱动答谢,本人没有积分。
此帖出自WindowsCE论坛
 
 
 

回复

63

帖子

0

TA的资源

一粒金砂(初级)

10
 
你这么点代码也看不出什么猫腻来, 我觉的你还是去网上下一个串口代码来看看是否存在如此问题, 例如付林林的串口程序代码.
此帖出自WindowsCE论坛
 
 
 

回复

72

帖子

0

TA的资源

一粒金砂(初级)

11
 
我有一个自己写的串口调试程序,不过是s2440+wince5.0的,已经在我自己的板子上测试过,可以正常收发,如果有需要可以给我发邮件.zhangcy@kingtec.net   
你可以拿这个测试程序测试一下,如果不能收发,那说明你的串口驱动,或者硬件有问题.
此帖出自WindowsCE论坛
 
 
 

回复

84

帖子

0

TA的资源

一粒金砂(初级)

12
 
各位兄弟,我个人认为是 串口驱动问题;


我在别的硬件环境下,开发串口程序已经成功运行了;


结帖!
此帖出自WindowsCE论坛
 
 
 

回复

71

帖子

0

TA的资源

一粒金砂(初级)

13
 
如果排除了串口通讯双发的设置问题,可能是流控的问题。
我也有类似的问题,但是我可不是你说的几个字节的数据就死程序,我的是几K的数据,有点头绪记得给答案。
此帖出自WindowsCE论坛
 
 
 

回复

81

帖子

0

TA的资源

一粒金砂(初级)

14
 
你最好在读数据时设定读取一定长度,然后在判断是否读完,如果没读完,继续读,如果串口上的数据长度没有达到设定的长度,那么超时控制起作用,自动结束串口读取。
此帖出自WindowsCE论坛
 
 
 

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

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/9 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表