CPAL脚本自动化测试 ———— RC232 系列函数及使用

在测试过程中,我们可能还涉及到电压的变化。在这边,我们可以采用使用程控电源并通过RC232来控制程控电源的输出与变化。我一般是用较多的是TOE8592,在CAPL的函数库中,同时也支持RC232这系列函数。所以,我们就可以通过RC232实现对程控电源的输出与控制。

  1. RS232Close 函数
    使用格式如下。主要运用于关闭串口。串行端口将对所有节点关闭。一个端口和同一端口可能被多个节点(或重复)关闭。 关闭后,其他程序可能会使用串行端口。关闭串行端口后,端口的配置将丢失。下次打开该端口时,将使用系统默认值进行配置。
    在这里插入图片描述
    用例:
if ( 1==RS232Close(1) ) write(“It works with port 1.”);
  1. RS232Configure 函数
    使用格式如下。主要对运行的串口进行配置。具体包括波特率、数据位,停止位,奇偶校验性等四个重要参数。如果该串口之前没有被配置过,则会使用默认值。默认值的情况为波特率为9600;8个数据位,1个停止位,无奇偶校验。
    格式2 的使用条件:仅当使用奇偶校验和格式1 时无法与设备通信时,才应使用此形式。
    格式2 的优势是可以通过配置串行端口来使用奇偶校验,而无需让操作系统验证奇偶校验的正确性。
    在这里插入图片描述
    用例:
if ( 0!=RS232Configure(1,9600,8,1,0) )
   write(“Set typical default at port 1.”);
  1. RS232OnError 函数
    使用格式如下。主要用于返回错误码。
    在这里插入图片描述
    具体的错误码如下:
    在这里插入图片描述
    用例:
RS232OnError(dword port, dword errorFlags)
{
   if ( errorFlags & 1 )
      writeLineEx(0,3,“send failed”);
   if ( errorFlags & 2 )
      writeLineEx(0,3,“receive failed”);
}
  1. RS232OnSend 函数
    使用格式如下。主要用于完成对串行端口的发送操作的回调处理程序。
    在这里插入图片描述
    用例:
char text[20] = “Hello World !”;
byte block[20];
int i;
int length;
length=strlen(text)+1;
for (i=0;i<length;i++) block[i]=text[i];

if ( 0!=RS232Send(1,block,length) )
   write(“Written block of bytes to port 1.”);
...
// at node which issued the send request
RS232OnSend(dword port, byte buffer[], dword number)
{
   // send completed now, it may time to issue the next send
   // buffer==block, number==length
}
  1. RS232OnReceive 函数
    使用格式如下。主要用于在串行端口接收数据的回调处理程序。
    在这里插入图片描述
    用例:
// at sender node
char text[20] = “Hello World !”;
byte block[20];
int i;
int length;
length=strlen(text)+1;
for (i=0;i<length;i++) block[i]=text[i];

if ( 0!=RS232Send(1,block,length) )
   write(“Written block of bytes to port 1.”);
...
// at receiver node (here 2)
byte mybuffer[100];
int mysize = 100;
RS232Receive(2,mybuffer,mysize);
...
// at node which issued the receive request
RS232OnReceive(dword port, byte buffer[], dword number)
{
   // port==2 here
   // buffer==mybuffer, number<=mysize
   // buffer contains some parts of block
}
  1. RS232Open 函数
    使用格式如下。主要用于开启串口。
    在这里插入图片描述
    用例:
if ( 1==RS232Open(1) ) write(“It works with port 1.”);
  1. RS232Receive 函数
    使用格式如下。主要用于从串口接受字节块。
    在这里插入图片描述
    使用该函数需要注意
    I. 一旦激活,该函数一直工作。
    II. 如果已接收到任何数据,则通过RS232OnReceive函数通知该节点。
    III. 如果要进行另一次接收操作,则需要将结果缓冲区更改为上一次接收操作所给定的结果。
    VI. 如果需要解操作后期出现的错误,请使用RS232OnError函数。接收重试将继续进行,但是如果再次发生错误,则不会通知您。
    用例:
byte mybuffer[20];
int mysize=20;
if ( 1==RS232Receive(1,mybuffer,mysize) )
  write(“It works with port 1.”);
...
RS232OnReceive( dword port, dword buffer[], dword number )
{
   // works after first RS232Receive !
   // buffer == mybuffer, 1<number<=mysize
}
  1. RS232Send 函数
    使用格式如下。主要用于从串口发送字节块。
    在这里插入图片描述
    使用该函数需要注意
    I. 该操作开始发送块。
    II. 回调处理程序RS232OnSend将通知节点完成。
    III. 要了解操作后期出现的错误,请使用RS232OnError。 发生错误时不会自动重试。
    用例:
char text[20] = “Hello World !”;
byte buffer[20];
int i;
int length;
length=strlen(text)+1;
for (i=0;i<length;i++) buffer[i]=text[i];
if ( 1==RS232Send(1,buffer,length) )
   write(“It works with port 1.”);
  1. RS232SetHandshake 函数
    使用格式如下。主要用于配置通信握手的参数。
    在这里插入图片描述
    参数2(handshake):允许的值与相对应的描述。
    在这里插入图片描述
    参数7(timeout):定义所有发送和接收操作的超时时间(以毫秒为单位)。如果该参数没有被使用,则时间默认为5s。
    在这里插入图片描述
    用例:
if ( 0!=RS232SetHandshake(1,0,0,0,0,0) )
  write("No handshake at port 1.");

版权声明:本文为qq_42957717原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。