全國最多中醫師線上諮詢網站-台灣中醫網
發文 回覆 瀏覽次數:1126
推到 Plurk!
推到 Facebook!

如何利用RS232將一台電腦的圖檔傳送到另外一台?

尚未結案
windring
一般會員


發表:1
回覆:0
積分:0
註冊:2003-11-29

發送簡訊給我
#1 引用回覆 回覆 發表時間:2003-11-29 16:00:22 IP:163.28.xxx.xxx 未訂閱
我是利用fopen將一台電腦的圖檔讀入stream裡,再利用fread把stream的資料讀入陣列,之後呼叫 WriteFile把陣列的資料寫入rs232,再呼叫 ReadFile把資料讀進陣列, fwrite把陣列的資料寫進stream,最後從stream讀入目的檔,但是結果並不能得到和原來電腦相同的圖檔,請問我是哪個步驟錯了? FILE *in; char data[10240]; int i; in = fopen("\\testin.JPG", "rb"); fread(data,sizeof(data),1,in); unsigned long BS , lrc; BS = StrLen(data); if (hComm==0) return; //檢查Handle值 WriteFile(hComm,data,BS, &lrc,NULL); fclose(in); char inbuff[1024]; DWORD nBytesRead, dwEvent, dwError; COMSTAT cs; //取得狀態 ClearCommError(hComm,&dwError,&cs); //資料是否大於我們所準備的Buffer if (cs.cbInQue > sizeof(inbuff)) { PurgeComm(hComm, PURGE_RXCLEAR); // 清除COM 資料 return; } ReadFile(hComm, inbuff,cs.cbInQue,&nBytesRead,NULL); inbuff[cs.cbInQue]= '\0'; FILE *out; out = fopen("\\testout.JPG", "wb"); fwrite(inbuff,sizeof(inbuff),1,out); fclose(out);
pental
初階會員


發表:3
回覆:48
積分:30
註冊:2003-09-21

發送簡訊給我
#2 引用回覆 回覆 發表時間:2003-11-30 22:35:33 IP:219.68.xxx.xxx 未訂閱
RS232 在資料傳輸的過程中並不像 TCP/IP 可以保證你傳輸的過程中不會漏掉任何一個字元,建議你把圖檔用 Base64 編碼過後,你自行定義一個傳送的封包格式,比如說 0x02 圖檔內容 0x03 CheckSum 0x04 ,其中的 CheckSum 是一個檢查字元,可以透過CheckSum來判斷傳送的封包是否正確。所以你這樣的寫法是很有可能在傳輸的過程中字元有漏掉或是其他的原因,供你參考一下!
系統時間:2024-04-20 21:36:39
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!