主题:EM9170+ETA108在wince中生成的txt数据文件怎样读取 共有38806人关注过本帖 |
---|
客人 |
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 是文件名 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打印出来的才会是正确的。
|
单帖管理 | 引用 | 回复 |