1WordLW.B1.0truetrueLOCAL:[本地寄存器]:LW.B1.05942dc1f-588b-4485-88a4-8a07f240b2f815a63eb5-743b-45d1-8f6c-7f5fa91f8a9a165791truetruetruetruetrue1true4Constantlw1LW1trueWordLOCAL:[本地寄存器]:LW15942dc1f-588b-4485-88a4-8a07f240b2f857c236a9-b302-4f5b-81bb-8d4d3c3333f6165791truetruetruetrue1true4Constant2WordLB0truetrueLOCAL:[本地寄存器]:LB05942dc1f-588b-4485-88a4-8a07f240b2f82acfc59f-7eb4-4964-8cad-23dfa08e6de4254truetruetruetruetrue4ConstantLW09LW0trueWordLOCAL:[本地寄存器]:LW05942dc1f-588b-4485-88a4-8a07f240b2f8facafe6c-f8ec-4c7e-9202-a4b1e2e162fc65791truetruetruetrue1true4Constant3WordLB0truetrueLOCAL:[本地寄存器]:LB05942dc1f-588b-4485-88a4-8a07f240b2f89effc23b-314f-4015-aa2a-ba452f8cde86254truetruetruetruetrue4ConstantRW06RW0trueWordLOCAL:[本地寄存器]:RW05942dc1f-588b-4485-88a4-8a07f240b2f8725dfe52-d699-4065-82be-30f2f19268b765789truetruetruetrue1true4Constant4LB0truetrueLOCAL:[本地寄存器]:LB05942dc1f-588b-4485-88a4-8a07f240b2f852a2c3e6-62a7-4103-9bc6-014909550198254truetruetruetruetrue4ConstantLB04LW0trueWordLOCAL:[本地寄存器]:LW05942dc1f-588b-4485-88a4-8a07f240b2f81b5276fa-6f8b-4810-a853-b85540eb384965791truetruetruetrue1true4Constantmacro_1macro_1.ctrue#include <macro.h>
int MacroMain()
{
unsigned char data20[1000]={0};
unsigned char data10[4096]={0};
unsigned char data11[4096]={0};
unsigned char data12[4096]={0};
unsigned char data121[4096]={0};
unsigned char data122[4096]={0};
unsigned char data123[4096]={0};
unsigned char data124[4096]={0};
unsigned char data125[4096]={0};
unsigned char data126[4096]={0};
unsigned short i=0,ii=0;
unsigned short data13[4096]={0};
unsigned char bb[30]={0};
unsigned char cityk[50]={0};
unsigned int KK=0,LL=0,ymd=0,high=0,low=0,highdata=0,lowdata=0;
unsigned int NONO=0;
unsigned char host[50]={0};
unsigned short port=0;
unsigned short recvL=0;
unsigned short data=0;
unsigned char nameBuffer[100]; // 临时存储一个name值
unsigned char nameBuffers[12][100]; // 存储最多5个name值
unsigned short nameBuffersUtf16[12][100];
unsigned char *start = NULL;
unsigned char *end = NULL;
float temp[12];
float humidity[12];
int floor = 0;
int index = 0;
unsigned char YS1[100]="124.221.147.225";
//unsigned char YS2[100]="t.weather.sojson.com";
SetWord(@LW0@,0,0);
SetWord(@LW0@,1,0);
SetWord(@LW0@,2,0);
if(GetBit(@LB0@,1)){
floor = 1;
}else if(GetBit(@LB0@,2)){
floor = 2;
}else if(GetBit(@LB0@,3)){
floor = 3;
}else if(GetBit(@LB0@,4)){
floor = 4;
}
if(GetDWord(@RW0@,100)==0)
{
SetMem(YS1,@RW0@,100,strlen(YS1));
SetWord(@RW0@,120,58888);
SetDWord(@RW0@,122,floor);
}
//Mozilla/5.0 (Windows NT 6.1; rv:22.0) Gecko/20100101 Firefox/22.0
sprintf(data20,"%s%d%s%s","GET /coldchain/targetroom/roomMonitor?floor=",floor,"L"," HTTP/1.1\r\n");
strcat(data10, data20);
strcat(data10, "Accept: application/json, text/plain, */* \r\n");
strcat(data10, "Accept-Language: zh-CN,zh;q=0.9 \r\n");
//strcat(data10, "User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; Trident/7.0; rv:11.0) like Gecko\r\n");
strcat(data10, "User-Agent:Mozilla/5.0 (Windows NT 6.1; rv:22.0) Gecko/20100101 Firefox/22.0\r\n");
strcat(data10, "Accept-Encoding: gzip, deflate, br, zstd\r\n");
strcat(data10, "Host: 124.221.147.225:58888\r\n");
strcat(data10, "Token: SZrN75oijJZLCgXg3K98zW4fbXT2soio\r\n");
strcat(data10, "Connection: Keep-Alive\r\n");
strcat(data10, "\r\n");
GetMem(host,@RW0@,100,40);
port=GetWord(@RW0@,120);
NONO=OpenSocket(host,port,1);
SetWord(@LW0@,0,NONO);//句柄号
if(NONO>=1000)
{
Debug(0,"socket opened\n");
KK=SendSocket(NONO,data10,strlen(data10));
SetWord(@LW0@,1,KK);//发送字节
LL=RecvSocket(NONO,data11,4096,2000);
Delay(200);
SetWord(@LW0@,20,LL);//接收字节
Debug(0,"%s",data10);
Debug(0,"%s",data11);
//CloseSocket(NONO);
}
if(LL>0&&LL<5000)
{
unsigned char *pos = NULL;
int offset = 0;
for(i=0;i<12;i++){
strcpy(nameBuffers[i],"无");
temp[i]=0.0;
humidity[i]=0.0;
}
while (index < 12 && (pos = strstr(data11 + offset, "\"roomName\":\"")) != NULL)
{
// 找到 "name":" 的位置
offset = pos - data11 + strlen("\"roomName\":\""); // 移动到值的起始位置
unsigned char nameBuffer[100];
int j = 0;
// 提取值直到遇到双引号
while (data11[offset + j] != '"' && j < 99)
{
nameBuffer[j] = data11[offset + j];
j++;
}
nameBuffer[j] = '\0'; // 添加字符串结束符
// 存入 nameBuffers
strncpy(nameBuffers[index], nameBuffer, sizeof(nameBuffers[index]) - 1);
nameBuffers[index][sizeof(nameBuffers[index]) - 1] = '\0';
// 转换为 UTF-16 并写入寄存器
Utf8Str2Utf16Str(nameBuffers[index], nameBuffersUtf16[index]);
//SetMem(nameBuffersUtf16[index], @LW0@, 100 + index * 100, 10);
index++; // 索引递增
offset += j + 1; // 更新偏移,跳过当前字段
}
}
// 输出提取结果
for (i = 0; i < 12; i++)
{
SetMem(nameBuffersUtf16[i], @LW0@, 100 + i * 100, 10);
SetFloat(@LW0@, 100 + i * 100 + 30, temp[i]);
SetFloat(@LW0@, 100 + i * 100 + 50, humidity[i]);
}
}8a0f279b-1824-4547-81b4-f569659e8b721