|
近期在做南京地铁2号线的项目,遇到这样一个需求。通过socket协议模拟列车的运行,报文当中某一字节表示列车的索引号,如果是第一辆车,索引号为02,第二辆为04,以此类推,并且是以16进制显示,即第8辆车的时候显示为10,而不是16。
如果在controller中使用不同的vuser模拟不同的列车,很明显,要对索引号进行参数化,那这样的参数如何设计便成了一个问题。首先对于每个vuser,该参数的取值的是唯一的,到这里,大家应该能想到Vuser ID参数或是unique,但这两种直接拿来用均无法满足实际需要。这时便轮到这次要讲的主角出场了:
void lr_whoami (int *vuser_id, char **sgroup, int *scid);
直接看例子:
int vuid;
lr_whoami(&vuid,NULL,NULL);
lr_outmessage("%d",vuid);
如果在Vuser Generator中运行的话输出结果应该是"-1",若是在controller中运行便会打印出相应的vuser id。
vuid取出来后接下来就好办,根据规律,不难写出下面的代码:
int vuid;
char id[2];
lr_whoami(&vuid,NULL,NULL);//取出当前的Vuser ID,保存在vuid整型变量中
//lr_output_message("%d",vuid);
vuid =vuid*2;
itoa(vuid,id,16);//将int类型的vuid转成char数组id,并且是通过16进制
//lr_output_message("%s",id);
lr_save_string(id,"No");//将id保存为参数No供脚本使用
此时保存的参数No便是我们所需要的。 |
|