這是我的程式
Dim z_star As Boolean
Dim in_data(2) As Byte
Dim ovt As Integer 'BYTE 是位元組型 INTEGER是整型 STRING是字串型
Private Sub Form_Load()
Timer1.Enabled = False
MSComm1.InBufferSize = 40
MSComm1.InBufferCount = 0
MSComm1.InputMode = comInputModeBinary
MSComm1.CommPort = 10
MSComm1.Settings = "57600,N,8,1"
MSComm1.RThreshold = 1
MSComm1.InputLen = 0
If MSComm1.PortOpen = False Then
MSComm1.PortOpen = 1
End If
End Sub
Private Sub Check3_Click(Index As Integer) 'check控制元件按鈕
Dim dat(3) As Byte
If Check3(Index) = 1 Then
Check3(Index).Caption = "燈" & Index + 1 & "開"
dat(0) = &H0
dat(1) = &H2
Else
Check3(Index).Caption = "燈" & Index + 1 & "關"
dat(0) = &H1
dat(1) = &H3
End If
MSComm1.Output = dat
End Sub
Private Sub Command1_Click() '發送按鈕
MSComm1.Output = Text2.Text
End Sub
Private Sub Command2_Click() '清空按鈕
Text1.Text = ""
End Sub
Private Sub dispose_data() '幀處理
For i = 0 To ovt
Text1.Text = Text1.Text & Hex(in_data(i)) & " "
Next
If in_data(2) = 1 Then
Shape1(in_data(1) - 1).BackColor = &HFF00& '綠色
Else
Shape1(in_data(1) - 1).BackColor = &H8000000F
End If
End Sub
Private Sub MSComm1_OnComm()
Select Case MSComm1.CommEvent
Case comEvReceive ' 收到 RThreshold # of
xv: Dim hk As Variant
hk = MSComm1.Input
If Check2.Value = 1 Then '十六進制收數
If Check1.Value = 0 Then '幀處理
If hk(0) = &HFA Then '幀頭
z_star = True
ovt = 0
End If
If hk(0) = &HFB Then '幀尾
z_star = False
in_data(ovt) = hk(0)
Call dispose_data '收到完整的一幀后呼叫資料處理了程式
End If
If z_star = True Then
in_data(ovt) = hk(0)
ovt = ovt + 1
End If
Else
Text1.Text = Text1.Text & Hex(hk(0)) & " "
End If
Else
Text1.Text = Text1.Text & hk
End If
If MSComm1.InBufferCount <> 0 Then
GoTo xv
End If
End Select
End Sub
這是我的軟體界面

問題是單片機收不到資料,求高手看看程式哪里有問題
uj5u.com熱心網友回復:
快來個人來幫幫我吧。。。。。uj5u.com熱心網友回復:
求幫助啊!
uj5u.com熱心網友回復:
怎么沒人啊!!!uj5u.com熱心網友回復:
請貼出單片機的程式,以便校對你出錯在哪里!uj5u.com熱心網友回復:
在這里估計樓主是在單片機上接收數值型的0和1,而上位機PC發送的資料卻是字串型的“0”和“1”。因為樓主沒有貼出單片機的程式,無法校對,故樓主自己檢查一下是不是這里出錯了。uj5u.com熱心網友回復:
上位機發送的就是二進制 0 和 1:MSComm1.InputMode = comInputModeBinary
Private Sub Check3_Click(Index As Integer) 'check控制元件按鈕
Dim dat(3) As Byte
If Check3(Index) = 1 Then
Check3(Index).Caption = "燈" & Index + 1 & "開"
dat(0) = &H0
dat(1) = &H2
Else
Check3(Index).Caption = "燈" & Index + 1 & "關"
dat(0) = &H1
dat(1) = &H3
End If
MSComm1.Output = dat
End Sub
uj5u.com熱心網友回復:
樓主,你確認你使用的是串口 10 嗎?MSComm1.CommPort = 10
莫不是使用的是 U 轉串的虛擬串口?U 轉串的芯片有多種,有些在使用上會有各種問題。
uj5u.com熱心網友回復:
初學串口開發,最好使用有真實串口的臺式機。有經驗之后,再使用 U 轉串。
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/123910.html
標籤:網絡編程
