請問各位大哥.....一個有關rs232接收的問題 |
尚未結案
|
kevinhue
一般會員 發表:23 回覆:42 積分:13 註冊:2003-05-06 發送簡訊給我 |
|
taishyang
站務副站長 發表:377 回覆:5490 積分:4563 註冊:2002-10-08 發送簡訊給我 |
kevinhue您好:
您可以先自我測試,看是軟體的問題,還是硬體的問題...
軟體測試的方式可以將RS-232的PIN2與PIN3短路
看傳送與接收有沒有問題,這樣就可以把問題慢慢收斂..
直到找到真正問題所在~~ 至於有沒有辦法可以接收到完整的資料.....顯示在memo上
您可以參考這篇黃金文章
http://delphi.ktop.com.tw/topic.php?TOPIC_ID=20168 順心 <>~我也是在學習的階段,所以請您多多見諒與指教~> 發表人 -
|
turboted
版主 發表:95 回覆:754 積分:452 註冊:2002-07-23 發送簡訊給我 |
|
kevinhue
一般會員 發表:23 回覆:42 積分:13 註冊:2003-05-06 發送簡訊給我 |
|
cmf
尊榮會員 發表:84 回覆:918 積分:1032 註冊:2002-06-26 發送簡訊給我 |
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 發送簡訊給我 |
|
cmf
尊榮會員 發表:84 回覆:918 積分:1032 註冊:2002-06-26 發送簡訊給我 |
|
kevinhue
一般會員 發表:23 回覆:42 積分:13 註冊:2003-05-06 發送簡訊給我 |
這是我一個按鈕的程式,請各位大哥可以看一下嗎??就是我想要接收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 發送簡訊給我 |
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 發送簡訊給我 |
|
cmf
尊榮會員 發表:84 回覆:918 積分:1032 註冊:2002-06-26 發送簡訊給我 |
|
kevinhue
一般會員 發表:23 回覆:42 積分:13 註冊:2003-05-06 發送簡訊給我 |
|
cmf
尊榮會員 發表:84 回覆:918 積分:1032 註冊:2002-06-26 發送簡訊給我 |
//我有試過,如果沒有這一行,會跑的很順
//mReceive->Text=mReceive->Text +p*+' ';
//可是我是需要將接收的資料顯示在memo上
//有沒有辦法可以將接收的資料丟到buffer上
//在一次顯示出來,或是有更好的方法可以不會
//delay 那就把這行 mReceive->Text=mReceive->Text +p*+' '; 珊掉 接收完畢後 直接顯示 inbuff 就好了阿^_^ 願以此功德 莊嚴佛淨土 上報四重恩 下濟三塗苦 若有見聞者 悉發菩提心 盡此一報身 同生極樂國
------
︿︿ |
kevinhue
一般會員 發表:23 回覆:42 積分:13 註冊:2003-05-06 發送簡訊給我 |
|
cmf
尊榮會員 發表:84 回覆:918 積分:1032 註冊:2002-06-26 發送簡訊給我 |
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 發送簡訊給我 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |