作者CuckooBoy (書仔)
看板Visual_Basic
標題Re: [VB6 ] 用rs232傳8051的值
時間Tue Nov 20 23:22:48 2007
※ 引述《BASG (123)》之銘言:
: ※ 引述《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
: 希望有幫到你..
請問一下
為什麼您的寫的方式.....
後面跟這網指寫得有一點不同
網頁上看到的程式好少.....
http://myurl.com.tw/8un2
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 123.195.0.12
→ BASG:你給的網址中只有提到送data給51,沒有從51收data的code 11/21 00:26
→ BASG:我上面的寫法是指當51送data給PC時的處理方式 11/21 00:27
→ CuckooBoy:喔~有啦只是這網址的圖怪怪的 11/21 12:56
→ CuckooBoy:他的VB CODE裡也是送一個字元給 51的樣子說 11/21 12:57
→ BASG:不好意思,我真的找不到,你要不要直接PO它的Code上來 11/22 00:58
→ BASG:你提到送一個字元給51--但我指的是51丟給PC 不知是否有誤解 11/22 00:58