没有合适的资源?快使用搜索试试~ 我知道了~
.net 版rs232 原代码
4星 · 超过85%的资源 需积分: 10 142 下载量 151 浏览量
2008-01-14
14:54:01
上传
评论
收藏 4.73MB DOC 举报
温馨提示
试读
64页
书中的rs232控件,可以直接用在自己的项目中,我有的项目就是这么用。调用mscommn和第三方控件,没有这个自由度大。
资源推荐
资源详情
资源评论
第 5 章 串行通信类的创建及使用
5.1 类 的 基 础
5.1.1 类的组成
创建类必须使用 Class 语句,这个语句的格式如下:
[ <attrlist> ] [ Public | Private | Protected | Friend |
Protected Friend ] [ Shadows ] [ MustInherit | NotInheritable ] _
Class name
[ Inherits classname ]
[ Implements interfacenames ]
[ statements ]
End Class
看看之前使用可视化的类建构出来的窗体。窗体提供了一个相当直观的界面给用户,
双击窗体的任一处,进入到程序代码编辑环境后,可以看到程序代码如下 (它是类格式的
简化版):
Public Class Form1
Inherits System.Windows.Forms.Form
⊕" Windows Form 设计工具产生的程序代码 "
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles MyBase.Load
End Sub
End Class
184
在上述的程序里,以 Public Calss Form1 及 End Class 所包围的区域就是类 Form1 的
全部内容。其中的 Form1 表示这个类的名称,所有的程序编写只能在这个区域进行,包
括后面将提到的属性、方法、事件等的程序。" Windows Form 设计工具产生的程序代码
"这段文字指出这里面的程序代码是由 Visual Basic .NET 自动产生的,一般说来,不需特
别去更改这里面的程序代码。
依照这样的作法,其他的类也具有相同的结构。在类中就依照一般写程序的方法写进
程序,例如要声明一个整数变量 Var1,则写法就是 Dim Var1 As Integer,这与一般的写法
是一致的。
每一个被即将被程序所使用的对象,必定由类所衍生出来。例如想作出一部车子,那
么必须先拿到这部车子的设计图,再依此设计图到工厂把车子给作出来。设计图就是类,
而车子就是对象。在程序中创建对象时必须使用 New 关键字,而且其后是其类名称,例
如
Dim Obj1 As New Class1
就表示以 Class1 类为蓝图,创建对象 Obj1。接着在程序中就可以使用 Obj1 这个对象。所
有在类 Class1 中所定义的功能、特性,都可以在 Obj1 对象中实现。甚至可以创建其他一
样是以类 Class1 为蓝图的对象,而且每个对象之间完全地独立运作。
5.1.2 类成员
1. 属性的创建
创建属性的格式如下:
[<attrlist>] [Default] [Public|Private|Protected|Friend|Protected
Friend] _
[[ ReadOnly | WriteOnly ] [ Overloads | Overrides ] _
[ Overridable | NotOverridable ] | MustOverride | Shadows | Shared ] _
Property varname([ ByVal parameter list ]) [ As typename ] [ Implements
interfacemember ]
[ <attrlist> ] Get
[ block ]
End Get
[ <attrlist> ] Set(ByVal value As typename )
[ block ]
End Set
5
串行通信类的创建及使用
185
End Property
例如,声明一个 Caption 的属性,允许读取及写入,可以编写如下代码:
Public Property Caption() As String
Get
Return captionValue
End Get
Set (ByVal Value As String)
captionValue = value
End Set
End Property
一般设计属性都是为了能够和外界取得沟通,所以其存取等级几乎都设计为 Public;
Property 则是关键字,指明其下程序为属性程序;Caption 是属性的名称,这个名称必须考
虑到实际的需要而作变更,而且名称最好一目了然,让用户一看就知道此属性的意义;As
String 指明此属性的所属类型,一般的数据类型或是类类型都可以。
Get…End Get 所形成的区段是外界通过此属性所能取得的数据,欲传送给外界的数据
就放在这里。在这个例子里面只有一行程序代码,只接用 Return 返回数据,在自己的程序
中,有可能还要经过其他运算,才将数据外送,在设计时要留意这点。
Set…End Set 所形成的区段用来接收外界通过此属性所传入的数据,Set 后面所接的就
是传送的数据类型及其名称。被传进来的数据通常会再一次地转存到其他内部变量, 供类
内部作其他运算。
如果此属性只有只读属性,则在上述的例子中的 Property 前面加上 ReadOnly 的关键
字,并只要保留 Get…End Get 区段;同样的,如果是唯写属性,在 Property 前面加上
WriteOnly,并只要保留 Set…End Set 区段即可。如果两个区段都有的话,表示这个属性是
可擦写。
2. 方法的创建
所谓的方法(Method)就是子程序或函数。这些方法通常也是声明为 Public,以便外界
可以通过这些方法操作类。例如下面的程序代码是一个 cRS232 类中的两个方法(函数类型,
返回值是 Boolean):一个是 SetDTR,用来控制 DTR 线路状态;另一个是 SetRTS,用来控
制 RTS 的线路状态。如果使用 Sub 创建方法,则没有返回值。
Public Class cRS232
… 省略部分的程序代码 …
Public Function SetDTR(ByVal fState As Boolean) As Boolean
If fState Then '设置高电位
If Not EscapeCommFunction(mhRS, Lines.SetDtr) Then
186
Return (False)
End If
Else '设置低电位
If Not EscapeCommFunction(mhRS, Lines.ClearDtr) Then
Return (False)
End If
End If
Return (True)
End Function
Public Function SetRTS(ByVal fState As Boolean) As Boolean
If fState Then '设置高电位
If Not EscapeCommFunction(mhRS, Lines.SetRts) Then
Return (False)
End If
Else '设置低电位
If Not EscapeCommFunction(mhRS, Lines.ClearRts) Then
Return (False)
End If
End If
Return (True)
End Function
… 省略部分的程序代码 …
End Class
方 法创 建后 , 若要 调 用此 方法 ,只 要在 类名 称之 后加 上方 法名 称即 可。 例如
f1=Obj1.SetRTS(True),即是执行 RTS 的函数调用,并且将结果存入 f1 变量。
3. 事件的创建
使用某一个类创建对象并进行操作时,如果执行过程有任何的状况需要由 类反馈给使
用此类的程序,利用事件程序是最方便的做法。事件的声明格式如下:
[ <attrlist> ] [ Public | Private | Protected | Friend | Protected
Friend ] _
[ Shadows ] Event eventname[(arglist)] _
[ Implements interfacename.interfaceeventname ]
5
串行通信类的创建及使用
187
以下是各部分的说明:
attrlist:选择项。套用至这个事件的特征项(Attribute)列表。特征项之间以逗号 ( ,
) 来分隔。
Public:选择项。以 Public 修饰词声明的实体都具备 Public 存取。公用实体的使
用并没有任何限制。依照默认,未指定存取修饰词的事件会声明为 Public。
Private:选择项。以 Private 修饰词声明的实体都具备 Private 存取。Private 实体
仅能从其声明内容中存取(包括任何嵌套实体)。
Protected:选择项。以 Protected 关键字声明的实体都具备 Protected 存取。它们
仅能从本身的类或派生类中存取。只有类成员才能指定 Protected 存取。这并不
是 Friend 存取的超集。
Friend:选择项。以 Friend 修饰词声明的实体都具备 Friend 存取。使用 Friend 存
取的实体仅能从包含该实体声明的程序中存取。
Protected Friend : 选 择 项 。 以 Protected Friend 修 饰 词 声 明 的 实 体 同 时 具 备
Protected 和 Friend 存取能力。
Shadows:选择项。表示这个事件遮蔽基类中同名的程序开发项目。可以用任意
一种声明项目遮蔽其他声明项目。无法在遮蔽项目的派生类内存取受遮蔽项目
(Shadowed Element),除非主导遮蔽项目(Shadowing Element)无法存取,例如主
导遮蔽项目属于 Private。
Eventname:必要项。事件的名称,依照标准变量命名规格来命名。
Implements:选择项。表示此事件包含界面事件。
Interfacename:接口的名称。
Interfaceeventname:事件的名称。
以下程序码表示 cRS232 类里,声明一个 DataReceived 事件,并且在某一个定时器的
Tick 程序中触发此事件。
Public Class cRS232
… 省略部分的程序代码 …
Public Event DataReceived(ByVal DataNo As Integer, ByRef Data() As Byte)
… 省略部分的程序代码 …
Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles Timer1.Tick
Dim S1() As Byte '接收的字节数组
Dim SNo As Integer '接收的字节数
If Not fPortOpen Then
Exit Sub
End If
Read(SNo, S1) '读取数据
剩余63页未读,继续阅读
资源评论
- nbblwfl2014-02-04有借鉴作用,但 意义不大啊
- levelorgcn2015-10-01谢谢分享,能解决问题,再次感谢!
- suipian10292014-04-04对接触的人有点帮助,谢谢分享。
ZZQAMEC
- 粉丝: 0
- 资源: 2
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功