主題:EM9170+ETA108在wince中生成的txt數據文件怎樣讀取 共有43741人關注過本帖 |
---|
客人 |
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打印出來的才會是正確的。
|
單帖管理 | 引用 | 回復 |