串口编程资料自己找的Word文档格式.docx
- 文档编号:6231792
- 上传时间:2023-05-06
- 格式:DOCX
- 页数:41
- 大小:62.58KB
串口编程资料自己找的Word文档格式.docx
《串口编程资料自己找的Word文档格式.docx》由会员分享,可在线阅读,更多相关《串口编程资料自己找的Word文档格式.docx(41页珍藏版)》请在冰点文库上搜索。
ReadChar从SerialPort输入缓冲区中同步读取一个字符
ReadLine一直读取到输入缓冲区中的NewLine值
ReadTo一直读取到输入缓冲区中指定value的字符串
Write已重载。
将数据写入串行端口输出缓冲区
WriteLine将指定的字符串和NewLine值写入输出缓冲区
注意:
用跳线使串口的第2、3针连接,可以在本地计算机上实现串口通信,所以,通过串口的第2、3针的连接可以对程序进行检测。
串口截面图如图13.2所示。
图13.2串口截面图
实现过程
(1)新建一个项目,命名为Ex13_01,默认窗体为Form1。
(2)在Form1窗体中,主要添加两个Button控件,分别用于执行发送数据和接受数据,添加两个TextBox控件,用于输入发送数据和显示接收数据。
(3)主要程序代码。
privatevoidbutton1_Click(objectsender,EventArgse)
{
serialPort1.PortName="
COM1"
;
serialPort1.BaudRate=9600;
serialPort1.Open();
byte[]data=Encoding.Unicode.GetBytes(textBox1.Text);
stringstr=Convert.ToBase64String(data);
serialPort1.WriteLine(str);
MessageBox.Show("
数据发送成功!
"
"
系统提示"
);
}
privatevoidbutton2_Click(objectsender,EventArgse)
byte[]data=Convert.FromBase64String(serialPort1.ReadLine());
textBox2.Text=Encoding.Unicode.GetString(data);
serialPort1.Close();
数据接收成功!
本文来自CSDN博客,转载请标明出处:
////////////////////////////////////////////////////////////
不管是RS232还是RS485
新手的话serialPort这个控件可以基本帮你解决问题,如果想了解深层次的话这个可以看下C++/C#封装的类,第三方控件MSCOMM也不错。
网上有最简单的例子:
privatevoidbutton1_Click(objectsender,EventArgse)
{
}
privatevoidbutton2_Click(objectsender,EventArgse)
}
//*********************************************************************
以后精通后了解串口通讯就了解主要有分为应答模式,响应模式。
应带模式:
就是发送后等待一定时间后接收,根据需要判断接收数据是否有效。
(上下位机控制使用比较多)
响应模式:
就是缓冲区内有数据就响应datarecivice事件,接收处理。
另外建议连接下硬件上串口的分布,基本就三根线有用,2-3短接就是自收自发......
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
Mscomm控件通过串行端口传输和接收数据,为应用程序提供串行通讯功能。
Mscomm控件在串口编程时非常方便,程序员不必去花时间去了解较为复杂的API函数,而且在VC、VB、Delphi等语言中均可使用。
MicrosoftCommunicationsControl(以下简称MSComm)是Microsoft公司提供的简化Windows下串行通信编程的ActiveX控件,它为应用程序提供了通过串行接口收发数据的简便方法。
具体的来说,它提供了两种处理通信问题的方法:
一是事件驱动(Event-driven)方法,一是查询法。
1.Mscomm控件两种处理通讯的方式
Mscomm控件提供下列两种处理通讯的方式:
事件驱动方式和查询方式。
1.1事件驱动方式
事件驱动通讯是处理串行端口交互作用的一种非常有效的方法。
在许多情况下,在事件发生时需要得到通知,例如,在串口接收缓冲区中有字符,或者CarrierDetect(CD)或RequestToSend(RTS)线上一个字符到达或一个变化发生时。
在这些情况下,可以利用MSComm控件的OnComm事件捕获并处理这些通讯事件。
OnComm事件还可以检查和处理通讯错误。
所有通讯事件和通讯错误的列表,参阅CommEvent属性。
在编程过程中,就可以在OnComm事件处理函数中加入自己的处理代码。
这种方法的优点是程序响应及时,可靠性高。
每个MSComm控件对应着一个串行端口。
如果应用程序需要访问多个串行端口,必须使用多个MSComm控件。
1.2查询方式
查询方式实质上还是事件驱动,但在有些情况下,这种方式显得更为便捷。
在程序的每个关键功能之后,可以通过检查CommEvent属性的值来查询事件和错误。
如果应用程序较小,并且是自保持的,这种方法可能是更可取的。
例如,如果写一个简单的电话拨号程序,则没有必要对每接收一个字符都产生事件,因为唯一等待接收的字符是调制解调器的“确定”响应。
2.Mscomm控件的常用属性
Mscomm控件件有很多重要的属性,但首先必须熟悉几个属性。
CommPort设置并返回通讯端口号。
Settings以字符串的形式设置并返回波特率、奇偶校验、数据位、停止位。
PortOpen设置并返回通讯端口的状态。
也可以打开和关闭端口。
Input从接收缓冲区返回和删除字符。
Output向传输缓冲区写一个字符串。
下面分别描述:
CommPort属性设置并返回通讯端口号。
语法:
object.CommPort[value](value一整型值,说明端口号。
)
说明:
在设计时,value可以设置成从1到16的任何数(缺省值为1)。
但是如果用PortOpen属性打开一个并不存在的端口时,MSComm控件会产生错误68(设备无效)。
注意:
必须在打开端口之前设置CommPort属性。
RThreshold属性:
在MSComm控件设置CommEvent属性为comEvReceive并产生OnComm之前,设置并返回的要接收的字符数。
object.Rthreshold[=value](value整型表达式,说明在产生OnComm事件之前要接收的字符数。
)
当接收字符后,若Rthreshold属性设置为0(缺省值)则不产生OnComm事件。
例如,设置Rthreshold为1,接收缓冲区收到每一个字符都会使Mscomm控件产生OnComm事件。
CTSHolding属性:
确定是否可通过查询ClearToSend(CTS)线的状态发送数据。
ClearToSend是调制解调器发送到相联计算机的信号,指示传输可以进行。
该属性在设计时无效,在运行时为只读。
object.CTSHolding(Boolean)
Mscomm控件的CTSHolding属性设置值:
1.True
Clear
To
Send
线为高电平。
2.
3.False
线为低电平。
如果ClearToSend线为低电平(CTSHolding=False)并且超时时,MSComm控件设置CommEvent属性为comEventCTSTO(ClearToSendTimeout)并产生OnComm事件。
ClearToSend线用于RTS/CTS(RequestToSend/ClearToSend)硬件握手。
如果需要确定ClearToSend线的状态,CTSHolding属性给出一种手工查询的方法。
详细信息有关握手协议,请参阅Handshaking属性。
SThreshold属性:
MSComm控件设置CommEvent属性为comEvSend并产生OnComm事件之前,设置并返回传输缓冲区中允许的最小字符数。
语法:
object.SThreshold[=value]
value整形表达式,代表在OnComm事件产生之前在传输缓冲区中的最小字符数。
若设置Sthreshold属性为0(缺省值),数据传输事件不会产生OnComm事件。
若设置Sthreshold属性为1,当传输缓冲区完全空时,MSComm控件产生OnComm事件。
如果在传输缓冲区中的字符数小于value,CommEvent属性设置为comEvSend,并产生OnComm事件。
comEvSend事件仅当字符数与Sthreshold交叉时被激活一次。
例如,如果Sthreshold等于5,仅当在输出队列中字符数从5降到4时,comEvSend才发生。
如果在输出队列中从没有比Sthreshold多的字符,comEvSend事件将绝不会发生。
Handshake常数
常数值描述
4.comNone
0
无握手。
5.
6.comXonXoff
1
XOn/Xoff
握手。
7.
8.comRTS
2
Request-to-send/clear-to-send
9.
10.comRTSXOnXOff
3
Request-to-send
和
clear-to-send
握手皆可。
OnComm常数
11.comEvSend
发送事件。
12.
13.comEvReceive
接收事件。
14.
15.comEvCTS
线变化。
16.
17.comEvDSR
4
data-set
ready
18.
19.comEvCD
5
carrier
detect
20.
21.comEvRing
6
振铃检测。
22.
23.comEvEOF
7
文件结束。
Error常数
24.comEventBreak
1001
接收到中断信号
25.
26.comEventCTSTO
1002
Clear-to-send
超时
27.
28.comEventDSRTO
1003
Data-set
29.
30.comEventFrame
1004
帧错误
31.
32.comEventOverrun
1006
端口超速
33.
34.comEventCDTO
1007
Carrier
35.
36.comEventRxOver
1008
接收缓冲区溢出
37.
38.comEventRxParity
1009
Parity
错误
39.
40.comEventTxFull
1010
传输缓冲区满
41.
42.comEventDCB
1011
检索端口
设备控制块
(DCB)
时的意外错误
InputMode常数
comInputModeText0(缺省)通过Input属性以文本方式取回数据。
comInputModeBinary1通过Input属性以二进制方式检取回数据。
CDHolding属性:
通过查询CarrierDetect(CD)线的状态确定当前是否有传输。
CarrierDetect是从调制解调器发送到相联计算机的一个信号,指示调制解调器正在联机。
语法object.CDHolding
设置值:
CDHolding属性的设置值为:
设置描述
TrueCarrierDetect线为高电平
FalseCarrierDetect线为低电平
注意当CarrierDetect线为高电平(CDHolding=True)且超时时,MSComm控件设置CommEvent属性为comEventCDTO(CarrierDetect超时错误),并产生OnComm事件。
注意在主机应用程序中捕获一个丢失的传输是特别重要的,例如一个公告板,因为呼叫者可以随时挂起(放弃传输)。
CarrierDetect也被称为ReceiveLineSignalDetect(RLSD)。
数据类型Boolean
DSRHolding属性:
确定DataSetReady(DSR)线的状态。
DataSetReady信号由调制解调器发送到相连计算机,指示作好操作准备。
object.DSRHolding
object所在处表示对象表达式,其值是“应用于”列表中的对象。
DSRHolding属性返回以下值:
值描述
TrueDataSetReady线高
FalseDataSetReady线低
当DataSetReady线为高电平(DSRHolding=True)且超时时,MSComm控件设置CommEvent属性为comEventDSRTO(数据准备超时)并产生OnComm事件。
当为DataTerminalEquipment(DTE)机器写DataSetReady/DataTerminalReady握手例程时该属性是十分有用的。
数据类型:
Boolean
Settings属性:
设置并返回波特率、奇偶校验、数据位、停止位参数。
object.Settings[=value]
当端口打开时,如果value非法,则MSComm控件产生错误380(非法属性值)。
Value由四个设置值组成,有如下的格式:
BBBB,P,D,S"
BBBB为波特率,P为奇偶校验,D为数据位数,S为停止位数。
value的缺省值是:
9600,N,8,1"
InputLen属性:
设置并返回Input属性从接收缓冲区读取的字符数。
语法object.InputLen[=value]
InputLen属性语法包括下列部分:
value整型表达式,说明Input属性从接收缓冲区中读取的字符数。
InputLen属性的缺省值是0。
设置InputLen为0时,使用Input将使MSComm控件读取接收缓冲区中全部的内容。
若接收缓冲区中InputLen字符无效,Input属性返回一个零长度字符串("
)。
在使用Input前,用户可以选择检查InBufferCount属性来确定缓冲区中是否已有需要数目的字符。
该属性在从输出格式为定长数据的机器读取数据时非常有用。
EOFEnable属性:
确定在输入过程中MSComm控件是否寻找文件结尾(EOF)字符。
如果找到EOF字符,将停止输入并激活OnComm事件,此时CommEvent属性设置为comEvEOF
object.EOFEnable[=value]
EOFEnable属性语法包括下列部分:
value布尔表达式,确定当找到EOF字符时,OnComm事件是否被激活,如“设置值”中所描述。
value的设置值:
True当EOF字符找到时OnComm事件被激活。
False(缺省)当EOF字符找到时OnComm事件不被激活。
当EOFEnable属性设置为False,OnComm控件将不在输入流中寻找EOF字符。
错误消息(MSComm控件)
下表列出MSComm控件可以捕获的错误:
43.380
无效属性值
comInvalidPropertyValue
44.383
属性为只读
comSetNotSupported
45.394
comGetNotSupported
46.8000
端口打开时操作不合法
comPortOpen
47.8001
超时值必须大于
48.8002
无效端口号
comPortInvalid
49.8003
属性只在运行时有效
50.8004
属性在运行时为只读
51.8005
端口已经打开
comPortAlreadyOpen
52.8006
设备标识符无效或不支持该标识符
53.8007
不支持设备的波特率
54.8008
指定的字节大小无效
55.8009
缺省参数错误
56.8010
硬件不可用(被其它设备锁定)
57.8011
函数不能分配队列
58.8012
设备没有打开
comNoOpen
59.8013
设备已经打开
60.8014
不能使用
comm
通知
61.8015
不能设置
状态
comSetCommStateFailed
62.8016
事件屏蔽
63.8018
仅当端口打开时操作才有效
comPortNotOpen
64.8019
设备忙
65.8020
读
设备错误
comReadError
66.8021
为该端口检索设备控制块时的内部错误
comDCBError
Mscomm控件的基本内容就向你介绍到这里,希望对你了解和学习Mscomm控件有所帮助。
、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 串口 编程 资料 自己