在WINCE用VC++ 的WriteFiles函數寫入一各char到Test.txt 出現亂碼? |
答題得分者是:aftcast
|
a0815
一般會員 發表:4 回覆:5 積分:1 註冊:2007-08-20 發送簡訊給我 |
typedef struct _GSR_XYZT { CHAR x; CHAR y; CHAR z; CHAR t; }GSR_XYZT, *PGSR_XYZT; GSR_XYZT gsr_xyzt; DWORD dwWritenSize = 0; g_hFile = CreateFile(TEXT("\\Test.txt"),GENERIC_READ|GENERIC_WRITE,FILE_SHARE_READ|FILE_SHARE_WRITE,NULL,CREATE_ALWAYS,FILE_ATTRIBUTE_NORMAL,NULL) ; DeviceIoControl(m_hgsr, GSR_IO_GET_XYZT, &gsr_data_xyzt, sizeof(gsr_data_xyzt), &gsr_xyzt, sizeof(gsr_xyzt), NULL, NULL); WriteFile(g_hFile,&gsr_xyzt, sizeof(gsr_xyzt),&dwWritenSize,NULL); [/code] |
aftcast
站務副站長 發表:81 回覆:1485 積分:1763 註冊:2002-11-21 發送簡訊給我 |
亂碼是正常的啊。你寫的是char,但事實上看你的程式,它應該是放"數值" 0x00-0xFF 。 若char 放入的值是 0x10好了,你看到的當然就是亂碼。但這是正常的,也是正確的。
你應該用ultraedit之類的來開,並用hex的模式來觀察你要的結果。而不是一般的記事本。除非GSR_XYZT 這個結構體裡真的放的是英文字 'A' 'B' 之類的,但我覺得它是放 "數值"。 char 不是就是字元,它也是數值,這要搞清楚。 ===================引 用 a0815 文 章=================== 我要在WINCE用VC 的WriteFiles函數寫入一各char到Test.txt 後 在pc用記事本打開出現亂碼?請問如何解決? 以下是我的程式: [code cpp] typedef struct _GSR_XYZT { CHAR x; CHAR y; CHAR z; CHAR t; }GSR_XYZT, *PGSR_XYZT; GSR_XYZT gsr_xyzt; DWORD dwWritenSize = 0; g_hFile = CreateFile(TEXT("\\Test.txt"),GENERIC_READ|GENERIC_WRITE,FILE_SHARE_READ|FILE_SHARE_WRITE,NULL,CREATE_ALWAYS,FILE_ATTRIBUTE_NORMAL,NULL) ; DeviceIoControl(m_hgsr, GSR_IO_GET_XYZT, &gsr_data_xyzt, sizeof(gsr_data_xyzt), &gsr_xyzt, sizeof(gsr_xyzt), NULL, NULL); WriteFile(g_hFile,&gsr_xyzt, sizeof(gsr_xyzt),&dwWritenSize,NULL); [/code]
------
蕭沖 --All ideas are worthless unless implemented-- C++ Builder Delphi Taiwan G+ 社群 http://bit.ly/cbtaiwan |
a0815
一般會員 發表:4 回覆:5 積分:1 註冊:2007-08-20 發送簡訊給我 |
Dear sir, 太厲害了!GSR_XYZT 是數值沒錯,MEMS3軸加速度計回傳的XYZ值,在手機上的edit元件顯示正常,但存在PC的text.txt檔後打開就是亂碼~ 請問有人知道怎轉換嗎?我用過WideCharToMultiByte 但都出現錯誤.... ===================引 用 aftcast 文 章=================== 亂碼是正常的啊。你寫的是char,但事實上看你的程式,它應該是放"數值" 0x00-0xFF 。 若char 放入的值是 0x10好了,你看到的當然就是亂碼。但這是正常的,也是正確的。 你應該用ultraedit之類的來開,並用hex的模式來觀察你要的結果。而不是一般的記事本。除非GSR_XYZT 這個結構體裡真的放的是英文字 'A' 'B' 之類的,但我覺得它是放 "數值"。 char 不是就是字元,它也是數值,這要搞清楚。 ===================引 用 a0815 文 章=================== 我要在WINCE用VC 的WriteFiles函數寫入一各char到Test.txt 後 在pc用記事本打開出現亂碼?請問如何解決? 以下是我的程式: [code cpp] typedef struct _GSR_XYZT { CHAR x; CHAR y; CHAR z; CHAR t; }GSR_XYZT, *PGSR_XYZT; GSR_XYZT gsr_xyzt; DWORD dwWritenSize = 0; g_hFile = CreateFile(TEXT("\\Test.txt"),GENERIC_READ|GENERIC_WRITE,FILE_SHARE_READ|FILE_SHARE_WRITE,NULL,CREATE_ALWAYS,FILE_ATTRIBUTE_NORMAL,NULL) ; DeviceIoControl(m_hgsr, GSR_IO_GET_XYZT, &gsr_data_xyzt, sizeof(gsr_data_xyzt), &gsr_xyzt, sizeof(gsr_xyzt), NULL, NULL); WriteFile(g_hFile,&gsr_xyzt, sizeof(gsr_xyzt),&dwWritenSize,NULL); [/code] |
aftcast
站務副站長 發表:81 回覆:1485 積分:1763 註冊:2002-11-21 發送簡訊給我 |
我想你可能還是沒搞懂我說的。我上面有和你說,你看到的是亂碼,這是正常的!!! 且是應該的。若不是亂碼,我還會訝異!
你說在手機上的edit元件上顯示正常,那就表示他有用 _itoa 或 _itow 或他用了mfc裡的把元件的"值"設成member,然後updatedata的方式(我想你若會寫vc,你應該知道我講什麼),這個updatedata的方式已隱含了mfc幫你把"數值"轉成"字串"。 數值的 123 與 字串的 "123" 是不同的。你若把數字串",那才會讓你在文字檔中看到123。 但,你「直接的把結構體的數值」寫入檔案,你期望看到什麼? 123 ?? 當然是不可能的。 你必需要把x,y,z,t 等數值,經_itoa 或 _itow後,得到"數字串",然後再寫入檔案! 這樣才會是你預期的。 把 123 變 "123" 了解嗎? 123的數值只有一個byte,但"123"是至少3個byte。一個char 是一個byte。 如果你看了幾遍我說的還是不明白,那…真的要在自加強內力了! 對了,那個與WideCharToMultiByte一點關係也沒有! ===================引 用 a0815 文 章=================== Dear sir, 太厲害了!GSR_XYZT是數值沒錯,MEMS3軸加速度計回傳的XYZ值,在手機上的edit元件顯示正常,但存在PC的text.txt檔後打開就是亂碼~ 請問有人知道怎轉換嗎?我用過WideCharToMultiByte 但都出現錯誤.... ===================引 用 aftcast 文 章=================== 亂碼是正常的啊。你寫的是char,但事實上看你的程式,它應該是放"數值" 0x00-0xFF 。 若char 放入的值是 0x10好了,你看到的當然就是亂碼。但這是正常的,也是正確的。 你應該用ultraedit之類的來開,並用hex的模式來觀察你要的結果。而不是一般的記事本。除非GSR_XYZT 這個結構體裡真的放的是英文字 'A' 'B' 之類的,但我覺得它是放 "數值"。 char 不是就是字元,它也是數值,這要搞清楚。 ===================引 用 a0815 文 章=================== 我要在WINCE用VC 的WriteFiles函數寫入一各char到Test.txt 後 在pc用記事本打開出現亂碼?請問如何解決? 以下是我的程式: [code cpp] typedef struct _GSR_XYZT { CHAR x; CHAR y; CHAR z; CHAR t; }GSR_XYZT, *PGSR_XYZT; GSR_XYZT gsr_xyzt; DWORD dwWritenSize = 0; g_hFile = CreateFile(TEXT("\\Test.txt"),GENERIC_READ|GENERIC_WRITE,FILE_SHARE_READ|FILE_SHARE_WRITE,NULL,CREATE_ALWAYS,FILE_ATTRIBUTE_NORMAL,NULL) ; DeviceIoControl(m_hgsr, GSR_IO_GET_XYZT, &gsr_data_xyzt, sizeof(gsr_data_xyzt), &gsr_xyzt, sizeof(gsr_xyzt), NULL, NULL); WriteFile(g_hFile,&gsr_xyzt, sizeof(gsr_xyzt),&dwWritenSize,NULL); [/code]
------
蕭沖 --All ideas are worthless unless implemented-- C++ Builder Delphi Taiwan G+ 社群 http://bit.ly/cbtaiwan
編輯記錄
aftcast 重新編輯於 2011-05-12 03:16:40, 註解 無‧
|
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |