用Com Port接收16進制的資料 |
缺席
|
free8605
一般會員 ![]() ![]() 發表:3 回覆:4 積分:1 註冊:2010-03-30 發送簡訊給我 |
|
GGL
資深會員 ![]() ![]() ![]() ![]() ![]() 發表:104 回覆:600 積分:335 註冊:2006-11-05 發送簡訊給我 |
|
free8605
一般會員 ![]() ![]() 發表:3 回覆:4 積分:1 註冊:2010-03-30 發送簡訊給我 |
|
GGL
資深會員 ![]() ![]() ![]() ![]() ![]() 發表:104 回覆:600 積分:335 註冊:2006-11-05 發送簡訊給我 |
我沒用過Comm這個元件
google以下範例,input的型態是Variant [code cpp] int ByteNum; OleVariant Rxbuf; Rxbuf=MSComm2->Input; AnsiString buff_in=WideString(Rxbuf); //char buff_in[200]; strcpy(buff_in,AnsiString(WideString(Rxbuf)).c_str,length); Memo1->Lines->Add(buff_in); [/code] ===================引 用 free8605 文 章=================== 我用Memo1->Text = Comm1->Input 這樣去接收資料 現在出現的是亂碼 而我現在用的串列傳輸元件input的資料型態都是字串 我只是想成功的接收到16進制的資料,不管顯示的型態是數字還是字串 |
free8605
一般會員 ![]() ![]() 發表:3 回覆:4 積分:1 註冊:2010-03-30 發送簡訊給我 |
|
shchen
一般會員 ![]() ![]() 發表:12 回覆:27 積分:7 註冊:2003-08-13 發送簡訊給我 |
說法真是矛盾,你說你想要接收16進制的資料,卻又說input來的資料型態都是字串....
ASCII 碼是以1個byte為base,1個byte=16base的FF=10base的255,在ASCII表內33~126範圍內為可視字元,其它非可視字元就是亂碼. Memo1是文字元件,並不是16進制編輯器.假如你傳送出3A 4D 8F 共3個Byte的16進制資料後,你也想在Memo元件內看到"3A 4D 8F"共8個字元的話,那是必需自行將 byte解碼成 string. 若沒有經過解碼那麼在Memo內3A與4D都是可視字元,而8F就會變成亂碼. 例如: [code cpp] void _fastcall TMainForm::MyDecoder(unsigned char Buf[MaxBufSize],int ReceiverSize) { if(ReceiverSize>0) { UnicodeString s; for(int i=0; i s = IntToHex(Buf[i],2) " "; //將 byte 轉成str } Memo1->Text=s; } } [/code] ===================引 用 free8605 文 章=================== 我用Memo1->Text = Comm1->Input 這樣去接收資料 現在出現的是亂碼 而我現在用的串列傳輸元件input的資料型態都是字串 我只是想成功的接收到16進制的資料,不管顯示的型態是數字還是字串 |
暗黑破壞神
版主 ![]() ![]() ![]() ![]() ![]() ![]() 發表:9 回覆:2301 積分:1627 註冊:2004-10-04 發送簡訊給我 |
|
free8605
一般會員 ![]() ![]() 發表:3 回覆:4 積分:1 註冊:2010-03-30 發送簡訊給我 |
|
暗黑破壞神
版主 ![]() ![]() ![]() ![]() ![]() ![]() 發表:9 回覆:2301 積分:1627 註冊:2004-10-04 發送簡訊給我 |
我只是在感慨....
已經會寫 RS232 通訊的人,怎麼會連最基礎的資料型別都還搞不懂? char c = 48; 跟 char c = '0'; 有什麼不同? 然後 char String[] = "48"; 跟它們又有什麼不同? 這個部份是所有程式語言最前面會講的東西,您都沒搞懂,居然可以安全的玩到 RS-232 的通訊,這要驚嘆 C Builder 的強大嗎? 還是您的運氣真的很好,一直都沒有什麼 BUG 發生呢? 一年前?喔,不知道您現在是不是搞懂這些東西了。 我也好奇一年前,您是不是有把問題解決了? 如果已經解決了,應該是要結案了,而不是還一直懸置著讓人認為都一年了還沒搞懂這樣的問題吧。 ===================引 用 free8605 文 章=================== 可能問題很莫名奇妙,也可能很蠢,因為我一年前很菜。 現在看到這問題,我完全想不起來,也搞不清楚我當初想表達什麼。 但版主的回覆還是讓人覺得很不爽。 菜就不能寫程式? 你剛開始寫程式就已經功力深厚? 要看書看到理論完全理解才能寫程式? 我問問題有什麼地方態度不佳,要現在來受你這種氣? 聞道有先後,術業有專攻。 你很厲害能當版主,我也很佩服。 但你在一年前也沒有對這問題有任何幫助,現在卻來嘆氣? 我這輩子在程式方面不一定能夠達到你的水平。而在傲慢方面我就能保證永遠追不上你的腳步。 |
free8605
一般會員 ![]() ![]() 發表:3 回覆:4 積分:1 註冊:2010-03-30 發送簡訊給我 |
沒結案是我的錯,因為問題寫的莫名奇妙,所以導致沒有前輩可以幫的上忙。
但後來我應該是解決了這個問題,但因為離發問時間可能有些時日,所以忘了結案。 讓我們英明神武的版主大人看到這篇傷了您眼睛,真是不好意思。 現在還浪費您兩天的時間來放馬後炮,更加的對不起您。 但,是時候閉嘴了。卑微的菜鳥告退,希望您不要再浪費您寶貴的時間發火。應該還有其他菜鳥等著被幫不上忙的人羞辱。 ===================引 用 暗黑破壞神 文 章=================== 我只是在感慨.... 已經會寫 RS232 通訊的人,怎麼會連最基礎的資料型別都還搞不懂? char c = 48; 跟 char c = '0'; 有什麼不同? 然後 char String[] = "48"; 跟它們又有什麼不同? 這個部份是所有程式語言最前面會講的東西,您都沒搞懂,居然可以安全的玩到 RS-232 的通訊,這要驚嘆 C Builder 的強大嗎? 還是您的運氣真的很好,一直都沒有什麼 BUG 發生呢? 一年前?喔,不知道您現在是不是搞懂這些東西了。 我也好奇一年前,您是不是有把問題解決了? 如果已經解決了,應該是要結案了,而不是還一直懸置著讓人認為都一年了還沒搞懂這樣的問題吧。 ===================引 用 free8605 文 章=================== 可能問題很莫名奇妙,也可能很蠢,因為我一年前很菜。 現在看到這問題,我完全想不起來,也搞不清楚我當初想表達什麼。 但版主的回覆還是讓人覺得很不爽。 菜就不能寫程式? 你剛開始寫程式就已經功力深厚? 要看書看到理論完全理解才能寫程式? 我問問題有什麼地方態度不佳,要現在來受你這種氣? 聞道有先後,術業有專攻。 你很厲害能當版主,我也很佩服。 但你在一年前也沒有對這問題有任何幫助,現在卻來嘆氣? 我這輩子在程式方面不一定能夠達到你的水平。而在傲慢方面我就能保證永遠追不上你的腳步。
編輯記錄
free8605 重新編輯於 2011-08-23 06:53:38, 註解 無‧
|
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |