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

有關BCB傳送16進位的問題

答題得分者是:RaynorPao
JFix
一般會員


發表:2
回覆:1
積分:0
註冊:2003-02-17

發送簡訊給我
#1 引用回覆 回覆 發表時間:2003-03-06 01:26:53 IP:61.231.xxx.xxx 未訂閱
各位大大好,小弟參照文魁所出的C++ Builder與RS232一書中,傳送位元組資料的部份,以下為原程式碼: --------------------------------------------- //傳送及接收要用的陣動態列宣告   DynamicArray ByteSend,ByteReceive; long Count,i; //指定欲傳送的位元組 ByteSend.Length = mSend->Lines->Count; //將每個位元組數值(Strings)以StrToInt存至陣列中 for (i=0;iLines->Count;i ) ByteSend[i]=StrToInt(mSend->Lines->Strings[i]); Comm1->OutputByte(ByteSend);//傳送出去 Delay(100); //延遲100毫秒 //接收位元組資料,直接存進動態陣列中 ByteReceive=Comm1->ReadInputByte(); //接收的資料指定給接收陣列 for (i=0;iText=mReceive->Text IntToStr(ByteReceive[i] '\x0d' '\x0a'; ----------------------------------------------------------- 但是由於小弟目前所要傳送的指令為16進位的 且照書上所指示將程式碼改成: --------------------------------------------------------- byte ByteSend[1]; ByteSend[0] = 0x90; Comm1->OutputByte(ByteSend);//傳送出去 --------------------------------------------------------- 但是卻出現下列的錯誤訊息: Cannot convert 'unsigned char *'to 'DynamicArray char>' 和Type mismatch in parameter 'ByteData' (wanted 'const DynamicArray', got 'unsigned char *') 想請問一下這個問題是出在哪裡?? 應該要如何解決呢?? 或者是有更好的辦法可以用來傳送位元組的資料呢? 謝謝各位撥空看完此篇文章~~~ 發表人 - JFix 於 2003/03/06 01:39:23
RaynorPao
版主


發表:139
回覆:3622
積分:7025
註冊:2002-08-12

發送簡訊給我
#2 引用回覆 回覆 發表時間:2003-03-06 08:24:09 IP:203.73.xxx.xxx 未訂閱
引言: 各位大大好,小弟參照文魁所出的C Builder與RS232一書中,傳送位元組資料的部份,以下為原程式碼: --------------------------------------------- //傳送及接收要用的陣動態列宣告 DynamicArray ByteSend,ByteReceive; long Count,i; //指定欲傳送的位元組 ByteSend.Length = mSend->Lines->Count; //將每個位元組數值(Strings)以StrToInt存至陣列中 for (i=0;iLines->Count;i ) ByteSend[i]=StrToInt(mSend->Lines->Strings[i]); Comm1->OutputByte(ByteSend);//傳送出去 Delay(100); //延遲100毫秒 //接收位元組資料,直接存進動態陣列中 ByteReceive=Comm1->ReadInputByte(); //接收的資料指定給接收陣列 for (i=0;iText=mReceive->Text IntToStr(ByteReceive[i] '\x0d' '\x0a'; ----------------------------------------------------------- 但是由於小弟目前所要傳送的指令為16進位的 且照書上所指示將程式碼改成: --------------------------------------------------------- byte ByteSend[1]; ByteSend[0] = 0x90; Comm1->OutputByte(ByteSend);//傳送出去 --------------------------------------------------------- 但是卻出現下列的錯誤訊息: Cannot convert 'unsigned char *'to 'DynamicArray char>' 和Type mismatch in parameter 'ByteData' (wanted 'const DynamicArray', got 'unsigned char *') 想請問一下這個問題是出在哪裡?? 應該要如何解決呢?? 或者是有更好的辦法可以用來傳送位元組的資料呢? 謝謝各位撥空看完此篇文章~~~
JFix 你好: 醬子呢?? < class="code"> DynamicArray ByteSend; ByteSend.Length = 1; ByteSend[0] = 0x90; Comm1->OutputByte(ByteSend); -- Enjoy Researching & Developing --
------
-- 若您已經得到滿意的答覆,請適時結案!! --
-- 欲知前世因,今生受者是;欲知來世果,今生做者是 --
-- 一切有為法,如夢幻泡影,如露亦如電,應作如是觀 --
JFix
一般會員


發表:2
回覆:1
積分:0
註冊:2003-02-17

發送簡訊給我
#3 引用回覆 回覆 發表時間:2003-03-06 14:05:08 IP:61.231.xxx.xxx 未訂閱
再請問一下,如果我一次是要傳4個byte的資料的話 是不是可以寫成這樣:                  DynamicArray ByteSend; ByteSend.Length = 4; ByteSend[0] = 0x80; ByteSend[1] = 0xC4; ByteSend[2] = 0x18; ByteSend[3] = 0x00; Comm1->OutputByte(ByteSend);
taishyang
站務副站長


發表:377
回覆:5490
積分:4563
註冊:2002-10-08

發送簡訊給我
#4 引用回覆 回覆 發表時間:2003-03-06 14:38:42 IP:140.135.xxx.xxx 未訂閱
JFix您好:    
引言: 再請問一下,如果我一次是要傳4個byte的資料的話 是不是可以寫成這樣: DynamicArray ByteSend; ByteSend.Length = 4; ByteSend[0] = 0x80; ByteSend[1] = 0xC4; ByteSend[2] = 0x18; ByteSend[3] = 0x00; Comm1->OutputByte(ByteSend);
雖然答案就如同您所說的,但您試試不就馬上能知道結果了嗎 ?? 順心 發表人 -
bt1
一般會員


發表:38
回覆:14
積分:10
註冊:2003-06-26

發送簡訊給我
#5 引用回覆 回覆 發表時間:2003-08-13 16:58:00 IP:140.124.xxx.xxx 未訂閱
你好.. 我用你給的 DynamicArray ByteSend; ByteSend.Length = 4; ByteSend[0] = 0x01; ByteSend[1] = 0x03; ByteSend[2] = 0x0c; ByteSend[3] = 0x00; Comm1->OutputByte(ByteSend); 但是我設計另一按鈕去接收: void __fastcall TForm1::Button3Click(TObject *Sender) { ByteRead=Comm1->ReadInputByte(); } 但是接到\01 \03 \f後面就沒了.. 可否請教一下要如何接收16進制的資料?
系統時間:2024-04-27 4:18:40
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!