作者BASG (123)
站内Visual_Basic
标题Re: [VB6 ] 用rs232传8051的值
时间Thu Oct 11 01:06:55 2007
※ 引述《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
1F:推 hillyean:谢谢啦...我改掉用timer了... 10/18 13:08