台灣最大程式設計社群網站
線上人數
1581
 
會員總數:242762
討論主題:187731
歡迎您免費加入會員
討論區列表 >> VB6 >> VB6 serialport發送與接收 RS485
[]  
[我要回覆]
回應主題 加入我的關注話題 檢舉此篇討論 將提問者加入個人黑名單
VB6 serialport發送與接收 RS485
價值 : 100 QP  點閱數:63 回應數:0

樓主

賴韋豪
門外漢
0 1
6 0
發送站內信

各位幫我解個惑

我用的是RS485轉USB modbus RTU形式

用測試軟體傳送的碼為 01 03 00 00 00 01 +2個檢查碼
接收的碼為 01 03 02 17 74 B7 93 (取17跟74用16進制轉成10進制在*0.01即為我要的值)
但我怎樣就是收不到 有出現過亂碼或是0或是收不到 不知道發送跟接收方面哪邊有問題
查過緩衝區serialport.readex
以下是我的程式碼 幫我看看哪邊有問題


Dim cmd(8) As Byte
Dim crcck(2) As Byte
Dim InByte(8) As Char
Dim i As String
Private Sub Timer3_Tick(sender As Object, e As EventArgs) Handles Timer3.Tick
If (Timer3.Interval = 100) Then '計時器計時秒數為一秒
Timer3.Interval = 1000
End If
cmd(0) = &H1
cmd(1) = &H3
cmd(2) = &H0
cmd(3) = &H0
cmd(4) = &H0
cmd(5) = &H1
crcck(2) = CRC16(cmd, 0, 6) 'CRC16檢查碼
cmd(6) = crcck(1)
cmd(7) = crcck(0)
SerialPort1.Write(cmd, 0, 8) '發送
System.Threading.Thread.Sleep(10) '延遲
If SerialPort1.BytesToRead > 0 Then
InByte(SerialPort1.BytesToRead) = New Char
i = SerialPort1.Read(InByte, 0, SerialPort1.BytesToRead)
Dim num As Integer
Dim x8 As String
For i As Integer = 0 To InByte.Length - 1
x8 = Val("&H" & InByte(4).ToString() + "&H" & InByte(5).ToString()) '選擇要轉碼的byte位子
Dim hexString8 As String
hexString8 = x8
num = Int32.Parse(hexString8, System.Globalization.NumberStyles.HexNumber) '轉碼
item1 = Math.Round((num * 0.01), 1) '計算
TextBox2.Text = item1

Next i
End If
End Sub

搜尋相關Tags的文章: [ RS485 ] , [ serialport ] , [ VB ] ,
本篇文章發表於2018-07-13 12:41
別忘捐VP感謝幫助你的人 新手會員瞧一瞧
目前尚無任何回覆
   

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