台灣最大程式設計社群網站
線上人數
613
 
會員總數:245794
討論主題:189426
歡迎您免費加入會員
討論區列表 >> VB6 >> RS232接收十六進制轉換
[]  
[我要回覆]
1
回應主題 加入我的關注話題 檢舉此篇討論 將提問者加入個人黑名單
RS232接收十六進制轉換
價值 : 40 QP  點閱數:508 回應數:14
樓主

小李
門外漢
0 6
118 23
發送站內信

從系統中取出回傳值共8個值獨立但是需要的值只有buffer3~buffer6需要使用
分別為00 C4 0B F6 個別為十六進制
該怎麼再重新組合起來從十六進制轉成十進制成為12848118
RS232.Read(Buffer, 0, 9)
TextR1.Text = Hex(Buffer(0))

TextR2.Text = Hex(Buffer(1))

TextR3.Text = Hex(Buffer(2))

TextR4.Text = Hex(Buffer(3)) 'v1

TextR5.Text = Hex(Buffer(4)) 'v2

TextR6.Text = Hex(Buffer(5)) 'v3

TextR7.Text = Hex(Buffer(6)) 'v4

TextR8.Text = Hex(Buffer(7))

TextR9.Text = Hex(Buffer(8))




搜尋相關Tags的文章: [ RS232 ] ,
本篇文章發表於2019-07-31 08:59
1樓
回應

P陳
檢舉此回應
類似
Ans=0
for ii=3 to 5
ans= ans * 256 + buffer(ii)
next
ans=ans+ buffer(6)
本篇文章回覆於2019-07-31 09:48
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
2樓
作者回應

小李
檢舉此回應
謝謝
還有個問題如0x00 跟0x0A從TextR1.Text
顯示出來是 0跟A該如何修改可以顯示00或0A
本篇文章回覆於2019-07-31 20:26
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
3樓
回應

P陳
檢舉此回應
159.tostring("X2")="9F"
10.tostring("X2")="0A"
0.tostring("X2")="00"
本篇文章回覆於2019-08-01 06:13
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
4樓
作者回應

小李
檢舉此回應
你好問題解決
可以再幫忙看一下問題出在哪
Dim right As String
Dim left As String
Dim Dinary As Integer
Dim dataout As String
Dinary = TextBox2.Text
dataout = Convert.ToString(Dinary, 2).PadLeft(8, "0")
TextBox3.Text = dataout
left = Convert.ToInt32((dataout).Substring(0, 4))
right = Convert.ToInt32(dataout.Substring(4))
TextBox4.Text = (left.PadLeft(4, "0"))
TextBox5.Text = (right.PadLeft(4, "0"))
Dinary為輸入十進位值例如為54
TextBox3.Text輸出為00110110
再取出高低4位元
TextBox4.Text輸出0011
TextBox5.Text輸出0110
但是要將TextBox4.Text和TextBox5.Text
轉為十六進制都錯誤
我適用Hex()指令
該如何修改

謝謝

本篇文章回覆於2019-08-03 22:32
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
5樓
回應

P陳
檢舉此回應
錯誤的訊息是什麼?
TextBox4.Text輸出0011
TextBox5.Text輸出0110
但是要將TextBox4.Text和TextBox5.Text 轉為十六進制都錯誤 <---- 是2轉16出錯嗎?
本篇文章回覆於2019-08-04 06:24
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
6樓
作者回應

小李
檢舉此回應
對要把TextBox4.Text和TextBox5.Text轉時十六進制
TextBox6.Text=Hex(TextBox4.Text)
TextBox7.Text=Hex(TextBox5.Text)

出現錯誤
嚴重性 程式碼 說明 專案 檔案 行 隱藏項目狀態
錯誤 BC30311 類型 'String' 的值無法轉換成 'TextBox'。 LoopTest
本篇文章回覆於2019-08-04 15:50
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
7樓
回應

P陳
檢舉此回應
程式可以全部PO上來嗎?

看錯誤訊息您是如下寫的嗎?
TextBox6=Hex(TextBox4.Text)<-- 這是不行的 (Textbox6.text 才可以)
本篇文章回覆於2019-08-04 16:21
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
8樓
作者回應

小李
檢舉此回應
完整程式
Dim right As String
Dim left As String
Dim Dinary As Integer
Dim dataout As String
Dinary = TextBox2.Text
dataout = Convert.ToString(Dinary, 2).PadLeft(8, "0")
TextBox3.Text = dataout

left = Convert.ToInt32((dataout).Substring(0, 4))
right = Convert.ToInt32(dataout.Substring(4))
TextBox4.Text = (left.PadLeft(4, "0"))

TextBox5.Text = (right.PadLeft(4, "0"))

TextBox6 = Hex(TextBox4.Text)
TextBox7 = Hex(TextBox5.Text)
本篇文章回覆於2019-08-04 17:03
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
9樓
作者回應

小李
檢舉此回應
完整程式
Dim right As String
Dim left As String
Dim Dinary As Integer
Dim dataout As String
Dinary = TextBox2.Text
dataout = Convert.ToString(Dinary, 2).PadLeft(8, "0")
TextBox3.Text = dataout

left = Convert.ToInt32((dataout).Substring(0, 4))
right = Convert.ToInt32(dataout.Substring(4))
TextBox4.Text = (left.PadLeft(4, "0"))

TextBox5.Text = (right.PadLeft(4, "0"))

TextBox6.Text = Hex(TextBox4.Text)
TextBox7.Text = Hex(TextBox5.Text)

TextBox6.Text 輸出B
TextBox7.Text 輸出6E
兩值都不正確
本篇文章回覆於2019-08-04 17:27
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
10樓
回應

P陳
檢舉此回應
1.跟您 6F 講的問題不一樣了
2.10進位的 11 是 B沒有錯
10進位的 110 是 6E 也沒有錯
本篇文章回覆於2019-08-04 23:09
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
11樓
作者回應

小李
檢舉此回應
所以TextBox3.Text輸出為00110110
再取出高低4位元
TextBox4.Text輸出0011
TextBox5.Text輸出0110

所取出的高低4位元是十進制並非2進制?
本篇文章回覆於2019-08-05 00:16
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
12樓
回應

P陳
檢舉此回應
電腦中沒有二進 十進 八進 16進的問題 全部是二進制 在輸出時才會轉換

0011(2)=3
0011(10)=11 ==> B
0011(8)= 9
0011(16)= 17


本篇文章回覆於2019-08-05 06:50
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
13樓
作者回應

小李
檢舉此回應
非常感謝
了解
謝謝
本篇文章回覆於2019-08-05 17:58
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
14樓
回應

P陳
檢舉此回應
如果沒有問題了請將討論串關掉
本篇文章回覆於2019-08-05 21:01
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
   
1

回覆
如要回應,請先登入.