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

RS-232傳輸格式?字串加16進位

答題得分者是:RaynorPao
show
初階會員


發表:57
回覆:48
積分:31
註冊:2003-05-24

發送簡訊給我
#1 引用回覆 回覆 發表時間:2004-02-20 11:55:22 IP:220.138.xxx.xxx 未訂閱
各位大大~ 我需要寫一個程式透過RS-232跟無線電溝通 我查閱BCB那本RS-232的書,和參考本站一些元件(MSComm) 首先那本書說到因為都是win32,所以傳輸出去都是Bin格式 他這意思是不是這部分是OS負責,所以我不用去care 我只要Output出去丟給無線電,他自然就會看的懂 是因為透過API傳送所以不用care? 但MSComm這篇(http://delphi.ktop.com.tw/topic.php?topic_id=35644) 說到這元件無法傳送Bin,但又可以透過AnsiString辦到... 所以我混亂了....Bin是在哪一部份做的? 另外我需要傳輸"你好嗎"三個中文 然後後面需加上四個90h當作結束 我該怎合併起來傳輸出去,因為和無線電溝通是以90h當結束
RaynorPao
版主


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

發送簡訊給我
#2 引用回覆 回覆 發表時間:2004-02-20 20:30:18 IP:61.221.xxx.xxx 未訂閱
引言: 各位大大~ 我需要寫一個程式透過RS-232跟無線電溝通 我查閱BCB那本RS-232的書,和參考本站一些元件(MSComm) 首先那本書說到因為都是win32,所以傳輸出去都是Bin格式 他這意思是不是這部分是OS負責,所以我不用去care 我只要Output出去丟給無線電,他自然就會看的懂 是因為透過API傳送所以不用care? 但MSComm這篇(http://delphi.ktop.com.tw/topic.php?topic_id=35644) 說到這元件無法傳送Bin,但又可以透過AnsiString辦到... 所以我混亂了....Bin是在哪一部份做的? 另外我需要傳輸"你好嗎"三個中文 然後後面需加上四個90h當作結束 我該怎合併起來傳輸出去,因為和無線電溝通是以90h當結束
show 你好:
(1)建議你先做一個小小的實驗,請參考以下的範例程式碼
    sz="你好嗎">Size=sz.Length();
   ms->Write(&sz[1], ms->Size);
   ms->SaveToFile("test.dat");
   delete ms;
(2)執行完成以後,會產生一個檔案「test.dat」,以 UltraEdit 打開這個檔案
   ,切換到 Hex (16 進位) 模式看看,檔案內容應該會像以下這個樣子
   A7 41 A6 6E B6 DC 90 90 90 90
(3)看到這裡是否已經有所聯想了呢?其實不管是任何資料,即使是字串也好,
   對電腦而言是不具有任何意義的,因為實際的儲存,都會是 Binary 串流,
   那為什麼我們會看到「你好嗎」字串,而不是看到十六進位的資料呢?那是
   因為作業系統已經自動幫我們轉換成字串了 (每個英文、中文字都有相對應
   的字碼,只要是作業系統認得的字碼,就會自動轉換顯示成人看得懂的字串)
(4)以上的範例程式碼執行後的結果,會在原來的字串後面加上 4 個 0x90,也
   就是你希望的格式,所以~~直接在最後把 sz 字串傳送即可
(5)請再依照自己的需求做修改
-- Enjoy Researching & Developing --
------
-- 若您已經得到滿意的答覆,請適時結案!! --
-- 欲知前世因,今生受者是;欲知來世果,今生做者是 --
-- 一切有為法,如夢幻泡影,如露亦如電,應作如是觀 --
系統時間:2024-05-01 22:04:45
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!