串行端口会话 本示例描述从头到尾执行任何串行端口任务所用的步骤。 串行端口会话包含在与连接到串行端口的设备通信时可能需要执行的所有步骤。这些步骤包括: 找到您的串行端口 - 使用 seriallist 函数显示系统上的串行端口列表。 创建串行端口对象 - 使用 serial 创建函数为特定的串行端口创建串行端口对象。 如有必要,请在对象创建期间配置属性。特别是,您可能要配置与串行端口通信相关的属性,例如波特率、数据位数等等。 连接到设备 - 使用 fopen 函数将串行端口对象连接到设备。 连接对象后,通过配置属性值修改必要的设备设置,读取数据以及写入数据。 配置属性 - 要建立所需的串行端口对象行为,请使用 set 函数或圆点表示法为属性赋值。 实际上,您可以随时(包括在对象创建期间或刚刚创建后)配置多种属性。反过来,根据您的设备设置和串行端口应用程序的要求,您可以接受默认属性值并跳过此步骤。 串行端口对象的行为取决于之前配置的属性值或默认属性值。 断开连接并清理 - 当您不再需要串行端口对象时,使用 fclose 函数从设备断开该对象,使用 delete 函数从内存中删除该对象,以及使用 clear 命令从 MATLAB® 工作区删除该对象。
串行端口会话在许多串行端口文档示例中得到了增强。要查看使用上述步骤的基本示例,请参阅示例:快速入门。 配置和返回属性本示例描述如何显示串行端口属性名称和属性值,以及如何为属性赋值。 可通过配置属性值,建立所需的串行端口对象行为。您可以使用 set 函数、get 函数或圆点表示法显示或配置属性值。 显示属性名称和属性值创建串行端口对象后,使用 set 函数在命令行中显示所有可配置的属性。此外,如果某个属性具有有限的字符串值集合,set 还会显示以下值。 s = serial('COM1');
set(s)
ByteOrder: [ {littleEndian} | bigEndian ]
BytesAvailableFcn
BytesAvailableFcnCount
BytesAvailableFcnMode: [ {terminator} | byte ]
ErrorFcn
InputBufferSize
Name
OutputBufferSize
OutputEmptyFcn
RecordDetail: [ {compact} | verbose ]
RecordMode: [ {overwrite} | append | index ]
RecordName
Tag
Timeout
TimerFcn
TimerPeriod
UserData
SERIAL specific properties:
BaudRate
BreakInterruptFcn
DataBits
DataTerminalReady: [ {on} | off ]
FlowControl: [ {none} | hardware | software ]
Parity: [ {none} | odd | even | mark | space ]
PinStatusFcn
Port
ReadAsyncMode: [ {continuous} | manual ]
RequestToSend: [ {on} | off ]
StopBits
Terminator 使用 get 函数在命令行中显示一个或多个属性及其当前值。要显示所有属性及其当前值:
get(s)
ByteOrder = littleEndian
BytesAvailable = 0
BytesAvailableFcn =
BytesAvailableFcnCount = 48
BytesAvailableFcnMode = terminator
BytesToOutput = 0
ErrorFcn =
InputBufferSize = 512
Name = Serial-COM1
OutputBufferSize = 512
OutputEmptyFcn =
RecordDetail = compact
RecordMode = overwrite
RecordName = record.txt
RecordStatus = off
Status = closed
Tag =
Timeout = 10
TimerFcn =
TimerPeriod = 1
TransferStatus = idle
Type = serial
UserData = []
ValuesReceived = 0
ValuesSent = 0
SERIAL specific properties:
BaudRate = 9600
BreakInterruptFcn =
DataBits = 8
DataTerminalReady = on
FlowControl = none
Parity = none
PinStatus = [1x1 struct]
PinStatusFcn =
Port = COM1
ReadAsyncMode = continuous
RequestToSend = on
StopBits = 1
Terminator = LF
要显示一个属性的当前值,请向 get 提供该属性的名称。 get(s,'OutputBufferSize')ans = 512
要显示多个属性的当前值,请以元胞数组元素的方式包含这些属性名称。 get(s,{'Parity','TransferStatus'})ans = 'none' 'idle'
使用圆点表示法显示单个属性值。 s.Parityans =none
配置属性值set(s,'BaudRate',4800);
也可以使用圆点表示法: s.BaudRate = 4800;
要配置多个属性的值,请向 set 提供多个属性名称/属性值对组。 set(s,'DataBits',7,'Name','Test1-serial')
请注意,使用圆点表示法一次只能配置一个属性值。 实际上,在存在串行端口对象的情况下,您可以随时配置多个属性 - 包括在对象创建期间。但在对象已连接到设备或将信息记录到磁盘时,有些属性是不可配置的。有关属性何时为可配置属性的信息,请参阅 Property Reference。 指定属性名称串行端口属性名称使用混合大小写表示。尽管这让属性名称更易于阅读,但在指定属性名称时可使用任意大小写。例如,要配置 BaudRate 属性: s.BaudRate = 4800;
s.baudrate = 4800;
默认属性值
只要没有显式定义某个属性的值,便会使用默认值。所有可配置的属性都有默认值。 注意您的操作系统将为所有串行端口设置(例如波特率)提供默认值。但这些设置会被您的 MATLAB 代码覆盖,并且不对您的串行端口应用程序产生任何影响。
如果某个属性具有有限的字符串值集合,则默认值用 {} 括起来。例如,Parity 属性的默认值为 none。 set(s,'Parity')[ {none} | odd | even | mark | space ]
您可以在属性参考页查找任意属性的默认值。
|