2012年6月8日
摘要: 以前碰到一个问题:串口循环解析数据,采用死循环一直解析数据,一个线程接收数据,另一个线程去解析数据,这样做会出现很多问题,当数据不完整,出现不发送整条数据的情况,尽管采用数据从尾部追加到接收缓存区,但任然很容易导致数据丢失的情况,数据缺失则无形之中就会损耗数据,这样必然会导致数据收入不全,正常情况下数据整条发送,或者成倍发送,比较容易确保数据不遗漏,发送数据的频率不能够太快,否则容易出现阻断,正常情况下应该设定一个发送数据的MCU周期,虽然我们的计算机的处理速度是很快的,但是碰到那种多个端口处理数据的情况,或者单条链路发送过于频繁,如果服务器较差,则机器使用度会非常高,除非采用分布式,或者现在 阅读全文
posted @ 2012-06-08 17:52 xshbokeyuan 阅读(1166) 评论(0) 推荐(0) 编辑
  2012年5月22日
摘要: 最近在做一个关于串口接收数据的功能部分,之前对串口方面的知识知之甚少,幸好以前的同事有提供一些参考的资料,问题逐个解决了,颇有一些心得,由于没有CE联机调试的功能,所以我只能靠写log的方式来调试程序,这样就额外的增添了一些麻烦,不过也学到了一下关于格式化输出的东西,比如获取BYTE类型的数据,如何转换成对应的字符串写入到.text文件中,比如0x01,0x02,转化为字符的01,02举例:BYET byte = {0x0A,0x0B};int iLen = sizeof(byte);TCHAR szFileName[MAX_PATH];FILE *fp;_stprintf(szFileNa. 阅读全文
posted @ 2012-05-22 17:12 xshbokeyuan 阅读(1007) 评论(2) 推荐(0) 编辑
  2012年5月16日
摘要: 有的时候我们需要接收来自串口的数据,解析得出相应的结果,这样便于充分显示信息 从串口接收回来的数据一般都是数据流的形式,我们需要用一个BYTE数组接收假设BYTE数组数据为BYTE byte[] = {0x0A,0x0A,0x18,0x0B....}接下来我们就需要解析这一连串的报文,数据的构造一般为同步字固定位(例如:0x0A,0x0A) + 数据长度 + 数据内容 + 校验码接着我们需要做的就是构造一个结构体,把解析数据分别为结构体中具体项赋值,最后使用相应数据。 阅读全文
posted @ 2012-05-16 10:23 xshbokeyuan 阅读(279) 评论(0) 推荐(0) 编辑
  2012年5月9日
摘要: 定义一个结构体typedef struct tagCITYINFO{ char cityName[20]; //城市名称 char cityAdminCode[20]; //城市编码}定义一个vectorvector<CITYINFO> m_CityInfo; //定义一个成员变量外部重定义一个vector迭代器,用于循环迭代查找vector中的元素typedef vector<CITYINFO>::iterator VE_CITYINFO_IT;循环查找如VE_CITYINFO_IT it = m_CityInfo.begin();for(; it != m_City 阅读全文
posted @ 2012-05-09 11:41 xshbokeyuan 阅读(3062) 评论(0) 推荐(0) 编辑
摘要: Vc中复制文件从一个目录到另一个目录调用函数CopyFile(),具体使用参看相应的API解析文件中某一节点下的值操作为:判断文件有无存在,代码为: FILE *fp =NULL; TCHAR tFileNam[MAX_PATH];_stprintf(tFileName,_T("%s\\xxx.xml"),g_AppPath);fp = _tfopen(tFileName,_T("r"))接着为循环查找节点操作do{ if(NULL == fp) { break; } char buf[256] = {0}; char *p =NULL; char *q 阅读全文
posted @ 2012-05-09 10:54 xshbokeyuan 阅读(492) 评论(0) 推荐(0) 编辑
  2012年3月8日
摘要: 当我们的应用程序运行在一些设备上的时候,我们有的时候需要一些截屏操作, 用来保存获取软件运行中出现的问题,这个时候截屏显得很重要.具体实现为:void CScreenshot::SaveScreen(){SYSTEMTIME time;GetSystemTime(&time);int mm = time.wMonth;int dd = time.wDay;int h = time.wHour;int m = time.wMinute;int s = time.wSecond;TCHAR szPath[MAX_PATH];_stprintf(szPath, _T("%s\\bm 阅读全文
posted @ 2012-03-08 17:20 xshbokeyuan 阅读(455) 评论(0) 推荐(0) 编辑
  2012年3月6日
摘要: 1.为什么要用GlobalLock()函数C/C++ code HGLOBAL hImageMemory=GlobalAlloc(GMEM_MOVEABLE, dwFileSize); //给图片分配全局内存 void *pImageMemory=GlobalLock(hImageMemory); //锁定内存 DWORD dwReadedSize; //保存实际读取的文件大小 ReadFile(hFile, pImageMemory, dwFileSize, &dwReadedSize, NULL); //读取图片到全局内存当中 GlobalUnlock(hImageMemory); 阅读全文
posted @ 2012-03-06 15:11 xshbokeyuan 阅读(1300) 评论(0) 推荐(0) 编辑