英语原文共 37 页,剩余内容已隐藏,支付完成后下载完整资料
文 献 翻 译
扩展 JMP
外部数据源、分析工具和自动化
本章讨论了对生产设置特别有用的脚本功能,例如:
bull;用于从实验室仪器捕获实时数据的数据源
bull;通过JMP脚本语言(JSL)使用SAS、MATLAB、R或蟒蛇
bull;使用JMP与微软Excel
bull;连接到数据库
bull;通过 OLE 自动化外部控制 JMP
bull;解析XML
bull;与RES网络服务通信
一些一般JSL命令,可能是特别感兴趣的用于生产设置包括标题,说话,打印,写作和邮件。这些命令在编程方法中与用户通信的函数中描述。
窗口上的实时数据捕获
数据馈送是连续读取数据的实时方法,例如从连接到串行端口的实验室测量设备中读取数据。数据馈送对象设置并发线程与实时到达并与背景事件一起处理的输入数据行队列。您设置脚本来解释数据线并将数据推至数据表,或在流程需要时采取任何其他工作。
例如,提交此记录以获取 com1 中的记录,并将它们列在日志中。
feed = Open Datafeed(
Connect( Port( 'com1:' ), Baud( 9600 ), DataBits( 7 ) ),
Set Script( Print( feed lt;lt; GetLine ) )
);
图 14.1 数据源窗口显示状态并提供控件
创建数据馈送对象
要创建数据馈送对象,请使用开放数据源 ()功能,其中参数指定有关连接的详细信息:
feed = Open Datafeed( options );
无需参数。您可以简单地创建数据馈送对象,然后向它发送消息。消息可能包括连接到端口或设置脚本来处理进来的数据。但是,您通常会在开放数据源()功能中设置数据源的基本操作,然后根据需要发送消息来管理数据源。下面的任何选项都作为开放数据源()内部的选项或发送到数据馈送对象的消息工作。
最好将对象的引用存储在一个全球变量中,例如上面的源,以便您可以轻松地向对象发送消息。您可以使用子项存储对现有对象的引用:例如,存储对创建的第二个数据源的引用:
feed2 = Datafeed[2];
数据馈送选项
要连接到实时数据源,请使用'连接'()并指定端口的详细信息。每个设置仅需要一个参数:在此语法摘要中,参数选择之间的符号|表示'或'。要连接,需要端口规范,否则对象仍有效,但未连接到数据源。最后三个项目,DTR_DSR、RTS_CTS和XON_XOFF,是Boolean,以指定哪些控制字符来回发送,以指示数据源何时准备好获取数据。 通常,您最多会打开其中的一个。
feed = Open Datafeed(
Connect(
Port( 'com1:' | 'com2:' | 'lpt1:' | ... ),
Baud( 9600 | 4800 | ... ),
Data Bits( 8 | 7 ),
Parity( None | Odd | Even ),
Stop Bits( 1 | 0 | 2 ),
DTR_DSR( 0 | 1 ), // Data Terminal Ready
RTS_CTS( 0 | 1 ), // Request To Send | Clear To Send
XON_XOFF( 1 | 0 ) // Transmitter On | Transmitter Off
)
);
此命令创建一个可编写的数据馈送对象,并将引用存储在全球可变源中。连接()参数启动一个线程来观看通信端口并收集线路。线程收集字符,直到它有一条线,然后将其附加到行队列中,并安排一个事件来调用脚本。
注意:源中的一行数据可能会在数据表中生成多个行,也可能只是一行的一小部分。您提供 JSL 来解析数据线并根据需要将行添加到数据表中。
设置脚本()将脚本附加到数据馈送对象。每当数据行到达时,此脚本由开放数据源消息触发。设置脚本 ()的参数只是要运行的脚本,或包含脚本的全球。
feed = Open Datafeed( Set Script( myScript ) );
feed = Open Datafeed( Set Script( Print( feed lt;lt; Get Line ) ) );
数据源脚本通常使用获取行来获取一行的副本,然后使用该行做一些事情。通常,它会解析数据的行,并将其添加到某些数据表中。
阅读实时数据
实时数据源一词描述了外部数据源通过物理或逻辑通信链接向其他设备发送信息的方式。您可以通过 Windows 计算机的串行端口将 JMP 连接到实时数据源,以便实时读取传入的数据流。请记住以下几点:
bull;数据馈送必须通过标准的九针串行端口。除非有可以模拟串行端口的驱动程序,否则无法通过 USB 端口读取数据
bull;您需要知道所连接设备的确切包速率、平价、停止位和数据位。
获取设备号码后,请在下面的脚本中将其输入打开数据源()命令。(下面脚本中的4800、偶偶、2和7都是示例,因此请将其替换为您的信息)。然后将数据源连接到计算机,打开并运行脚本:
streamScript = Expr(
line = feed lt;lt; Get Line;
Show( line );
len = Length( line );
Show( len );
If( Length( line ) gt;= 1,
Show( 'Hi' );
Show( line );
field = Substr( line, 5, 8 );
Show( field );
x = Num( field );
Show( x );
If( !Is Missing( x ),
dt lt;lt; Add Row( {:Column1 = x} );
Show( x );
);
);
);
feed = Open Datafeed(
Baud Rate( 4800 ),
parity( even ),
Stop bits( 2 ),
Data bits( 7 )
);
feed lt;lt; Set Script( streamScript );
feed lt;lt; Connect;
为了确保 JMP 的通信设置与从外部来源读取数据的仪器之间的和谐,请选择'文件 首选项 ' 和 '通信'。请参阅文档以查找相应的设置。
使用消息管理数据源
数据馈送对象响应多个消息,包括连接和设置脚本。以上详细内容为打开数据源的参数。它们也可以作为消息发送到已经存在的数据源对象:
feed lt;lt; Connect( port( 'com1:' ), baud( 4800 ), databits( 7 ), parity( odd ), stopbits( 2 ) );
feed lt;lt; Set Script( myScript );
以下消息也可以用作数据源()的参数。但是,将它们作为消息发送到已经存在的数据源对象将更为常见。
您可以从脚本向数据源发送行。这是测试数据源的快速方法。如果您没有可用的设备,则队列行不会向设备发送数据:它模拟从设备获取数据。包括文本参数或存储文本的全局:
feed lt;lt; Queue Line( '14' );
feed lt;lt; Queue Line( myValue );
以下是排队五行数据的测试脚本:
feed lt;lt; Queue Line( '11' );
feed lt;lt; Queue Line( '22' );
feed lt;lt; Queue Line( '33' );
feed lt;lt; Queue Line( '44' );
feed lt;lt; Queue Line( '55' );
图 14.2 数据源:5 行排队
要获取当前在队列中等待的第一行,请使用获取行(单项)消息。当您收到一条线时,它会从队列中删除。上面有五行与测试脚本一起排队,获取行返回第一行并将其从队列中删除:
feed lt;lt; Get Line
'11'
图 14.3 数据源:4 行排队
要将队列中的所有行清空到列表中,请使用获取行(复数)。这将在列表{}格式中从测试脚本返回下四行。
myList = feed lt;lt; GetLines;
{ '22', '33', '44', '55' }
图 14.4 数据源:0 行排队
要停止并稍后重新启动排队的处理,请单击Datafeed 窗口中的'停止'和'重新启动'按钮,或发送等效消息:
feed lt;lt; Stop;
feed lt;lt; Restart;
要关闭数据源及其窗口:
feed lt;lt; Close;
要断开与实时数据源的连接:
feed lt;lt; Disconnect
表 14.1 数据源消息
数据馈送示例
读取数据
下面是一个典型的数据馈送脚本。它期望找到一个字符串 3 字符长开始在列 11。如果确实如此,它将其用作数字,然后在列'厚度'中的数据表中添加一行。
feed = Open Datafeed( );
myScript = Expr(
line = feed lt;lt; Get Line;
If( Length( line ) gt;= 14,
x = Num( Substr( line, 11, 3 ) );
If( !Is Missing( x ),
dt lt;lt; Add Row( {thickness = x} )
);
);
);
使用设置脚本将脚本分配给数据馈送对象:
feed lt;lt; Set Script( myScript );
设置实时控制图表
下面是一个示例脚本,它设置一个新的数据表,并启动基于数据源的对照图。
dt = New Table( 'Gap Width' ); // make a data table with one column
dc = dt lt;lt; New Column( 'gap', Numeric, Best );
// set up control chart properties
dt lt;lt; Set Property(
'Control Limits',
{XBar( Avg( 20 ), LCL( 19.8 ), UCL( 20.2 ) )}
);
dt lt;lt; Set Property( 'Sigma', 0.1 );
// make the data feed
feed = Open Datafeed();
feedScript = Expr(
line = feed lt;lt; Get Line;
z = Num( line );
Show( line, z ); // if logging or debugging
If( !Is Missing( z ),
dt lt;lt; Add Row( {:gap = z} )
);
);
feed lt;lt; Set Script( feedScript );
// start the control chart
Control Chart(
Sample Size( 5 ),
剩余内容已隐藏,支付完成后下载完整资料
资料编号:[267056],资料为PDF文档或Word文档,PDF文档可免费转换为Word
以上是毕业论文外文翻译,课题毕业论文、任务书、文献综述、开题报告、程序设计、图纸设计等资料可联系客服协助查找。