Keil C51实现单片机与PC串口(上位机)vb如何编写

想编写一个c51与pc串口通讯利用vb如何编写,请说明需要了解哪方面的知识或提供可参考的源代码和操作步骤!解决后可追加高分!谢谢高手们。... 想编写一个 c51与pc串口通讯 利用vb如何编写,请说明需要了解哪方面的知识 或 提供可参考的源代码和操作步骤!
解决后可追加高分! 谢谢高手们。
展开
 我来答
hhu月光大侠
推荐于2016-07-21 · 测测控控-CPU/PLC/传感器
hhu月光大侠
采纳数:303 获赞数:1997

向TA提问 私信TA
展开全部
.
实现你讲的功能,必须用VB中的MSComm控件

MSComm 控件有很多重要的属性,在开始使用MSComm控件之前。需要先了解其属性、事件或错误。

属性 描述
CommPort 设置或返回通信端口号
Settings 以字符串的形式设置或返回波特率、奇偶校验、数据位和停止位
PortOpen 设置或返回通信端口的状态。也可以打开和关闭端口
Input 返回和删除接收缓冲区中的字符
Output 将字符串写入发送缓冲区

CommEvent 属性为通信事件或错误返回下列值之一。在该控件的对象库中也可以找到这些常量。
有关具体的描述,找相应的教材仔细看吧。

VB.的MSComm通信控件提供了一系列标准通信命令的接口,它允许建立串口连接,可以连接到其他通信设备(如Modem).还可以发送命令、进行数据交换以及监视和响应在通信过程中可能发生的各种错误和事件,从而可以用它创建全双工 、事件驱动的、高效实用的通信程序。但在实际通信软件设计过程中,MSComm控件并非像想像中那样完美和容易控制.。

一般悦来,计算机都有一个或多个串行端口,它们依次为com1、Com2、…,这些串口还提供了外部设备与pC进行数据传输和皿信的通道。这些串口在CPU和外设之间充当解释器的角色。当字符数据从CPU发送给外设时,这些字符数据将被转换成串行比特流数据;当接收数据时,比特流数据被转换为字符数据传递给CPU,再进一步说,在操作系统方面,Windows用通信驱动程序(COMM.DRV)调用API函数发送和接收数据,当用通信控件或声明调用API函数时,它门由COMM. DRV解释并传递给设备驱动程序,作为一个vB程序员,要编写通信程序.只需知道通信控件提供给Windows通信AP1函数的接口即可.换句话说,只需设定和监视通信控件的属性和事件即可。

MSComm控件提供了两种处理通信的方法:

1.事件驱动通信,是一种功能很强的处理串口活动的方法。在大多数情况下,用户需要获知事件发生的时间,例如,在CD(Carrier Detect)线或RTS(Request To Send)线上有字符到达或发生了改变等。在这种情况下,使用MSComm控件的OnComm事件捕获和处理这些通信事件。OnComm也可以捕获和处理通信中的错误。要获取所有事件和通信错误的完整清单,参阅CommEvent属性。

2.程序员也可以在每个重要的程序功能之后检查CommEvent属性的值来检测事件和通信错误。这对小的自含程序可能比较常用。例如,如果编写一个简单的电话拨号程序,那么在接收了每个字符后都产生一个事件并没有意义,因为你只打算从调制解调器中接收OK响应信息。
使用的每个MSComm控件都与一个串口对应。如果在应用程序中需要访问多个串口,必须使用多个MSComm控件。可以在Windows 控制面板中修改串口地址的中断地址。

用Mscomm控件 编写通信程序

在VB中新建一个工程文件。
添加Microsoft Comm Control 组件,
在简体Form1中加入Command命令按钮并取名为CmdTest,MSComm控件取名为SComm1,加入如下程序代码。

Private Sub cmdTestClick ( ) '打开串口
MSComml.CommPort =2 '设定Com2
If MSComml.PortOpen = False Then
MSComm1.Settings = "9600,n,8,1" '9600波特率,无校验,8位数据位,1位停止位
MSComm1.PortOpen = True '打开串口
End if
MSComm1.OutBufferCount = 0 '清空发送缓冲区
MSComm1.InBufferCount = 0 '滑空接收缓冲区
'发送字符数据时注意必须用回车符(vbcr)结束
MSComm1.Output="This is a qood book ! " &vbCr
'泼打电话号码或发送AT命令
MSComm1.Output = "ATDT 05778191898 , & vbCr
'发送字符数组数据时注意ByteArray必须事先定义赋值
Dim ByteArray as byte( )
'定义动态数组
ReDim ByteArray(1)
'重定义数组大小
ByteArray ( 0 ) =0
ByteArray ( 1 ) = 1
MSComm1.Output = ByteArray
End Sub
private Sub MScommEvent( )
Select Case MSComm1.CommEvent
Case comEvReceive
Dim Buffer As Variant
MSComm1.InputLen = 0
'接收二进制数据
MSComm1.InputMode= ComInputModeBinary
Buffer=MSComm1.Input
'接收字符数据
MSComm1.InputMode=comInputModeText
Buffer = MSComml.Input
Case else
End Select
End sub
wolf_lhy
2013-07-17 · TA获得超过6609个赞
知道大有可为答主
回答量:1090
采纳率:66%
帮助的人:550万
展开全部
VB有个ActiveX 控件,叫 MSCOMM,利用这个控件,可以进行串口通信,这是最常用的方法,另外还有API函数法,不过不适合初学者使用。

你去百度文库里搜索 VB MSCOMM,里面有很多前辈高人的经验总结,都很详细,你可以自学,很简单的。

我推荐你先看这个,然后再看其他的资料。
http://wenku.baidu.com/view/c081a5a5b0717fd5360cdc81.html
本回答被提问者和网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式