winsocket----适用于tcp协议
#include "lrs.h"
Action()
{
char aa[10];
int result=1;
char str[20],serialNumber[125];
//char str1[10],str2[10];
int num=0,i=0;
num = rand()%10000+1;----1到10000取随机值
sprintf(str,"%010X", num);----格式化为16进制,不足10位时前面加0。补充:这里面还设计到一个溢出的问题,本来是想把12345678964转为十进制输出的,后面发现一直报错,原来是溢出了
//strcpy(str1,"\0");
//strcpy(str2,"\\x");
for(i=0;i<5;i++){
serialNumber[i*4+0] = '\\';
serialNumber[i*4+1] = 'x';
serialNumber[i*4+2] = str[i*2];
serialNumber[i*4+3] = str[i*2+1];
}
serialNumber[20] = '\0';-----每两位前加“\x”,最后的时候需要再补加“\0”,否则最后一位会被更改为莫名其秒的值,C语言定义参数时需要初始化赋值
lr_save_string(serialNumber,"param");----保存为LR的参数,在data.ws中可以直接调用。还有一些函数可以直接保存到buffer中,在这里不适用
//lr_output_message("%s",lr_eval_string("<param>"));
lr_start_transaction("working");
lrs_create_socket("socket1","TCP","RemoteHost=192.168.0.80:1234",LrsLastArg);
//lr_rendezvous("send_gps");
//result = lrs_set_receive_option(Mismatch,MISMATCH_CONTENT);
lrs_send("socket1","buf0",LrsLastArg);
lrs_set_recv_timeout(60,0);
lrs_receive("socket1","buf1",LrsLastArg);
lrs_save_param("socket1",NULL,"param1",0,1);
lrs_close_socket("socket1");
lr_end_transaction("working", LR_AUTO);
strcpy(aa,"\\x00");
result=strcmp(aa,lr_eval_string("<param1>"));
if(result!=0){
lr_error_message("未接收到数据,返回值为%s",lr_eval_string("<param1>"));-----调用参数需要用尖括号
}
lr_think_time(0.5);
return 0;
}
data.ws
;WSRData 2 1
send buf0 256
"\x24"
"<param>"
"\x07\x46\x59\x26\x09\x11\x30\x11\x54\x85\x00\x12\x11\x18\x00\x3E\x00\x00\x00\xFF\xFF\xFB\xFF\xFF\x00\x11\x20\xFF\x0F\xFF\xFF\x63\x18\xFF\x58\x28\x9F\x09"
recv buf1 1
"\x00"
-1