yd031wcy
級別: 探索解密
|
圖片:
圖片:
圖片:
各位前輩好 我使用MX 控件讀取FX3S中浮點(diǎn)數(shù)遇到了一些問題,懇請前輩指導(dǎo) 1.我使用c#調(diào)用 ReadDeviceBlock2("D0",2, out arr[0])方法讀取D0中小數(shù) 為何都是16320呢 ? 2.當(dāng)DMOV k7000 D2 時 只要是用到兩個寄存器 都不對 這個應(yīng)該怎么換算呢 接受被噴 畢竟太菜了 虛心請教 |
---|---|
|
yd031wcy
級別: 探索解密
|
我試過INT16 32感覺都不對 這個好像是基礎(chǔ)知識全忘記了 可以告訴我怎么修改嗎 |
---|---|
|
不小心遇見你
自動項(xiàng)目、PLC、視覺、通訊等工控軟件開發(fā)QQ3515716
級別: 工控俠客
|
因?yàn)槟闶歉↑c(diǎn)數(shù) 轉(zhuǎn)成浮點(diǎn)數(shù)就好了 |
|
---|---|---|
|
yd031wcy
級別: 探索解密
|
short[] arr = new short[2]; float[] b = new float[arr.Length]; int rtn= com.ReadDeviceBlock2("D0",2, out arr[0]); for (int ia= 0; a < arr.Length; a++) { b[a] = (float)arr[a]; } 我這樣輸出的還是一樣的 我很懵逼 |
---|---|
|
不小心遇見你
自動項(xiàng)目、PLC、視覺、通訊等工控軟件開發(fā)QQ3515716
級別: 工控俠客
|
圖片:
暈倒 我說你那D0 D1是浮點(diǎn)數(shù) 你以整型讀出來了,所以要在二進(jìn)制上或者十六機(jī)制上轉(zhuǎn)換,不是整型轉(zhuǎn)浮點(diǎn)型 [ 此帖被030403118在2018-11-12 08:09重新編輯 ] |
|
---|---|---|
|
instanttw
級別: 探索解密
|
IEEE754:基本觀念 BitConverter.GetBytes、BitConverter.ToSingle:本問題核心,您的場合不應(yīng)使用型別轉(zhuǎn)換 Endianness、Array.Reverse:補(bǔ)充資料 |
---|---|
|
不小心遇見你
自動項(xiàng)目、PLC、視覺、通訊等工控軟件開發(fā)QQ3515716
級別: 工控俠客
|
代碼給你 拿走吧 //第一種方法: short D0 = 0; short D1 = 16320; byte[] L = System.BitConverter.GetBytes(D0); byte[] H = System.BitConverter.GetBytes(D1); byte[] f = new byte[H.Length + L.Length]; Buffer.BlockCopy(L, 0, f, 0, L.Length); Buffer.BlockCopy(H, 0, f, L.Length, H.Length); float FF = BitConverter.ToSingle(f, 0); textBox1.Text = "結(jié)果應(yīng)該是:" + FF.ToString(); //第二種方法: int HH=0; short D0 = 0; short D1 = 16320; HH |= (D1 & 0x0000ffff); HH = (HH << 16) | (D0 & 0x0000ffff); byte[] intBuff = BitConverter.GetBytes (HH); float FF = BitConverter.ToSingle(intBuff, 0); textBox1.Text = "結(jié)果應(yīng)該是:" + FF.ToString(); |
|
---|---|---|
|
yd031wcy
級別: 探索解密
|
謝謝 前輩 |
---|---|
|
yd031wcy
級別: 探索解密
|
謝謝前輩 真心非常感謝 想給你打個賞 給個途徑 |
---|---|
|
不小心遇見你
自動項(xiàng)目、PLC、視覺、通訊等工控軟件開發(fā)QQ3515716
級別: 工控俠客
|
不用了 謝謝 |
|
---|---|---|
|