网上下的wince下的串口控件,只能输出不能接收!在线等!

chenjian3   2007-8-2 09:28 楼主
下面是程序源码,计算机发送数据,wince根本就接受不到数据,而wince科研发送数据,计算机能够正常接收!调试发现if (ComStat.cbInQue > 0) 这个条件总是不满足,所以根本没有进行readfile操作,希望大家能够帮助!还有一点是,读串口操作是在主程序中按照启动线程来操作的!
if (ComStat.cbInQue > 0)
                        {
                                OVERLAPPED ovlCommPort = new OVERLAPPED();
                                int BytesRead = 0;
                                ReadFile(hComm, commRead, NumBytes, ref BytesRead, ref ovlCommPort);
                                //ReadFile(hComm, commRead, NumBytes, ref BytesRead,0);
                                return BytesRead;
                        }
                        else
                        {
                                //MessageBox.Show("Buff中没有数据");
                                return 0;
                        }

回复评论 (15)

Comstat是个什么样的结构?ComStat.cbInQue 这个值是怎么获得的?你贴的这段代码,别人看不明白啊。
点赞  2007-8-2 10:34
我前段时间刚好作了一个串口程序,不知道你用的是那个硬件平台。
点赞  2007-8-3 09:17
最直接的方法,把if (ComStat.cbInQue > 0)去掉,在试试看
点赞  2007-8-3 09:22
全国第一家虚拟主机:支持伪静态.有利于提高排名!!!

15G全能空间年付500元/月付70元 可免费试用
5GB 独立WEB空间、5GB 企业邮箱空间、5GB MSSQL数据库
IIS连接数据 500 个、500GB/月流量、共享日志文件空间

企业邮箱功能
赠送5GB 超大企业邮箱,500个Email企业邮箱用户
自动回复、自动转发、POP3、SMTP收发信、SMTP发信认证
邮件过滤、邮件拒收、邮件夹管理、邮件域管理、定制邮件数

数据库功能
支持5GB MSSQL数据库空间,5个用户数据库、Access

主机功能支持
采用安全稳定的Win2003 .net2.0 架构
支持ASP、PHP、ASP.NET、PERL等脚本、支持自定义CGI
全面支持.net2.0版本,独立的Application应用池,
支持SSI(Shtml),支持FrontPage扩展
可免费自行绑定5个域名、500个解析、500个子域名

详情咨询021-51695858   QQ:678500
官方网站  www.abcnic.com
ADD:上海市浦东新区金桥浙桥路289号建银大厦A座703-704
点赞  2007-8-3 11:45
我用的wince平台,c#编程语言,你的程序没有问题吗?
点赞  2007-8-4 20:20
我用的是wince的平台,C sharp 编程语言,这个问题困扰一个星期了,物理接口肯定没有问题,因为wince 的eboot启动的DEBUG信息和我输入的控制命令都能够成功响应,就是我的程序不行!而且我的程序能够成功发送到pc机,问题好奇怪!关键我刚刚开始学习wince(4个月)和wince平台下的应用程序开发,C sharp 也是第一次接触,跟c++不一样,好多还不熟悉,如果用C++还好说,很多代码都可以用。希望能和你交流!
去掉if (ComStat.cbInQue > 0)没有用,关键好像是readfile()程序没有反应
点赞  2007-8-4 20:27
我问你是用哪个硬件平台,比如x86、arm9等
点赞  2007-8-13 15:56
我用的是pxa255,程序在x86平台下运行正确!
点赞  2007-8-16 21:26
我知道你是什么问题!可不是你的问题,呵呵,硬件的感应不到串口发送来的数据信息
点赞  2007-9-28 10:40


我也遇到了同样的问题;WINCE串口只能发送数据,不能接收数据;我用的是 “三星2410” ARM9 的板子;

不知道 LZ 的问题解决了吗?
点赞  2007-9-29 21:08
你可以看看ComStat这个对象里的数据是在什么地方获取的,可能是没有正确获取
点赞  2007-11-14 08:49
一般都是流控制设置
ce串口驱动的流控制设置为 0 就可以
点赞  2007-11-24 14:40
这是我写的就能读。我觉得是你OVERLAPPED   ovlCommPort   =   new   OVERLAPPED();   这里的问题
        DWORD dwCommEvent;
        DWORD dwRead;
        CString str;

        DWORD dwReadErrors;
        COMSTAT        cmState;
        DWORD willReadLen;
        BYTE * readBuf = NULL;//读取的字节

        //有哪些串口需要监视
        while(hCom != INVALID_HANDLE_VALUE)
        {               
                if(SetCommMask(hCom, EV_RXCHAR))
                {
                        if(WaitCommEvent(hCom,&dwCommEvent,NULL))
                        {
                                if (dwCommEvent & EV_RXCHAR)
                                {
                                        ClearCommError(hCom,&dwReadErrors,&cmState);
                                        willReadLen = cmState.cbInQue ;
                                        if (willReadLen <= 0)
                                        {
                                                //MessageBox(L"2");
                                                break;
                                        }
                                        readBuf = new BYTE[willReadLen];
                                        ReadFile(hCom, readBuf, willReadLen, &dwRead,0);
                                        if (dwRead>0)
                                        {
                                                m_editShow = readBuf;
                                                UpdateData(false);
                                                break;
                                        }
                                }
                        }
                }
        }
点赞  2007-11-25 16:07
一个小问题。
点赞  2007-11-25 22:44
想知道lz的问题是怎么解决的 我遇到同样的问题
点赞  2008-5-13 16:03
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 京公网安备 11010802033920号
    写回复