用C++ Builder 5.0 寫 RS-232 程式的問題 |
尚未結案
|
uglykid
一般會員 ![]() ![]() 發表:1 回覆:1 積分:0 註冊:2013-04-28 發送簡訊給我 |
各位前輩,
大家好, 最近在學用BCB讀RS232 NMEA Sentence, 我使用了Timer的方式, 每秒去讀一次ComPort進來的資料, 但遇到了一個顯示上的問題...使用超級終端機得到(以下為某一秒內得到的資料) $GPRMC,221354,A,2501.6114,N,12130.3019,E,000.7,189.9,270413,004.0,W*60 $GPGGA,221354,2501.6114,N,12130.3019,E,2,07,1.4,29.3,M,19.0,M,,*7E $GPGSA,A,3,02,,05,09,15,26,29,,193,,,,1.7,1.4,0.9*06 $GPGSV,4,1,13,02,46,127,35,04,10,132,16,05,46,034,19,09,42,111,36*7D $GPGSV,4,2,13,15,59,244,30,26,74,020,17,29,38,280,20,42,54,141,29*77 $GPGSV,4,3,13,193,77,073,28,08,17,055,00,10,09,075,00,21,03,317,00*48 $GPGSV,4,4,13,24,11,186,00*42 但用我的程式則會發生斷行的問題...在不該換行的地方換行... 或者應該說是後半部的資料, 變成在下一秒顯示了 $GPRMC,221354,A,2501.6114,N,12130.3019,E,000.7,189.9,270413,004.0,W*60 $GPGGA,221354,2501.6114,N,12130.3019,E,2,07,1.4,29.3,M,19.0,M,,*7E $GPGSA,A,3,02,,05,09,15,26,29,,193,,,,1.7,1.4,0.9*06 $GPGSV,4,1,13,02,46,127,35,04,10,132,16,05,46,034,19,09,42,111,36*7D $GPGSV,4 ,2,13,15,59,244,30,26,74,020,17,29,38,280,20,42,54,141,29*77 $GPGSV,4,3,13,193,77,073,28,08,17,055,00,10,09,075,00,21,03,317,00*48 $GPGSV,4,4,13,24,11,186,00*42
想請教各位前輩, 這樣的問題該如何解決? 是否不該使用 timer 的方式? 以下為程式的內容, 還望各位先進指導...大感恩 void __fastcall TForm1::Timer1Timer(TObject *Sender) { char inbuff[1024] = ""; 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'; mRecive->Text = inbuff; mRecive->SelStart=SendMessage(mRecive->Handle,EM_LINEINDEX,mRecive->Lines->Count-1,0); mRecive->SelLength=0; } |
aftcast
站務副站長 ![]() ![]() ![]() ![]() ![]() 發表:81 回覆:1485 積分:1763 註冊:2002-11-21 發送簡訊給我 |
|
uglykid
一般會員 ![]() ![]() 發表:1 回覆:1 積分:0 註冊:2013-04-28 發送簡訊給我 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |