wince 串口接收不到数据

dailihuiopt 2015-06-25 09:01:27
各位麻烦给指点一下,我的串口接收长时间接收之后就接收不到数据了,不知道怎么解决,还望各位帮忙看看!下面是我的接收线程,过几个小时后就接收不到数据了,我的线程接收来自模块的串口数据,模块不停的每隔400毫秒发一次数据
DWORD CRsCom::CommRecvTread(LPVOID lparam)
{
DWORD dwLength;
char *recvBuf = new char[512];
CRsCom *pDlg = (CRsCom*)lparam;
COMSTAT ComStat;
DWORD dwErrorFlags;
PurgeComm(pDlg->m_hComm,PURGE_RXCLEAR|PURGE_TXCLEAR); //清空串口的接收缓 冲区,必要性不大
ClearCommError(pDlg->m_hComm,&dwErrorFlags,&ComStat); //清除串口状态标
while(TRUE)
{
PurgeComm(pDlg->m_hComm,PURGE_RXCLEAR|PURGE_TXCLEAR); //清空串口的接收缓 冲区,必要性不大,但有
//ClearCommError(pDlg->m_hComm,&dwErrorFlags,&ComStat); //清除串口状态标
if (WaitForSingleObject(pDlg->m_ExitThreadEvent, 0) == WAIT_OBJECT_0 )
break;
if (pDlg->m_hComm != INVALID_HANDLE_VALUE )
{
ClearCommError(pDlg->m_hComm,&dwErrorFlags,&ComStat);
BOOL fReadState = ReadFile(pDlg->m_hComm, recvBuf, 512, &dwLength, NULL);
if(!fReadState)
{
//MessageBox(_T("无法从串口读取数据!"));
}
else
{
if(dwLength!=0)
{
OnCommRecv(pDlg, recvBuf, dwLength);
}
}
}
}
delete[] recvBuf;
return 0;
}
...全文
335 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
雨雨雨儿 2015-08-26
  • 打赏
  • 举报
回复
用wince串口调试助手先看看
xingzaicpp 2015-08-22
  • 打赏
  • 举报
回复
写过最简单的程序测试下.不要做数据处理
shaochangyuan 2015-08-21
  • 打赏
  • 举报
回复
这个问题解决了没?我也是在Wince下开阿,C# ,大约过四个小时就异常了,能发送,只是接收为0,肿么破
mavels 2015-06-29
  • 打赏
  • 举报
回复
用wince串口调试助手测试过吗,先对比下看是应用问题还是驱动问题
91program 2015-06-27
  • 打赏
  • 举报
回复
既然出错了,不可能无缘无故的!所以,如果软件查不到原因,就需要从驱动,或者硬件入手了。示波仪和在串口驱动中增加调试信息等方法,都可以试试来确认问题的原因。
  • 打赏
  • 举报
回复
可有报错?收不到数据时线程运行如何?可有检查过硬件,看是否真的收到数据,模块发送数据是否正常?
dailihuiopt 2015-06-26
  • 打赏
  • 举报
回复
内存没有泄露,去掉数据处理也是不行的。
91program 2015-06-26
  • 打赏
  • 举报
回复
长时间才出现的问题,重点查一下内存泄露吧
91program 2015-06-26
  • 打赏
  • 举报
回复
不一定是接受的问题,建议你先将数据处理的部分拿掉,确认一下是不是因为数据处理引起的。
dailihuiopt 2015-06-26
  • 打赏
  • 举报
回复
if(dwLength!=0) { OnCommRecv(pDlg, recvBuf, dwLength); } 收不到数据是dwLength的大小是0,线程都正常运行,使用示波器产看电路都好着,模块的数据也都正常发送,就只是收不到数据了
dailihuiopt 2015-06-25
  • 打赏
  • 举报
回复
自己先顶一下
Virace GPS Simulator V0.3.1 自述文件 2009.6.7 ====================================================================== Virace GPS Simulator是什么? ====================================================================== Virace GPS Simulator(以下简称为Virace)用软件模拟GPS接收器输出的GPS语 句,通过串行口输出到GPS应用软件。用鼠标或键盘控制Virace而模拟实际GPS接 收器的运动,或者重播已有的GPS航迹文件,从而在室内测试GPS导航软件等。 Virace具有手动实时控制及航迹重播两种方式。为了控制灵活方便,Virace定义 了许多鼠标及键盘动作。经过少许试用,就可以对照一个大比例尺的导航地图以 超过正常驾车速度行驶在市区及郊区路上。 ====================================================================== Virace运行在什么操作系统下? ====================================================================== Windows ====================================================================== Virace运行的方式 ====================================================================== 1. Windows下的GPS软件可通过Virace的虚拟串口直接测试。 2. Windows下有微软的Device Emulator,因此部分与Device Emulator兼容的 PPC、CE、SP软件可以在Device Emulator中模拟测试,由Virace提供GPS信号。 3. 可以将Virace输出到蓝牙的输出COM口,测试使用蓝牙GPS模块的PPC、SP及 Symbian S60等GPS软件。 4. Virace输出到PC的物理COM口,测试任何与PC物理串口连接的GPS设备 5. 用Virace将plt、gpx、kml、gpssim、trk格式的航迹文件,转为带速度、方 位角,及卫星状态的nmea文件,再在GpsGate内播放。 ====================================================================== Virace的特点 ====================================================================== 四种模式:自由驾驶模式 + 三种航迹重播模式(逐点重放航迹模式,手控速度 航迹模式,比例速度航迹模式)。运行中根据需要可在四种模式间无缝自由切换。 航迹文件支持plt、gpx(含gpx航迹及Garmin详细航线)、kml、gpssim、trk。 可将航迹文件另存为带速度、方位角,及卫星状态的nmea文件。 航迹重播时具有丰富的控制项,可快进、快退,选择某个段,反序,循环,亦可 人为加入左右偏移。 载入航迹时可选过滤掉点数少或距离小的段。 可选与PC版OziExplorer交互运行。通过Ozi API,在Ozi中双击地图上的某点, Virace就立即跳跃至该点(自由驾驶模式),或跳至离该点最近的航迹(航迹 重播模式);单击地图上的某点,则以当前速度向该点行驶(自由驾驶模式)。 最多3路COM口输出,加1路Ozi输出。每路的参数是独立选择的,且可以独立启停。 支持虚拟串口。与Eltima Virtual Serial Port ActiveX Control V2.5及对应的 Eltima Virtual Serial Port Driver兼容。注:Eltima Virtual Serial Port 是共享软件,一切权利归其所有人。Virace的发行包内不包括该虚拟串口驱动及 控件,请自行购买或下载试用版。 多种转向方式。鼠标滚轮,Ozi中单击,键盘左右箭头等。另有键盘45度及10度转 向键。键盘左右箭头及鼠标滚轮的转向灵敏度可自定义。 多个预设的速度键及上下箭头加减速,另外可随时暂停(速度为0,但依然输出GPS 信号)。 在退出时自动保存当前位置(经纬度、速度、方位角等)及所有
USB电子导航云狗功能介绍: 云狗硬件模块通过USB与主机连接,给主机提供GPRS、GPS和雷达信息等信息,同时给主机开发相应的应用程序,以实现云导航、云预警(固定及流动测速预警)、路况信息、远程定位以及违章查询,另地图卡装载在云狗模块端。 应用场景:汽车行业,顺应车载智能云发展趋势,实现汽车多维度系统方案。 硬件方面: TUSB3410做为通讯主控USB device设备,通过USB把两路UART数据往USB HOST主端传输或接收。一路串口数据是GPS模块数据,型号UBX-G7020,直接与TUSB3410串口对接。TUSB3410芯片的另一路串口数据是来自SC6531芯片,这路串口数据是雷达及SIM卡联网数据,另外需要支持SD卡功能。TUSB3410芯片连接AU6350 USB_HUB芯片,最后由AU6350 USB_HUB芯片的USB口与HOST端相连 电子云狗(雷达+GPS+流量卡) 软件方面: TUSB3410主要实现USB-SERIAL驱动,TUSB3410包括INTERRUPUT类型接口及BULK类型接口,INTERRUPUT类型接口。下面只有一个中断端点,主要是做USB device与 USB host端心跳监控及数据加密功能,BULK类型接口下面配置为2个端点,BULK IN做为两路串口读数据上传,BULK OUT做为写数据。 USB驱动数据传输分析如下: 主端host请求数据,device端 USB 接收到请求令牌包,会把GPS及GPRS数据通过USB管道向上传输数据。 系统host端驱动解析GPS及GPRS数据,利用机制组包,存储GPS数据在链表节点及8K GPS滚筒缓存区中,GPRS数据存储在8K GPRS滚筒缓存区中。 导航地图调用USB-SERIAL驱动接口,读取链表中节点数据。 云狗狗应用调用USB-SERIAL驱动接口,分别读取GPS滚筒数据及GPRS滚筒数据 电子导航云狗源码程序如下: TUSB3410单片机USB转串口驱动: USB-FS-Device WINCE操作系统HOST端usb驱动: USBSer 如截图: 注意:该设计源码来自分享他人设计,仅供大家参考学习,不可用于商业用途。

19,500

社区成员

发帖
与我相关
我的任务
社区描述
硬件/嵌入开发 嵌入开发(WinCE)
社区管理员
  • 嵌入开发(WinCE)社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧