RS232傳輸問題 |
尚未結案
|
js6910
一般會員 發表:2 回覆:0 積分:0 註冊:2004-09-09 發送簡訊給我 |
因為我的RS232傳輸到電腦時 數據沒辦法作即時的處理 會停一段時間在作處理
以下是我的程式碼< class="code">
{
char *buf=(char*)Buffer;
char receive[2048];
char tt[4];
AnsiString data[2]; //xi,yi 資料數
static int c=0;
for( int i=0;i<8;i ) //i與資料數相關
{
receive[i]=buf[i];
tt[0] = receive[i 1];
tt[1] = receive[i 2];
tt[2] = receive[i 3];
tt[3] = receive[i 4];
if( (tt[0]>='0'&& tt[0]<='F') && (tt[1]>='0'&& tt[1]<='F') && (tt[2]>='0'&& tt[2]<='F') && (tt[3]>='0'&& tt[3]<='F')){
data[0] = AnsiString(receive[i 1]) AnsiString(receive[i 2]);
data[1] = AnsiString(receive[i 3]) AnsiString(receive[i 4]);
int A= Transform16to10(data[0]);
int B= Transform16to10(data[1]);
Memo1->Lines->Add(IntToStr(A));
Memo1->Lines->Add(IntToStr(B));
OriginalBitmap->Canvas->Pixels[A][B]=clBlue;
Image1->Picture->Assign(OriginalBitmap); }
}
} 發表人 - taishyang 於 2005/02/23 12:28:41
|
stellos
中階會員 發表:24 回覆:84 積分:51 註冊:2004-06-08 發送簡訊給我 |
|
blk5743
高階會員 發表:34 回覆:371 積分:236 註冊:2003-11-17 發送簡訊給我 |
引言: if( (tt[0]>='0'&& tt[0]<='F') && (tt[1]>='0'&& tt[1]<='F') && (tt[2]>='0'&& tt[2]<='F') && (tt[3]>='0'&& tt[3]<='F')){上面的判斷式不對 '0' = 0x30, 'F' = 0x46;共有22個 可是你只要'0'~'9','A'~'F'共16個吧 判斷是否為16進位可用isxdigit The isxdigit function returns true if the character passed as a parameter is a hexadecimal digit. Otherwise the function returns false. 也就是換成 if ( isxdigit(tt[0]) && isxdigit(tt[1]) && isxdigit(tt[2]) && isxdigit(tt[3]) ) 還有data[2]既然是放xi,yi那位什麼不直接宣告為xi,yi??沒什麼必要用陣列吧 你的Transform16to10可用 char *endptr; int A = strtoul(xi.c_str(),&endptr,16); //16進位轉10進位 int B = strtoul(yi.c_str(),&endptr,16); 試試看吧,有問題再說囉 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |