推 hillyean:謝謝啦...我改掉用timer了... 10/18 13:08
※ 引述《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