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

請問如何將PLC回應的16進位字串轉為數字

尚未結案
godspeedx10
一般會員


發表:9
回覆:25
積分:6
註冊:2002-04-22

發送簡訊給我
#1 引用回覆 回覆 發表時間:2003-10-25 10:47:59 IP:211.21.xxx.xxx 未訂閱
諸位先進大家好: 我從UDP Client送一16進位字串給PLC。 sMsg := Chr($01) Chr($FF) Chr($0A) Chr($00); UDPClient.Send(sMsg); sPLCAnswer := UDPClient.ReceiveString(-1); PLC也回一String型態的字串,我以Debug視窗看sPLCAnswer的內容如下: sPLCAnswer = '#$81#0#1#0'd#$C8'#0.....' 之類的,我知道它的回應是對的。 前面3Bytes的值分別是16進位的81h,0h,1h。 我用以下的方式嚐試把它讀出來: PT : ^Byte; //byte指標 aAnsByte : array of byte; . . PT := @sPLCAnswer aAnsByte[i] := PT^; 這種方式讀出的值都不正確,光第一Byte的值就變來變去,每次都不一樣。 用sChar := LeftStr(sPLCAnswer,1)可以取出'#$81' 但StrtoInt(sChar)出錯,說有一個'?'令它無法轉換,但哪來的'?' 請求諸位先進協助如何解析這個字串,非常感謝!
hahalin
版主


發表:295
回覆:1698
積分:823
註冊:2002-04-14

發送簡訊給我
#2 引用回覆 回覆 發表時間:2003-10-26 14:34:54 IP:211.76.xxx.xxx 未訂閱
試試delphi的內建函數 hextobin
hagar
版主


發表:143
回覆:4056
積分:4445
註冊:2002-04-14

發送簡訊給我
#3 引用回覆 回覆 發表時間:2003-10-26 17:00:10 IP:202.39.xxx.xxx 未訂閱
sPLCAnswer[1] 表 sPLCAnswer 的第 1 字元(Char) sPLCAnswer[2] 表 sPLCAnswer 的第 2 字元 ... 轉成 byte 可用 Byte(sPLCAnswer[1]) 的方式 發表人 - hagar 於 2003/10/26 17:12:43
godspeedx10
一般會員


發表:9
回覆:25
積分:6
註冊:2002-04-22

發送簡訊給我
#4 引用回覆 回覆 發表時間:2003-10-27 09:02:40 IP:211.21.xxx.xxx 未訂閱
非常感謝,原來如此。    hahalin先進的HextoBin的方式,我試不出來,不過也非常謝謝,之前並不知道有此函數。    
引言: sPLCAnswer[1] 表 sPLCAnswer 的第 1 字元(Char) sPLCAnswer[2] 表 sPLCAnswer 的第 2 字元 ... 轉成 byte 可用 Byte(sPLCAnswer[1]) 的方式 發表人 - hagar 於 2003/10/26 17:12:43
系統時間:2024-04-29 22:00:50
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!