RS-232傳輸格式?字串加16進位 |
答題得分者是:RaynorPao
|
show
初階會員 發表:57 回覆:48 積分:31 註冊:2003-05-24 發送簡訊給我 |
各位大大~
我需要寫一個程式透過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 發送簡訊給我 |
引言: 各位大大~ 我需要寫一個程式透過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 --
------
-- 若您已經得到滿意的答覆,請適時結案!! -- -- 欲知前世因,今生受者是;欲知來世果,今生做者是 -- -- 一切有為法,如夢幻泡影,如露亦如電,應作如是觀 -- |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |