看板 Visual_Basic 關於我們 聯絡資訊
※ 引述《hillyean (醜男大作戰)》之銘言: 小弟提供一下挫見.... : 我想問一下,8051傳到電腦的值是字串嗎?那要怎麼打 : Dim buf As String : Private Sub Form_Load() : MSComm1.CommPort = 1 : MSComm1.Settings = "9600,N,8,1" Baud Rate要先確定和8051所設定的是一樣的 : MSComm1.InputMode = comInputModeBinary : MSComm1.PortOpen = True : End Sub : Private Sub Timer1_Timer() : buf = MSComm1.Input : Text1.Text = buf : End Sub 這一段怪怪的,我猜你問題有可能出在這 8051和PC com port溝通一般是用它的UART Port,這個的Protocol 基本上和RS-232一樣,只有voltage level不同,所以一定要加上level shift ic 既然protocol一樣,基本上是用MSComm的 on_comm event去處理所接到的data 只要MSComm1.Input收到一個byte的data他就會觸發這個事件 你用timer設時間去收怪怪的-你固定時間去確認有沒有收到,應該不會很準 語法大約如下..... Private Sub MSComm1_OnComm() Select Case MSComm1.CommEvent Case comEvReceive ............ 再加上你要把接到的data丟去那 : 這是我的程式...這樣有錯嗎?為什麼我出現的都是問號! : 不是我要的值,還有就是是MScomm1的屬性表要怎麼設定,有哪些要改? : 謝謝... 有一些細節要注意的是-8051是只管0 1這樣丟,但是這8 Bits的data組合起來 不見得是ASCII Code中的可顯示字元...這時你會發現你收到的是空字元 不過你收到的是問號我比較不解 可能要去對一下8051的Code 收到?號表示51丟出來的是「?」給你 也就是8051丟出來的BYTE是 3F 基本上如果8051丟出來的不是ASCII中的可顯示字元的話,你是收不到的 這時要在8051將DATA丟出前做一些處理,將他轉成可顯示字元再丟 VB收到後再收一段程式式自已轉回你要的Data 希望有幫到你.. -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 211.74.165.163
hillyean:謝謝啦...我改掉用timer了... 10/18 13:08