如題。。求幫忙啊 VB和單片機通訊的時候,單片機發送資料給VB
uj5u.com熱心網友回復:
通訊的協議?資料的格式?VB接收、顯示的代碼?uj5u.com熱心網友回復:
VB的程式在這
Private Sub Command1_Click()
If MSComm1.PortOpen = False Then MSComm1.PortOpen = True: Shape1.FillColor = 255
End Sub
Private Sub Command3_Click()
If MSComm1.PortOpen = True Then
MSComm1.Output = Text1.Text
End If
End Sub
Private Sub Timer1_Timer()
If MSComm1.PortOpen = True And MSComm1.InBufferCount <> 0 Then
Text3.Text = MSComm1.Input
Text2.Text = Text2.Text & " " & Text3.Text
End If
End Sub
uj5u.com熱心網友回復:
那要看單片機發送的是什么。如果是可列印字符,試試
Dim tmp As Variant
tmp = MSComm1.Input
Text3.Text = StrConv(tmp, vbUnicode)
Text2.Text = Text2.Text & " " & Text3.Text
如果是任意的二進制數,試試:
Dim tmp As Variant, i As integer
tmp = MSComm1.Input
Text3 = ""
For i = 0 To Ubound(tmp)
Text3 = Text3 & Right("0" & Hex(tmp), 2)
Next i
Text2.Text = Text2.Text & " " & Text3.Text
uj5u.com熱心網友回復:
單片機發送的是if(P2_4==0)
{ SBUF=ge;
while(!TI);
TI=0;
}
uj5u.com熱心網友回復:
ge 的值是什么?uj5u.com熱心網友回復:
0X**;;**這個隨便都行uj5u.com熱心網友回復:
通訊的協議?包括波特率、校驗位等,MSComm 控制元件的屬性設定是否相符。
資料的格式?
文本方式還是二進制方式?MSComm 控制元件的屬性設定是否相符。
欄位之間如何切割?
舉例說明資料和你期望顯示的結果。
uj5u.com熱心網友回復:
你這肯定要按任意二進制值來顯示了。計算機字符的編碼是有規定的,例如西文的“可列印字符”的編碼只包含 0x20 以上的一部分“已定義”的數,具體有哪些還要看選用的字庫。
你這里是 0x00 - 0xFF 顯然有大量非可列印字符了。你按后面的方法,將發送上來的資料以十六進制字串的方式來顯示。
uj5u.com熱心網友回復:
我用了你后面的方法,顯示的是?、-這些型別,我就想把接收到的資料用十進制在文本框里顯示出來
uj5u.com熱心網友回復:
你單片機發出的是什么格式的資料?二進制還是十進制啊
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/116782.html
標籤:VB基礎類
