主题:EM9170+ETA108在wince中生成的txt数据文件怎样读取

  共有38805人关注过本帖    
客人
1楼


EM9170+ETA108在wince中生成的txt数据文件怎样读取  发帖心情 Post By:2014-1-10 10:13:00   [只看该作者]

EM9170+ETA108在wince中生成的txt数据文件怎样读取?我使用了很多读取文件的命令,读取的值再显示出来,数值都是0,或者是null,判断文件打开语句也显示文件打开成功,而且用文本编辑软件打开这个文件,里面的数据很完整;查询网上一些资料说,wince下的txt文本读取和其他操作系统下c++的txt读取有很大不同,希望能给出个可以运行的例程C++的,能在wince打开txt数据文本,格式如下:"2.883,2.8886,2.885,2.879....",汉字和英文的格式还没试,目前想打开数据文件,使波形数据可以存储和回放


  单帖管理 | 引用 | 回复 回到顶部
帅哥哟,离线,有人找我吗?
yy
2楼 信息 | 搜索 | 邮箱


加好友 发短信
  发帖心情 Post By:2014-1-10 10:54:00   [只看该作者]

ETA108的例程并没有把数据写TXT啊?只是显示到界面上,这个写TXT的部分是你自己加的么。
WINCE的文本操作和WINDOWS没有什么区别,推荐用API,即CreateFile,ReadFile,WriteFile,CloseHandle这些,你可以查下MSDN这些函数用法,我们的其它例程也有很多地方用到。
比如:
HANDLE hfile;
hfile = CreateFile(L"\\NandFlash\\test", GENERIC_WRITE,  FILE_SHARE_READ|FILE_SHARE_WRITE,  NULL, OPEN_ALWAYS, FILE_FLAG_RANDOM_ACCESS, NULL);
DWORD dwlen;
WriteFile(hfile, "2.883,2.8886,2.885,2.879", 20, &dwlen, NULL);
CloseHandle(hfile);
[此贴子已经被作者于2014-1-10 17:15:08编辑过]

  单帖管理 | 引用 | 回复 回到顶部
客人
3楼


  发帖心情 Post By:2014-1-10 11:35:00   [只看该作者]

数据写入txt文件,是自己写的,可以实现;但是读出就是无法读出并显示txt数据文件里面的值,下面的ReadFile这样应用有问题吗?

 

DWORD filesize=GetFileSize(fp2,NULL);//fp2 是文件名
char* buffer=new char[filesize+1]; // 最后一位为 '/0',C-Style 字符串的结束符。
DWORD readsize;
ReadFile(tmpbuf,buffer,filesize,&readsize,NULL);//tmpbuf放的是fp2文件,这儿有问题吗?

buffer[filesize]=0;

 

printf("%s\n",buffer);//显示出来 是(null),整体程序应该怎样改一下?

 

delete[] buffer;

CloseHandle(fp2);


  单帖管理 | 引用 | 回复 回到顶部
客人
4楼


  发帖心情 Post By:2014-1-10 11:45:00   [只看该作者]

buffer[filesize]=0去掉也无法显示正确的文件数据

 


  单帖管理 | 引用 | 回复 回到顶部
x10
5楼


  发帖心情 Post By:2014-1-10 16:36:00   [只看该作者]

数据只要不是ASCII码,显示就没有意义,与是否写入txt文件无关。任何二进制的数据,比如从AD读的数据,首先需要转换成ASCII码,才能显示。可以用%d, %u, %x来转换二进制数据,唯独%s是不对的。取决于希望显示的格式。

  单帖管理 | 引用 | 回复 回到顶部
客人
6楼


  发帖心情 Post By:2014-1-10 16:53:00   [只看该作者]

显示格式 %f,%d, %u, %x,,,刚刚试了,有的显示是乱码;现在通过观测,buffer里面没有数据,也就是文件里的数据没有读到buffer里面,希望得到具体的几行程序插入到贵公司所给例程"ETA108_TEST"下,在wince下可以读取某个txt文件中的数据并显示出来,比如根目录下的"\\1.txt",希望给以帮助

  单帖管理 | 引用 | 回复 回到顶部
帅哥哟,离线,有人找我吗?
yy
7楼 信息 | 搜索 | 邮箱


加好友 发短信
  发帖心情 Post By:2014-1-10 17:19:00   [只看该作者]

readfile的第一个参数是句柄,不是文件名字符串,大概的代码
HANDLE hfile;
char buff[128];
hfile = CreateFile(L"\\NandFlash\\test", GENERIC_WRITE,  FILE_SHARE_READ|FILE_SHARE_WRITE,  NULL, OPEN_ALWAYS, FILE_FLAG_RANDOM_ACCESS, NULL);
DWORD dwlen;
ReadFile(hfile, buff, 128, &dwlen, NULL);
CloseHandle(hfile);

dwlen的值就是你读到的长度,如果是128,就表示可能没读完,具体的代码你可以根据你的应用优化。

  单帖管理 | 引用 | 回复 回到顶部
客人
8楼


  发帖心情 Post By:2014-1-13 16:03:00   [只看该作者]

按你方给的格式改了一下,我使用printf显示buff内容各种格式输出还都是乱码或者0.000,现在希望把显示文本文件数据格式内容的命令能具体写一个,能在屏幕上显示存储文件test.txt的buff内容:" 2.883,2.8886,2.885,2.879,,,,"


  单帖管理 | 引用 | 回复 回到顶部
帅哥哟,离线,有人找我吗?
yy
9楼 信息 | 搜索 | 邮箱


加好友 发短信
  发帖心情 Post By:2014-1-13 17:58:00   [只看该作者]

你先步进调试下,hfile句柄对不对,这个readfile的返回值,返回的dwlen长度对不对,这个buff里面的数据是些什么,和你txt的内容一致不一致,只有读出来的数据对了printf打印出来的才会是正确的。

  单帖管理 | 引用 | 回复 回到顶部

返回首页

EM9170+ETA108在wince中生成的txt数据文件怎样读取

用户名:
            验证码: 验证码,看不清楚?请点击刷新验证码
内容: