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

請問各位大哥.....一個有關rs232接收的問題

尚未結案
kevinhue
一般會員


發表:23
回覆:42
積分:13
註冊:2003-05-06

發送簡訊給我
#1 引用回覆 回覆 發表時間:2003-05-16 15:41:02 IP:218.160.xxx.xxx 未訂閱
請問各位大哥......我由TXD端傳送一筆64k的資料....但由 RXD端只接收到4k的資料.....請問各位大哥....有沒有辦法可 以接收到完整的資料.....顯示在memo上......各位高手幫幫忙 ∵KevinHue
taishyang
站務副站長


發表:377
回覆:5490
積分:4563
註冊:2002-10-08

發送簡訊給我
#2 引用回覆 回覆 發表時間:2003-05-16 16:07:31 IP:140.135.xxx.xxx 未訂閱
kevinhue您好:     您可以先自我測試,看是軟體的問題,還是硬體的問題...     軟體測試的方式可以將RS-232的PIN2與PIN3短路     看傳送與接收有沒有問題,這樣就可以把問題慢慢收斂..     直到找到真正問題所在~~        至於有沒有辦法可以接收到完整的資料.....顯示在memo上     您可以參考這篇黃金文章     http://delphi.ktop.com.tw/topic.php?TOPIC_ID=20168 順心 <>~我也是在學習的階段,所以請您多多見諒與指教~ 發表人 -
turboted
版主


發表:95
回覆:754
積分:452
註冊:2002-07-23

發送簡訊給我
#3 引用回覆 回覆 發表時間:2003-05-16 16:40:52 IP:61.30.xxx.xxx 未訂閱
工作之餘,別忘了使用Search喔
kevinhue
一般會員


發表:23
回覆:42
積分:13
註冊:2003-05-06

發送簡訊給我
#4 引用回覆 回覆 發表時間:2003-05-16 16:51:47 IP:218.160.xxx.xxx 未訂閱
我是將Pin2和Pin3接在一起傳資料,但是,接收到的資料還是4096bytes的資料 而無法將65536bytes筆資料完全讀出........ 我在想是不是這行指令出了問題 ReadFile(hComm,inbuff,cs.cbInQue,&nBytesRead,NULL); 如果是的話,請問要如何解決....
cmf
尊榮會員


發表:84
回覆:918
積分:1032
註冊:2002-06-26

發送簡訊給我
#5 引用回覆 回覆 發表時間:2003-05-16 17:16:26 IP:61.218.xxx.xxx 未訂閱
The SetupComm function initializes the communications parameters for a specified communications device.     BOOL SetupComm(        HANDLE hFile,        // handle of communications device       DWORD dwInQueue,        // size of input buffer      DWORD dwOutQueue        // size of output buffer    );              Parameters    hFile    Identifies the communications device. The CreateFile function returns this handle.     dwInQueue    Specifies the recommended size, in bytes, of the device's internal input buffer.     dwOutQueue    Specifies the recommended size, in bytes, of the device's internal output buffer.          Return Values    If the function succeeds, the return value is nonzero.    僅供參考,歡迎繼續發言願以此功德 莊嚴佛淨土 上報四重恩 下濟三塗苦 若有見聞者 悉發菩提心 盡此一報身 同生極樂國
------
︿︿
kevinhue
一般會員


發表:23
回覆:42
積分:13
註冊:2003-05-06

發送簡訊給我
#6 引用回覆 回覆 發表時間:2003-05-16 18:41:18 IP:218.160.xxx.xxx 未訂閱
cmf 大哥: 我這樣寫不知道對不對.....可是結果卻出不來ㄟ???好奇怪喔..怎麼半??? SetupComm(hComm,65536,65536);
cmf
尊榮會員


發表:84
回覆:918
積分:1032
註冊:2002-06-26

發送簡訊給我
#7 引用回覆 回覆 發表時間:2003-05-16 22:11:27 IP:61.70.xxx.xxx 未訂閱
kevinhue:     你是64K 一次就要 讀完嗎?     若可以的話,直接把你的程式貼上來,會比較快解決喔 ^_^         僅供參考,歡迎繼續發言願以此功德 莊嚴佛淨土 上報四重恩 下濟三塗苦 若有見聞者 悉發菩提心 盡此一報身 同生極樂國
------
︿︿
kevinhue
一般會員


發表:23
回覆:42
積分:13
註冊:2003-05-06

發送簡訊給我
#8 引用回覆 回覆 發表時間:2003-05-19 08:46:29 IP:218.160.xxx.xxx 未訂閱
這是我一個按鈕的程式,請各位大哥可以看一下嗎??就是我想要接收65536筆資料 ,可是都收不到那麼多...... void __fastcall TForm1::Button3Click(TObject *Sender) { String Temp; int k; char inbuff[65536]; DWORD nBytesRead,dwEvent,dwError; COMSTAT cs; ClearCommError(hComm,&dwError,&cs); if(cs.cbInQue > sizeof(inbuff)) {         PurgeComm(hComm,PURGE_RXCLEAR);         return; } ReadFile(hComm,inbuff,cs.cbInQue,&nBytesRead,NULL); inbuff[cs.cbInQue]='\0'; mReceive->Text = inbuff; Temp = mReceive -> Text; Memo2 -> Text = IntToStr(Temp.Length()) + "\r\n";< >< >
cmf
尊榮會員


發表:84
回覆:918
積分:1032
註冊:2002-06-26

發送簡訊給我
#9 引用回覆 回覆 發表時間:2003-05-19 16:12:04 IP:61.70.xxx.xxx 未訂閱
void __fastcall TForm1::Button3Click(TObject *Sender) { String Temp; int k; char inbuff[65536]; DWORD nBytesRead,dwEvent,dwError; COMSTAT cs; DWORD count; char p*;     count=0;  p=&inbuff[0];  while (TRUE)  {    Application->HandleMessage;       ClearCommError(hComm,&dwError,&cs);    if(cs.cbInQue > 0)    {      ReadFile(hComm,p,1,&nBytesRead,NULL);      count=count+nBytesRead;         mReceive->Text=mReceive->Text +p*+' ';       p=p+nBytesRead;          }      if (count>=65536) break;  }    Memo2 -> Text ='REC TOTAL='+IntToStr(count) + "\r\n";    僅供參考,歡迎繼續發言願以此功德 莊嚴佛淨土 上報四重恩 下濟三塗苦 若有見聞者 悉發菩提心 盡此一報身 同生極樂國
------
︿︿
kevinhue
一般會員


發表:23
回覆:42
積分:13
註冊:2003-05-06

發送簡訊給我
#10 引用回覆 回覆 發表時間:2003-05-20 10:20:46 IP:218.160.xxx.xxx 未訂閱
感謝你.....我試出來可以了....只是有一個最後的問題, 就是這個程式跑到最後會越來越慢,不知到是不是這行指令 mReceive->Text=mReceive->Text *p;的問題......... 請問這位大哥,有沒有辦法解決ㄋㄟ?
cmf
尊榮會員


發表:84
回覆:918
積分:1032
註冊:2002-06-26

發送簡訊給我
#11 引用回覆 回覆 發表時間:2003-05-20 10:43:04 IP:61.70.xxx.xxx 未訂閱
越來越慢 的問題 你可能要查一下    至於 mReceive->Text=mReceive->Text +p*+' ';  只是顯示 您接收的資料, 不要也可以阿    僅供參考,歡迎繼續發言願以此功德 莊嚴佛淨土 上報四重恩 下濟三塗苦 若有見聞者 悉發菩提心 盡此一報身 同生極樂國
------
︿︿
kevinhue
一般會員


發表:23
回覆:42
積分:13
註冊:2003-05-06

發送簡訊給我
#12 引用回覆 回覆 發表時間:2003-05-20 11:09:45 IP:218.160.xxx.xxx 未訂閱
我有試過,如果沒有這一行,會跑的很順 mReceive->Text=mReceive->Text +p*+' '; 可是我是需要將接收的資料顯示在memo上 有沒有辦法可以將接收的資料丟到buffer上 在一次顯示出來,或是有更好的方法可以不會 delay                        除了感謝,還是感謝
cmf
尊榮會員


發表:84
回覆:918
積分:1032
註冊:2002-06-26

發送簡訊給我
#13 引用回覆 回覆 發表時間:2003-05-20 11:17:25 IP:61.70.xxx.xxx 未訂閱
    //我有試過,如果沒有這一行,會跑的很順 //mReceive->Text=mReceive->Text +p*+' '; //可是我是需要將接收的資料顯示在memo上 //有沒有辦法可以將接收的資料丟到buffer上 //在一次顯示出來,或是有更好的方法可以不會 //delay    那就把這行 mReceive->Text=mReceive->Text +p*+' '; 珊掉    接收完畢後 直接顯示 inbuff 就好了阿^_^        僅供參考,歡迎繼續發言願以此功德 莊嚴佛淨土 上報四重恩 下濟三塗苦 若有見聞者 悉發菩提心 盡此一報身 同生極樂國
------
︿︿
kevinhue
一般會員


發表:23
回覆:42
積分:13
註冊:2003-05-06

發送簡訊給我
#14 引用回覆 回覆 發表時間:2003-05-20 13:12:20 IP:218.160.xxx.xxx 未訂閱
請問是這樣嗎?? mReceive->Text=inbuff;
cmf
尊榮會員


發表:84
回覆:918
積分:1032
註冊:2002-06-26

發送簡訊給我
#15 引用回覆 回覆 發表時間:2003-05-20 13:38:34 IP:61.70.xxx.xxx 未訂閱
void __fastcall TForm1::Button3Click(TObject *Sender) { String Temp; int k; char inbuff[65536]; DWORD nBytesRead,dwEvent,dwError; COMSTAT cs; DWORD count; char p*;    count=0; p=&inbuff[0]; while (TRUE) { Application->HandleMessage;    ClearCommError(hComm,&dwError,&cs); if(cs.cbInQue > 0) { ReadFile(hComm,p,1,&nBytesRead,NULL); count=count+nBytesRead;    p=p+nBytesRead;    }  if (count>=65536) break; }    int i;    Memo1->Text="REC DATA:"+"\r\n";   for(i=0;i<count;i++) {  if ( (i % 16)=0 )  {   Memo1->Text =Memo1->Text+"\r\n";  }       Memo1->Text =Memo1->Text+IntToHex(inbuff[i],2) +' ';  }    Memo2 -> Text ="REC TOTAL="+IntToStr(count) + "\r\n";        僅供參考,歡迎繼續發言願以此功德 莊嚴佛淨土 上報四重恩 下濟三塗苦 若有見聞者 悉發菩提心 盡此一報身 同生極樂國 發表人 - cmf 於 2003/05/20 13:43:33
------
︿︿
kevinhue
一般會員


發表:23
回覆:42
積分:13
註冊:2003-05-06

發送簡訊給我
#16 引用回覆 回覆 發表時間:2003-05-20 14:37:42 IP:218.160.xxx.xxx 未訂閱
感謝你.......
系統時間:2024-03-29 13:51:45
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!