网上下的wince下的串口控件,只能输出不能接收!在线等!
下面是程序源码,计算机发送数据,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;
}
Comstat是个什么样的结构?ComStat.cbInQue 这个值是怎么获得的?你贴的这段代码,别人看不明白啊。
我前段时间刚好作了一个串口程序,不知道你用的是那个硬件平台。
最直接的方法,把if (ComStat.cbInQue > 0)去掉,在试试看
全国第一家虚拟主机:支持伪静态.有利于提高排名!!!
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
我用的wince平台,c#编程语言,你的程序没有问题吗?
我用的是wince的平台,C sharp 编程语言,这个问题困扰一个星期了,物理接口肯定没有问题,因为wince 的eboot启动的DEBUG信息和我输入的控制命令都能够成功响应,就是我的程序不行!而且我的程序能够成功发送到pc机,问题好奇怪!关键我刚刚开始学习wince(4个月)和wince平台下的应用程序开发,C sharp 也是第一次接触,跟c++不一样,好多还不熟悉,如果用C++还好说,很多代码都可以用。希望能和你交流!
去掉if (ComStat.cbInQue > 0)没有用,关键好像是readfile()程序没有反应
我用的是pxa255,程序在x86平台下运行正确!
我知道你是什么问题!可不是你的问题,呵呵,硬件的感应不到串口发送来的数据信息
我也遇到了同样的问题;WINCE串口只能发送数据,不能接收数据;我用的是 “三星2410” ARM9 的板子;
不知道 LZ 的问题解决了吗?
你可以看看ComStat这个对象里的数据是在什么地方获取的,可能是没有正确获取
一般都是流控制设置
ce串口驱动的流控制设置为 0 就可以
这是我写的就能读。我觉得是你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;
}
}
}
}
}