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

用Com Port接收16進制的資料

缺席
free8605
一般會員


發表:3
回覆:4
積分:1
註冊:2010-03-30

發送簡訊給我
#1 引用回覆 回覆 發表時間:2010-06-18 19:03:25 IP:140.125.xxx.xxx 訂閱
不知道放在這個討論區對不對,不過還請會的前輩們教導一下

我之前用BCB經過RS232的方式接收到的資料都是ASCII碼的資料

現在接收16進制的資料才發現都出來亂碼

請問有什麼方法可以接收16進制的資料嗎
GGL
資深會員


發表:104
回覆:600
積分:335
註冊:2006-11-05

發送簡訊給我
#2 引用回覆 回覆 發表時間:2010-06-19 11:43:33 IP:122.116.xxx.xxx 未訂閱
你怎麼顯示你接收到的hex?你是顯示成0x00~0xFF,還是你轉成char或string了?
free8605
一般會員


發表:3
回覆:4
積分:1
註冊:2010-03-30

發送簡訊給我
#3 引用回覆 回覆 發表時間:2010-06-19 12:39:35 IP:140.125.xxx.xxx 訂閱
我用Memo1->Text = Comm1->Input 這樣去接收資料

現在出現的是亂碼

而我現在用的串列傳輸元件input的資料型態都是字串

我只是想成功的接收到16進制的資料,不管顯示的型態是數字還是字串
GGL
資深會員


發表:104
回覆:600
積分:335
註冊:2006-11-05

發送簡訊給我
#4 引用回覆 回覆 發表時間:2010-06-19 20:57:35 IP:122.116.xxx.xxx 未訂閱
我沒用過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

發送簡訊給我
#5 引用回覆 回覆 發表時間:2010-06-20 17:25:34 IP:140.125.xxx.xxx 訂閱
不知道是我MSCOM設定錯還是怎樣

出來的還是亂碼
shchen
一般會員


發表:12
回覆:27
積分:7
註冊:2003-08-13

發送簡訊給我
#6 引用回覆 回覆 發表時間:2011-08-22 10:12:11 IP:116.6.xxx.xxx 未訂閱
說法真是矛盾,你說你想要接收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

發送簡訊給我
#7 引用回覆 回覆 發表時間:2011-08-22 11:48:10 IP:111.242.xxx.xxx 未訂閱
這樣都能寫程式????
唉.......

想想看什麼是 char 什麼是 data 什麼是 ASCII 什麼是字串....什麼是 '0' ~ '9', 'A', 'a' ~ 'Z', 'z' 再來看你的問題吧。

===================引 用 free8605 文 章===================
不知道是我MSCOM設定錯還是怎樣

出來的還是亂碼
編輯記錄
暗黑破壞神 重新編輯於 2011-08-21 21:48:39, 註解 無‧
free8605
一般會員


發表:3
回覆:4
積分:1
註冊:2010-03-30

發送簡訊給我
#8 引用回覆 回覆 發表時間:2011-08-22 21:24:40 IP:123.240.xxx.xxx 訂閱
可能問題很莫名奇妙,也可能很蠢,因為我一年前很菜。

現在看到這問題,我完全想不起來,也搞不清楚我當初想表達什麼。

但版主的回覆還是讓人覺得很不爽。

菜就不能寫程式? 你剛開始寫程式就已經功力深厚? 要看書看到理論完全理解才能寫程式?

我問問題有什麼地方態度不佳,要現在來受你這種氣?

聞道有先後,術業有專攻。 你很厲害能當版主,我也很佩服。

但你在一年前也沒有對這問題有任何幫助,現在卻來嘆氣?

我這輩子在程式方面不一定能夠達到你的水平。而在傲慢方面我就能保證永遠追不上你的腳步。
暗黑破壞神
版主


發表:9
回覆:2301
積分:1627
註冊:2004-10-04

發送簡訊給我
#9 引用回覆 回覆 發表時間:2011-08-23 00:21:32 IP:111.242.xxx.xxx 未訂閱
我只是在感慨....
已經會寫 RS232 通訊的人,怎麼會連最基礎的資料型別都還搞不懂?
char c = 48;

char c = '0';
有什麼不同?

然後 char String[] = "48"; 跟它們又有什麼不同?

這個部份是所有程式語言最前面會講的東西,您都沒搞懂,居然可以安全的玩到 RS-232 的通訊,這要驚嘆 C Builder 的強大嗎?
還是您的運氣真的很好,一直都沒有什麼 BUG 發生呢?

一年前?喔,不知道您現在是不是搞懂這些東西了。
我也好奇一年前,您是不是有把問題解決了?
如果已經解決了,應該是要結案了,而不是還一直懸置著讓人認為都一年了還沒搞懂這樣的問題吧。

===================引 用 free8605 文 章===================
可能問題很莫名奇妙,也可能很蠢,因為我一年前很菜。

現在看到這問題,我完全想不起來,也搞不清楚我當初想表達什麼。

但版主的回覆還是讓人覺得很不爽。

菜就不能寫程式? 你剛開始寫程式就已經功力深厚? 要看書看到理論完全理解才能寫程式?

我問問題有什麼地方態度不佳,要現在來受你這種氣?

聞道有先後,術業有專攻。 你很厲害能當版主,我也很佩服。

但你在一年前也沒有對這問題有任何幫助,現在卻來嘆氣?

我這輩子在程式方面不一定能夠達到你的水平。而在傲慢方面我就能保證永遠追不上你的腳步。
free8605
一般會員


發表:3
回覆:4
積分:1
註冊:2010-03-30

發送簡訊給我
#10 引用回覆 回覆 發表時間:2011-08-23 20:50:37 IP:123.240.xxx.xxx 訂閱
沒結案是我的錯,因為問題寫的莫名奇妙,所以導致沒有前輩可以幫的上忙。

但後來我應該是解決了這個問題,但因為離發問時間可能有些時日,所以忘了結案。

讓我們英明神武的版主大人看到這篇傷了您眼睛,真是不好意思。

現在還浪費您兩天的時間來放馬後炮,更加的對不起您。

但,是時候閉嘴了。卑微的菜鳥告退,希望您不要再浪費您寶貴的時間發火。應該還有其他菜鳥等著被幫不上忙的人羞辱。

===================引 用 暗黑破壞神 文 章===================
我只是在感慨....
已經會寫 RS232 通訊的人,怎麼會連最基礎的資料型別都還搞不懂?
char c = 48;

char c = '0';
有什麼不同?

然後 char String[] = "48"; 跟它們又有什麼不同?

這個部份是所有程式語言最前面會講的東西,您都沒搞懂,居然可以安全的玩到 RS-232 的通訊,這要驚嘆 C Builder 的強大嗎?
還是您的運氣真的很好,一直都沒有什麼 BUG 發生呢?

一年前?喔,不知道您現在是不是搞懂這些東西了。
我也好奇一年前,您是不是有把問題解決了?
如果已經解決了,應該是要結案了,而不是還一直懸置著讓人認為都一年了還沒搞懂這樣的問題吧。

===================引 用 free8605 文 章===================
可能問題很莫名奇妙,也可能很蠢,因為我一年前很菜。

現在看到這問題,我完全想不起來,也搞不清楚我當初想表達什麼。

但版主的回覆還是讓人覺得很不爽。

菜就不能寫程式? 你剛開始寫程式就已經功力深厚? 要看書看到理論完全理解才能寫程式?

我問問題有什麼地方態度不佳,要現在來受你這種氣?

聞道有先後,術業有專攻。 你很厲害能當版主,我也很佩服。

但你在一年前也沒有對這問題有任何幫助,現在卻來嘆氣?

我這輩子在程式方面不一定能夠達到你的水平。而在傲慢方面我就能保證永遠追不上你的腳步。
編輯記錄
free8605 重新編輯於 2011-08-23 06:53:38, 註解 無‧
系統時間:2024-04-19 22:05:09
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!