• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号
您的位置:首页 > 程序设计 >嵌入式开发 > wince数据读取方面的问题

wince数据读取方面的问题

作者:佚名 字体:[增加 减小] 来源:互联网 时间:2017-06-05

佚名通过本文主要向大家介绍了扫描枪 wince,车载导航wince系统,wince应用软件下载,工控机wince系统,wince开发教程等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com
问题: wince数据读取方面的问题
描述:

wince不支持异步IO,结合上次各位老师给的意见,将wince下的接收数据的函数进行了更改,然后在串口助手上以10ms的速度发送数据,但是在数据显示方面还是没有达到理想的状态,数据显示如下图 wince数据读取方面的问题
代码如下

void CALLBACK CSerialPortDlg::OnCommRecv(CWnd* pWnd, char *buf, int buflen)
{
CString tmp;
CSerialPortDlg * pDlg = (CSerialPortDlg*)pWnd;
CEdit *pRecvStrEdit = (CEdit*)pDlg->GetDlgItem(IDC_EDIT_RECV);
for (int i = 0; i < buflen; i++, buf++)
{
tmp.Format(_T("%c"), *buf);            
pDlg->m_strRECV += tmp;
}
pDlg->m_strRECV += _T("\r\n");
pRecvStrEdit->SetWindowText(pDlg->m_strRECV);  // 将接收到的数据显示在窗口上
}
DWORD CSerialPortDlg::CommRecvTread(LPVOID lparam)
{
DWORD evtMask;
DWORD dwReadErrors;
COMSTAT cmState;
DWORD willReadLen;
DWORD actualReadLen = 0;
char *recvBuf = new char[1024];
CSerialPortDlg *pDlg = (CSerialPortDlg*)lparam;
PurgeComm(pDlg->m_hComm, PURGE_RXCLEAR | PURGE_TXCLEAR);
SetCommMask(pDlg->m_hComm, EV_RXCHAR | EV_CTS | EV_DSR);
while (TRUE)
{
if (WaitCommEvent(pDlg->m_hComm, &evtMask, 0))
{
SetCommMask(pDlg->m_hComm, EV_RXCHAR | EV_CTS | EV_DSR);    
if (evtMask & EV_RXCHAR)
{
ClearCommError(pDlg->m_hComm, &dwReadErrors, &cmState);
willReadLen = cmState.cbInQue;
if (willReadLen <= 0)
{
continue;
}
ReadFile(pDlg->m_hComm, recvBuf, willReadLen, &actualReadLen, 0);
//如果读取的数据大于0,
if (actualReadLen>0)
{
OnCommRecv(pDlg, recvBuf, actualReadLen);   // 接收成功调用回调函数
}
}
}
//如果收到读线程退出信号,则退出线程
if (WaitForSingleObject(pDlg->m_ExitThreadEvent, 0) == WAIT_OBJECT_0)
{
break;
}
}
delete[] recvBuf;
return 0;
}

我做过异步IO的实验,数据接收很稳定,但是wince不支持这种方式,我想问问各位老师怎样能够实现数据快速发送过来的稳定接收并且正确显示出来,并写csv文件中。
现在有一个想法是把数据弦存在一个大缓冲区中,然后在根据每组数据的格式分别从缓冲区中读取,但是还有几个问题没有想明白
1.如何定义这个大的缓冲区,怎样定义一个读写方面并且能够合理存储数据的缓存区;
2.定义这个缓冲区之后应该怎样从其中每次读取指定的长度的数据
想法不成熟,望各位老师给予指点和帮助


解决方案1:

居然用9600,然后还发这么多数据。
用115200,然后用之前的代码测试看看,通过了再试试在ui上显示。

解决方案2:

你应该是两帧一起收了,这很正常。你读取慢了就这样。
你的接收后处理显示的代码本来就没啥效率。在OnCommRecv中,你可以先处理当前数据不累加,然后直接在vs打印出来,不要SetWindowText,这样看看效果。
数据多了,字符串+操作慢,然后用SetWindowText显示就更离谱的,起码优化一下。
就算你优化了,你也要考虑数据的不完整性,连帧等问题的处理。

解决方案3:

你的数据不是收的挺好吗,没看出问题啊
加数据校验,然后定义一些帧格式方便断帧就ok了。

解决方案4:

大的缓冲区,说白一点就是一块大的内存。
缓存在此缓冲区的数据,需要 LZ 你自己管理与计数,然后确定读的机制:如计数达到多少,就去读等等......


分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

  • wince数据读取方面的问题
  • wince对话框问题
  • WinCE打补丁后对话框变大
  • wince网络状态的更新的问题
  • winCE做的form如何切换多语言?
  • WINCE60SD卡唤醒后无法被识别
  • 如何把Windows下的exe直接放到wince下运行,需要哪些附加文件
  • wince数据库读写与CAN读写是否有影响
  • wince数据库读写对CAN读写的影响
  • winCE如何在任务栏添加提示灯效果

相关文章

  • 2017-06-05 MFC与WMD文件宏定义发生冲突,主要发生冲突文件winnth
  • 2017-06-05 wince串口编程编译的问题,刚接触这方面,请大神帮忙解答,特别着急,谢谢
  • 2017-06-05 VXworks系统无限重启
  • 2017-06-05 磁盘驱动是不是仍需调用int13对系统磁盘进行读写(ide驱动或者scsi驱动等)
  • 2017-06-05 无线温湿度传感的疑惑
  • 2017-06-05 如何实现一个判断URL合法性性的程序?
  • 2017-06-05 51中断的问题想请教大家
  • 2017-06-05 自己写了温湿度SHT11的协议但测量出的值错误,不知道哪里错了。
  • 2017-06-05 如何在ccsv5环境下用c调用汇编函数
  • 2017-06-05 上海的开发人才进来看看!

文章分类

  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号

最近更新的内容

    • 召集os-fans>>>>欢迎加入os-fansQQ群!!
    • wince60车机系统解决GPS端口释放问题
    • MFC读取EXCEL表格自动保存问题
    • MODEM接口
    • 编码器设置成向上计数,定时器初始化为0,结果编码器一反转就进中断
    • lwip作为服务器同个Ip地址多次重复连接服务器
    • 路由器dns被篡改家用路由器疑似无线网络DNS出现了问题
    • 如何通过函数获得“总线已报告设备描述”
    • 初学驱动程序开发,不知需要哪些基础知识,望老鸟指点
    • WINCE60设备唯一码的写入和读取NANDFLASH

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有