作者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
1F:→ BASG:你给的网址中只有提到送data给51,没有从51收data的code 11/21 00:26
2F:→ BASG:我上面的写法是指当51送data给PC时的处理方式 11/21 00:27
3F:→ CuckooBoy:喔~有啦只是这网址的图怪怪的 11/21 12:56
4F:→ CuckooBoy:他的VB CODE里也是送一个字元给 51的样子说 11/21 12:57
5F:→ BASG:不好意思,我真的找不到,你要不要直接PO它的Code上来 11/22 00:58
6F:→ BASG:你提到送一个字元给51--但我指的是51丢给PC 不知是否有误解 11/22 00:58