Vector - CAPL - RS232串口处理
创始人
2025-05-31 08:56:10
0

摸鱼聊天、答疑解惑首选之地 --- 车载网络哪些事儿

你是否还在为VT板卡系统昂贵而发愁?是否为MCU log没办法而烦恼?当前车载网络协议测试这块,vector可以说是一家独大,因此各种骚操作一年比一年多,然而对于我们测试工程师来说,我们只想最快、最准确的完成测试,但是VT板卡的价格让大部分公司望而却步。但是对于测试网络唤醒、CAN总线短路等,我们又必须使用CANoe的高精度测试,这也形成了一个矛盾体;那该如何解决呢?继电器是个好东西,时延和准确度都是1ms左右,完全能够满足我们的测试需求,因此我们可以通过控制继电器来实现控制硬线唤醒或者其他硬线的操作,在保证测试结果的情况下做个折中的替代。

另外一方面,在测试过程中,测试工程最烦恼的一件事就是没有MCU log,我们没办法分析,你去复现一下 ,把MCU log抓取一下吧;如果是必现问题还好,但是如果是低概率问题,那无论是谁我想都是痛苦面具了,这不仅浪费我们的时间,实际情况是还不一定有很好的工作产出,那我们该如何去做呢?是的,我们可以直接通过自动化抓取MCU log,这样在每次测试完成,就可以同时抓取MCU log,减少我们的无意义工作量了,因此通过串口抓取log非常有必要了。 那RS232有非常有必要提上日程了,今天我们就来介绍下RS232相关函数。

RS232Open

功能:打开一个串口端口

说明:串行端口在当前执行CAPL代码的节点上可用,同一个端口可以由多个节点使用,如果端口已打开,其他程序将无法再访问串行端口。

port:串口端口号,取值范围1 - 255

返回值:

0:系统上不存在具有给定编号的串行端口或者另一个程序正在占用该串口端口号

1:打开成功

代码示例

if ( 1==RS232Open(1) ) 
{write("open serial port 1 success");TestStepPass("Check","open serial port 1 success");
}
else
{write("open serial port 1 fail");TestStepFail("Check","open serial port 1 fail");
}

RS232Close

功能:关闭一个已打开串口

说明:所有节点的串行端口都将关闭。同一个端口可以由多个节点关闭(或重复关闭);关闭后,其他程序可以使用串行端口。关闭串行端口后,端口的配置将丢失。下次打开端口时,将使用系统默认值进行配置。

总结起来就是一旦关闭port串口,CAPL与该串口断开连接,无法被使用;且配置全部恢复为默认配置,再次打开如果有特殊配置需要重新进行配置。

port:串口端口号,取值范围1 - 255

返回值:

0:系统上不存在具有给定编号的串行端口

1:打开成功

代码示例

if ( 1==RS232Close(1) ) 
{write("Close serial port 1 success");TestStepPass("Check","Close serial port 1 success");
}
else
{write("Close serial port 1 fail");TestStepFail("Close","open serial port 1 fail");
}

RS232Configure

功能:配置串口参数

说明:

如果是不使用该函数则使用默认配置

默认配置信息:默认波特率 9600,8个数据位,1个停止位,无奇偶校验。

port:串口端口号,取值范围1 - 255

baudrate:用于接收和传输的波特率,通常使用9600。一般根据设备支持的波特率进行设置。通常,115200是允许的最大值。

numberOfDataBits:传输帧内的数据位数;最多使用8,默认一般也是使用8。只有介于5和8之间的值是可能的。串行端口不支持所有值,也不支持与其他帧参数的所有组合。

numberOfStopBits:一种设置传输帧内停止比特数的值。

1

使用1个停止位

2

使用2个停止位

parity:标识要使用的奇偶校验模式的值

0

未使用奇偶校验,即帧不包含奇偶校验位

1

奇数奇偶校验

2

偶数奇偶校验

enableParityCheck:指示是启用还是禁用奇偶校验。如果参数奇偶校验设置为0(未使用奇偶校验),则忽略此参数。

0:奇偶校验已禁用

!=0 (≠0):奇偶校验已启用

返回值:

0:如果端口不存在或者端口未打开,则返回0

1:配置成功

代码示例

if (0!=RS232Configure(1,9600,8,1,0)) 
{write("configuration serial port 1 success");TestStepPass("Check","configuration serial port 1 success");
}
else
{write("configuration serial port 1 fail");TestStepFail("configuration","open serial port 1 fail");
}

RS232Send

功能:在串行端口上发送数据块。

说明:向串行端口发送一个字节块,该操作开始发送块,回调处理程序RS232OnSend将通知节点完成。

要了解操作后期发生的错误,请使用RS232OnError;出现错误时,不会自动重试。

port:串口端口号,取值范围1 - 255

buffer:将发送其数字的字节数组。

number:要发送的字节数。

返回值:

0:系统上不存在具有给定编号的串行端口;

端口尚未打开;

之前不久使用了另一个非阻塞发送操作;

前一个发送操作可能尚未完成,从而导致错误;

1:成功发送了串口数据。

代码示例

char text[20] = “Hello World !”;
byte buffer[20];
int i;
int length;
length=strlen(text)+1;
//初始化发送buffer
for (i=0;i

RS232Receive

功能:设置串行端口的接收器缓冲区。

说明:如果接收到任何数据,则回调处理程序RS232OnReceive将通知节点。

如果将给出另一个接收操作,则结果缓冲区将更改为上次接收操作给出的缓冲区。

要了解操作后期发生的错误,请使用RS232OnError。接收的重试将持续启动,但如果再次发生错误,将不会通知您。

port:串口端口号,取值范围1 - 255

buffer:接收串口数据的数组。

number:可接受的最大字节数。

返回值:

0:系统上不存在具有给定编号的串行端口;

端口尚未打开;

之前不久使用了另一个非阻塞发送操作;

前一个发送操作可能尚未完成,从而导致错误;

1:成功接收到了串口数据

代码示例

byte mybuffer[20];
int mysize=20;
if ( 1==RS232Receive(1,mybuffer,mysize) )write(“It works with port 1.”);if(1 == RS232Receive(F_PowerPort,receivebyte,30))
{testWaitForTimeout(150);Byte2Str(gReceiverBuffer,receivebuf,30);ReSleCur = (atodbl(receivebuf))*500;if(gReceiverBuffer[0] == 0x22&&gReceiverBuffer[1] == 0x01&&gReceiverBuffer[2] == 0x11){testWaitForTimeout(888);ReSleCur = 255; return ReSleCur;}else{if((ReSleCur < @NM_test::Sleep_Current)&&(ReSleCur>=0)){testWaitForTimeout(3000);testStepPass("Check","DUT enter sleep success,current: %fmA",ReSleCur);}}
}

RS232OnSend

功能:在RS232Send发出的请求完成后,将调用处理程序。

说明:

用于完成对串行端口的发送操作的回调处理程序。

将仅在发出发送操作的节点上调用。

只有在成功时才会调用处理程序

port:串口端口号,取值范围1 - 255

buffer:将发送其数字的字节数组。

number:要发送的字节数。

返回值:

0:如果不使用发送操作,则会发生错误

1:发送成功

代码示例

char text[20] = “Hello World !”;
byte block[20];
int i;
int length;
length=strlen(text)+1;
for (i=0;i

RS232OnReceive

功能:如果在端口接收到数据,将定期调用处理程序,从调用RS232Receive开始。

说明:

用于在串行端口接收数据的回调处理程序。

将仅在为给定端口发出RS232Receive操作的节点上调用,只有在成功时才会调用处理程序

缓冲区可能比数字大得多。对于非常慢的连接,可能会调用几个字节的处理程序。至少给出了一个字节。可以在多个节点监听同一个端口,将使用相同的数据调用所有节点。

port:串口端口号,取值范围1 - 255

buffer:接收串口数据的数组。

number:可接受的最大字节数。

返回值:

0:如果没有启动接收操作,则会发生错误

1:接收成功

代码示例

// at sender node
char text[20] = “Hello World !”;
byte block[20];
int i;
int length;
length=strlen(text)+1;
for (i=0;i

RS232OnError

功能:如果发生错误,将调用处理程序。

说明:

用于在串行端口接收错误的回调处理程序。

将仅在发出发送/接收操作的节点处调用。

对于重复错误(稳定错误条件),只返回第一个错误。这种情况可能发生在接收错误的情况下,即在两个连接端的配置不匹配的情况下。

在配置不匹配的情况下,错误可能不会同时发生,例如,一个端口9600/8/1/无奇偶校验,另一端115200/8/1/没有奇偶校验的配置可能看起来有效(尽管接收到垃圾)。

port:串口端口号,取值范围1 - 255

errorFlags:位被设置为标记条件。

Bit

Error

0

发送操作失败。

1

接收操作失败。

2

帧错误,可能由奇偶校验失配或任何其他帧失配(例如停止位的数量)引起。

3

帧奇偶校验错误,是由奇偶校验不匹配引起的。

4

缓冲区溢出,如果发送方的驱动程序发送速度不够快,如果是接收方在太短的时间内获得了太多数据,或者其他任何情况,都没有指定。

5

接收器缓冲区溢出。

6

中断状态,另一端请求暂停。

7

超时,可能是由于错误设置的超时时间太短造成的。请参阅RS232SetHandshake以设置超时。

代码示例

RS232OnError(dword port, dword errorFlags)
{if ( errorFlags & 1 )writeLineEx(0,3,“send failed”);if ( errorFlags & 2 )writeLineEx(0,3,“receive failed”);
}

串口处理函数用的好能够在工作中帮助我们解决很多不必要的麻烦和问题,大家可以深度研究,我们一起交流!!!

相关内容

热门资讯

王凤英入职小鹏3年终获股权,此... 5月7日消息,小鹏汽车披露的监管及年报信息显示,公司总裁王凤英已正式进入股东名册,入职小鹏3年后股权...
五块钱红酒卖断货,便宜红酒为何... 最近一段时间,中国的酒类消费市场可以说是显得格外奇怪,一方面,各种高端酒特别是白酒的消费量出现了明显...
财联社C50风向指数调查:4月... 财联社5月8日讯(记者 夏淑媛)新一期财联社“C50风向指数”结果显示,市场机构对4月新增人民币贷款...
央视硬刚国际足联拒掏20亿,背... 作者| 史大郎&猫哥 来源| 是史大郎&大猫财经Pro 央视这次太刚了,离世界杯开幕还有1个月,死活...
新CEO上任直接放大招!Air... 快科技5月8日消息,苹果即将上任的CEO John Ternus对未来一系列新产品充满信心,称这些设...
“特朗普拟邀英伟达、波音等CE... 据路透社当地时间5月7日报道,特朗普政府正邀请英伟达、苹果、埃克森美孚、波音等大公司首席执行官,于下...
世界杯,还能看到直播吗? 2026年美加墨世界杯距离开幕,仅剩一个多月时间。多方信息显示,中央广播电视总台(以下简称“央视”)...
机构警告AI芯片热潮风险,超威... 5月7日,据央视财经,隔夜超威半导体公司(AMD)股价飙升近19%,带动AI芯片热潮持续升温。AMD...
银行员工转走储户1800万最新... 银行员工转走储户1800万最新进展:2名储户已收到银行全部款项
原创 中... 1994年,安徽省的经济格局曾发生过一次戏剧性的转折。在那一年,一座名为安庆的城市,其国内生产总值(...
昆都仑区:政策“蓄力”消费焕新 “一台5000多元的空调,叠加‘国补’和商场的以旧换新活动,能优惠1000元左右,旧机还能免费上门拆...
乐悦置业竞得佛山顺德乐从镇一商... 观点网讯:5月6日,佛山市顺德区乐从镇一商业地块成功出让,由广东省乐悦置业有限公司竞得,乐从南区·邻...
原创 亦... 《爱情没有神话》这部剧,一开始的命运颇为多舛,经历了几次撤档的波折后,终于在观众面前亮相,但其首播的...
美联储34年最大分歧叠加油价飙... 美联储按预期维持利率不变,但内部出现34年来最严重分歧,叠加布油创2022年6月以来新高,美债遭抛售...
支付宝消费券回收后,资金是否支... 摘要: 支付宝消费券回收变现后,资金能否直接转入信用卡?本文解答到账方式的相关规则,帮助用户了解资金...
中医介绍5个化痰穴位!收藏这篇... 很多人忽略了“痰”的危害,觉得咳几下就没事,殊不知,肺里的痰长期堆积,只会一步步加重身体负担。 中医...
黄金平台“杰我睿”涉嫌经济犯罪... 红星资本局5月7日消息,深圳水贝知名金店“杰我睿”兑付困难事件有了新进展。日前,深圳市公安局罗湖分局...
多地出台购房新政促楼市升温 记... 今年的“五一”假期,伴随着多个城市楼市新政密集落地,在叠加市场信心持续修复的作用下,房地产市场热度持...
谁是五一“吸金王”?这5座城市... 来源:市场资讯 (来源:21城市观) 哪座城市成为“五一”假期的大赢家? 图源:摄图网 作者|赵晓...
“低招低裁”格局稳固劳动力市场... 智通财经APP获悉,美国上周初请失业金人数在经历前一周回落至近几十年来最低水平后出现小幅反弹,表明尽...