<input type="file" name="filePath" />最简单的解决方法

本文探讨了在JSP中如何正确获取通过&lt;input type=file&gt;上传的文件路径,包括使用JavaScript辅助获取完整路径的方法及调整浏览器安全设置的影响。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

问题描述:jsp 中获取 <input type = file id ="filePath" name= "filePath"> 的路径时,在后台能够取得文件名,但是获取不了文件的完整路径。

前台代码:上传头像:<input type="file" name="filePath"  />

后台获取:String filePath = request.getParameter("filePath");    //获取文件路径


解决办法:网上看了很多,第一种说法,如实现可以用js代码
<input type="file" onChange="document.getElementsByName('filePath')[0].value=this.value" />
<input type="hidden" name="filePath" />
当用户用file选择了本地文件目录后,通过onchange事件修改隐藏域filePath的值,提交表单后,后台获取参数filePath的值。


第二种说法,就是可能路径名转码的时候出现问题。

但是还是对JS不是很熟,另外我家里的笔记本运行就可以,工作电脑上就不行,让我郁闷好久。后面发现,直接改下IE浏览器的安全设置就行,不要设置太高就可以了。

#include "NetworkTopologyInverse.h" #include <cstring> #include <iomanip> #include <sstream> #include <algorithm> #include <cctype> #include <fstream> #include <map> #include <regex> // 添加正则表达式支持 // 增强版十六进制字符串转换(处理空格和特殊字符) std::vector<uint8_t> NetopInverse::hex_str_to_bytes(const std::string &hex) { std::vector<uint8_t> bytes; if (hex.empty()) return bytes; // 移除所有非十六进制字符 std::string cleanHex; for (char c : hex) { if (std::isxdigit(c)) { cleanHex += std::toupper(c); } } if (cleanHex.size() % 2 != 0) { std::cerr << "错误:十六进制字符串长度不是偶数: " << cleanHex << std::endl; return bytes; } for (size_t i = 0; i < cleanHex.size(); i += 2) { std::string byteString = cleanHex.substr(i, 2); try { uint8_t byte = static_cast<uint8_t>(std::stoul(byteString, nullptr, 16)); bytes.push_back(byte); } catch (...) { std::cerr << "错误:转换十六进制字节失败: " << byteString << std::endl; } } return bytes; } // 精确IP地址解析(处理字节序问题) std::string NetopInverse::parse_ip_address(const std::vector<uint8_t> &bytes, size_t start) { if (bytes.size() < start + 4) return ""; return std::to_string(bytes[start]) + "." + std::to_string(bytes[start+1]) + "." + std::to_string(bytes[start+2]) + "." + std::to_string(bytes[start+3]); } // 从GSD文件名提取厂商信息(使用正则表达式精确匹配) void extract_vendor_info(const std::string& gsdFile, std::string& vendorName, std::string& vendorID) { // 示例: gsdml-v2.31-obara-siv31-40-20190707.xml std::regex vendorRegex(R"(gsdml-v(\d+)\.(\d+)-([a-zA-Z]+)-)"); std::smatch match; if (std::regex_search(gsdFile, match, vendorRegex) && match.size() > 3) { vendorName = match[3]; vendorID = "0x" + match[1].str() + match[2].str(); } else { vendorName = "unknown"; vendorID = "0x0000"; } } // Json::Value NetopInverse::parse_pn_driver(const std::string &xmlContent) { tinyxml2::XMLDocument doc; doc.Parse(xmlContent.c_str()); Json::Value pnDriver; tinyxml2::XMLElement *root = doc.RootElement(); if (!root) return pnDriver; // 查找名为"profinetdriver"的Object tinyxml2::XMLElement *profinetDriver = nullptr; for (tinyxml2::XMLElement *obj = root->FirstChildElement("Object"); obj != nullptr; obj = obj->NextSiblingElement("Object")) { const char *name = obj->Attribute("Name"); if (name && std::strcmp(name, "profinetdriver") == 0) { profinetDriver = obj; break; } } if (!profinetDriver) return pnDriver; // 在profinetdriver下查找PN_Driver_1_Interface for (tinyxml2::XMLElement *interface = profinetDriver->FirstChildElement("Object"); interface != nullptr; interface = interface->NextSiblingElement("Object")) { const char *name = interface->Attribute("Name"); if (name && std::strcmp(name, "PN_Driver_1_Interface") == 0) { // 查找DataRecordsConf变量 for (tinyxml2::XMLElement *drcVar = interface->FirstChildElement("Variable"); drcVar != nullptr; drcVar = drcVar->NextSiblingElement("Variable")) { const char *varName = drcVar->Attribute("Name"); if (varName && std::strcmp(varName, "DataRecordsConf") == 0) { // 获取Value节点 tinyxml2::XMLElement *valueNode = drcVar->FirstChildElement("Value"); if (valueNode) { // 遍历Field节点(Value的子节点) for (tinyxml2::XMLElement *field = valueNode->FirstChildElement("Field"); field != nullptr; field = field->NextSiblingElement("Field")) { const char *key = field->Attribute("Key"); const char *value = field->GetText(); if (key && value) { if (std::strcmp(key, "4096") == 0) { std::vector<uint8_t> bytes = hex_str_to_bytes(value); if (bytes.size() >= 16) { pnDriver["IPAddress"] = parse_ip_address(bytes, 8); pnDriver["SubnetMask"] = parse_ip_address(bytes, 12); } } } } } break; // 找到DataRecordsConf后退出变量循环 } } break; // 找到接口后退出接口循环 } } pnDriver["DeviceName"] = "profinetdriver"; pnDriver["SetInTheProject"] = true; return pnDriver; } // 修复设备模块解析(处理起始地址错误) Json::Value NetopInverse::parse_decentral_devices(const std::string &xmlContent) { tinyxml2::XMLDocument doc; doc.Parse(xmlContent.c_str()); Json::Value devices(Json::arrayValue); // 模块ID映射 std::map<std::string, std::string> moduleIdMap = { {"64 Digital Input", "ID_MODULE_ADI101"}, {"136 Digital Output", "ID_MODULE_ADI201"}, {"Diagnostics type 1_1", "ID_MOD_DIAG_TYPE1"}, {"32 valves_1", "ID_MOD_VALVE32_OUTPUT"}, {"EX245-DX1_1", "ID_MOD_DX1"} }; // 查找PROFINET IO-System tinyxml2::XMLElement *ioSystem = doc.RootElement()->FirstChildElement("Object"); while (ioSystem) { const char *name = ioSystem->Attribute("Name"); if (name && std::strcmp(name, "PROFINET IO-System") == 0) break; ioSystem = ioSystem->NextSiblingElement("Object"); } if (!ioSystem) return devices; // 遍历所有设备 tinyxml2::XMLElement *device = ioSystem->FirstChildElement("Object"); while (device) { const char *deviceName = device->Attribute("Name"); if (!deviceName || std::strcmp(deviceName, "idevice-dap") == 0) { device = device->NextSiblingElement("Object"); continue; } Json::Value deviceJson; deviceJson["DAP_ID"] = "DAP"; deviceJson["DAP_Name"] = deviceName; deviceJson["ReductionRatio"] = 2; deviceJson["SetInTheProject"] = true; // 解析设备ID int deviceID = -1; tinyxml2::XMLElement *keyElem = device->FirstChildElement("Key"); while (keyElem) { const char *aid = keyElem->Attribute("AID"); if (aid && std::strcmp(aid, "3") == 0 && keyElem->GetText()) { deviceID = std::atoi(keyElem->GetText()); break; } keyElem = keyElem->NextSiblingElement("Key"); } // 格式化为十六进制 std::ostringstream oss; oss << "0x" << std::hex << std::setw(4) << std::setfill('0') << deviceID; deviceJson["DeviceID"] = oss.str(); // 解析GSD文件 tinyxml2::XMLElement *gsdElem = device->FirstChildElement("GSDMLFile"); if (gsdElem && gsdElem->GetText()) { std::string gsdFile = gsdElem->GetText(); deviceJson["RefGSD"] = gsdFile; std::string vendorName, vendorID; extract_vendor_info(gsdFile, vendorName, vendorID); deviceJson["VendorName"] = vendorName; deviceJson["VendorID"] = vendorID; } // 解析网络参数(修复IP地址转换) std::string ipAddress, subnetMask, devName; tinyxml2::XMLElement *netParams = device->FirstChildElement("Object"); while (netParams) { const char *objName = netParams->Attribute("Name"); if (objName && std::strcmp(objName, "Network Parameters") == 0) { tinyxml2::XMLElement *netConfig = netParams->FirstChildElement("Variable"); while (netConfig) { const char *varName = netConfig->Attribute("Name"); if (varName && std::strcmp(varName, "NetworkParamConfig") == 0) { tinyxml2::XMLElement *field = netConfig->FirstChildElement("Field"); while (field) { const char *key = field->Attribute("Key"); const char *value = field->GetText(); if (key && value) { if (std::strcmp(key, "4096") == 0) { std::vector<uint8_t> bytes = hex_str_to_bytes(value); if (bytes.size() >= 16) { // 修正偏移量:从第8字节开始 ipAddress = parse_ip_address(bytes, 8); subnetMask = parse_ip_address(bytes, 12); } } else if (std::strcmp(key, "4099") == 0) { std::vector<uint8_t> bytes = hex_str_to_bytes(value); if (bytes.size() > 12) { // 跳过前12字节的头部 for (size_t i = 12; i < bytes.size(); i++) { if (bytes[i] == 0) break; devName += static_cast<char>(bytes[i]); } } } } field = field->NextSiblingElement("Field"); } } netConfig = netConfig->NextSiblingElement("Variable"); } break; } netParams = netParams->NextSiblingElement("Object"); } deviceJson["IPAddress"] = ipAddress; deviceJson["SubnetMask"] = subnetMask; deviceJson["DeviceName"] = devName.empty() ? deviceName : devName; // 解析模块(修复起始地址错误) Json::Value modules(Json::arrayValue); tinyxml2::XMLElement *module = device->FirstChildElement("Object"); while (module) { const char *moduleName = module->Attribute("Name"); if (!moduleName || std::strstr(moduleName, "Port") != nullptr || std::strstr(moduleName, "Interface") != nullptr || std::strstr(moduleName, "Network") != nullptr) { module = module->NextSiblingElement("Object"); continue; } Json::Value moduleJson; moduleJson["ModuleName"] = moduleName; // 查找模块ID auto it = moduleIdMap.find(moduleName); if (it != moduleIdMap.end()) { moduleJson["ModuleID"] = it->second; } else { moduleJson["ModuleID"] = "UNKNOWN"; } // 解析槽位号 int slot = -1; tinyxml2::XMLElement *keyElem = module->FirstChildElement("Key"); while (keyElem) { const char *aid = keyElem->Attribute("AID"); if (aid && std::strcmp(aid, "1") == 0 && keyElem->GetText()) { slot = std::atoi(keyElem->GetText()); break; } keyElem = keyElem->NextSiblingElement("Key"); } moduleJson["Slot"] = slot; // 初始化IO映射默认值 moduleJson["InputStartAddress"] = -1; moduleJson["InputLength"] = 0; moduleJson["OutputStartAddress"] = -1; moduleJson["OutputLength"] = 0; // 解析子模块(修复起始地址错误) tinyxml2::XMLElement *subModule = module->FirstChildElement("Object"); while (subModule) { const char *subName = subModule->Attribute("Name"); if (subName && std::strcmp(subName, "(Sub)Module") == 0) { tinyxml2::XMLElement *var = subModule->FirstChildElement("Variable"); while (var) { const char *varName = var->Attribute("Name"); if (varName && std::strcmp(varName, "IOmapping") == 0) { tinyxml2::XMLElement *elem = var->FirstChildElement("Element"); while (elem) { const char *aid = elem->Attribute("AID"); const char *text = elem->GetText(); if (aid && text) { try { int val = std::stoi(text); if (std::strcmp(aid, "6") == 0) moduleJson["InputStartAddress"] = val; else if (std::strcmp(aid, "7") == 0) moduleJson["InputLength"] = val; else if (std::strcmp(aid, "8") == 0) moduleJson["OutputStartAddress"] = val; else if (std::strcmp(aid, "9") == 0) moduleJson["OutputLength"] = val; } catch (...) { std::cerr << "错误:转换IO映射值失败: " << text << std::endl; } } elem = elem->NextSiblingElement("Element"); } } var = var->NextSiblingElement("Variable"); } } subModule = subModule->NextSiblingElement("Object"); } modules.append(moduleJson); module = module->NextSiblingElement("Object"); } deviceJson["Module"] = modules; devices.append(deviceJson); device = device->NextSiblingElement("Object"); } return devices; } // 修复IDevice解析(处理输入输出长度错误) Json::Value NetopInverse::parse_idevice(const std::string &xmlContent) { tinyxml2::XMLDocument doc; doc.Parse(xmlContent.c_str()); Json::Value idevice; // 默认值 idevice["Activate"] = true; idevice["InputLength"] = 0; // 初始化为0 idevice["OutputLength"] = 0; // 初始化为0 // 查找PROFINET IO-System tinyxml2::XMLElement *ioSystem = doc.RootElement()->FirstChildElement("Object"); while (ioSystem) { const char *name = ioSystem->Attribute("Name"); if (name && std::strcmp(name, "PROFINET IO-System") == 0) break; ioSystem = ioSystem->NextSiblingElement("Object"); } if (!ioSystem) return idevice; // 查找智能设备 tinyxml2::XMLElement *device = ioSystem->FirstChildElement("Object"); while (device) { const char *devName = device->Attribute("Name"); if (devName && std::strcmp(devName, "idevice-dap") == 0) { // 查找VirtualPnModule tinyxml2::XMLElement *virtualModule = device->FirstChildElement("Object"); while (virtualModule) { const char *modName = virtualModule->Attribute("Name"); if (modName && std::strcmp(modName, "VirtualPnModule") == 0) { tinyxml2::XMLElement *area = virtualModule->FirstChildElement("Object"); while (area) { const char *areaName = area->Attribute("Name"); if (areaName) { if (std::strcmp(areaName, "InputArea") == 0) { tinyxml2::XMLElement *var = area->FirstChildElement("Variable"); while (var) { const char *varName = var->Attribute("Name"); if (varName && std::strcmp(varName, "IOmapping") == 0) { tinyxml2::XMLElement *elem = var->FirstChildElement("Element"); while (elem) { const char *aid = elem->Attribute("AID"); const char *text = elem->GetText(); if (aid && text) { try { if (std::strcmp(aid, "7") == 0) { // 修正:使用实际输入长度(XML中是128) idevice["InputLength"] = std::stoi(text); } } catch (...) { std::cerr << "错误:转换输入长度失败: " << text << std::endl; } } elem = elem->NextSiblingElement("Element"); } } var = var->NextSiblingElement("Variable"); } } else if (std::strcmp(areaName, "OutputArea") == 0) { tinyxml2::XMLElement *var = area->FirstChildElement("Variable"); while (var) { const char *varName = var->Attribute("Name"); if (varName && std::strcmp(varName, "IOmapping") == 0) { tinyxml2::XMLElement *elem = var->FirstChildElement("Element"); while (elem) { const char *aid = elem->Attribute("AID"); const char *text = elem->GetText(); if (aid && text) { try { if (std::strcmp(aid, "9") == 0) { // 修正:使用实际输出长度(XML中是128) idevice["OutputLength"] = std::stoi(text); } } catch (...) { std::cerr << "错误:转换输出长度失败: " << text << std::endl; } } elem = elem->NextSiblingElement("Element"); } } var = var->NextSiblingElement("Variable"); } } } area = area->NextSiblingElement("Object"); } break; } virtualModule = virtualModule->NextSiblingElement("Object"); } break; } device = device->NextSiblingElement("Object"); } // 如果未解析到值,使用默认值 if (idevice["InputLength"].asInt() == 0) idevice["InputLength"] = 128; if (idevice["OutputLength"].asInt() == 0) idevice["OutputLength"] = 128; return idevice; } // 组合完整网络拓扑 void NetopInverse::combine_network_topology(const std::string &xmlContent) { // 解析各组件 Json::Value pnDriver = parse_pn_driver(xmlContent); Json::Value decentralDevices = parse_decentral_devices(xmlContent); Json::Value idevice = parse_idevice(xmlContent); // 构建完整JSON Json::Value root; root["DataType"] = 12; root["PN_Driver"] = pnDriver; root["DecentralDevice"] = decentralDevices; root["IDevice"] = idevice; root["Error"] = Json::arrayValue; root["ErrorID"] = Json::arrayValue; root["Function"] = Json::objectValue; // 保存JSON文件 const char *filename = "NetworkTopologyInverse.json"; int result = NRC_SaveJsonToJsonFile(filename, root); if (result > 0) { std::cout << "JSON文件保存成功,大小: " << result << " 字节" << std::endl; } else { std::cerr << "错误:保存JSON文件失败" << std::endl; } } // 主执行函数 void NetopInverse::do_NetopInverse() { std::ifstream file("./test/PROFINET Driver_PN_Driver_1.xml"); if (!file.is_open()) { std::cerr << "错误:无法打开XML文件" << std::endl; return; } std::string xmlContent((std::istreambuf_iterator<char>(file)), std::istreambuf_iterator<char>()); combine_network_topology(xmlContent); } 把有错误的路径修改一下 xml: <?xml version="1.0" encoding="utf-8"?> <Object Name="HWConfiguration"> <ClassRID>1</ClassRID> <Object Name="profinetdriver"> <ClassRID>2</ClassRID> <Variable Name="DataRecordsConf"> <AID>17</AID> <Value Datatype="SparseArray" Valuetype="BLOB"> <Field Key="4101" Length="48">02000001000000000000B201000000028000FFFFFFFF000000000130000000008001FFFFFFFF00000000013100000000</Field> <Field Key="45169" Length="28">F003001802000000000206077075626C696300007072697661746500</Field> </Value> </Variable> <Object Name="PN_Driver_1_Interface"> <ClassRID>3</ClassRID> <Key AID="2">32768</Key> <Variable Name="LADDR"> <AID>10</AID> <Value Datatype="Scalar" Valuetype="UINT16">259</Value> </Variable> <Variable Name="DataRecordsConf"> <AID>11</AID> <Value Datatype="SparseArray" Valuetype="BLOB"> <Field Key="4097" Length="12">300600080101000000000000</Field> <Field Key="4096" Length="20">3000001001000000C0A8020EFFFFFF00C0A8020E</Field> <Field Key="4100" Length="12">300900080101000000000000</Field> <Field Key="4099" Length="28">A201001801000000000E000070726F66696E65746472697665720000</Field> <Field Key="65536" Length="12">F00000080100002000030000</Field> <Field Key="32881" Length="12">025000080100000000000001</Field> <Field Key="143616" Length="20">F001001001000000002A00080064000000000000</Field> </Value> </Variable> <Link> <AID>16</AID> <TargetRID>2296447237</TargetRID> </Link> </Object> <Object Name="Port 1"> <ClassRID>4</ClassRID> <Key AID="2">32769</Key> <Variable Name="LADDR"> <AID>10</AID> <Value Datatype="Scalar" Valuetype="UINT16">260</Value> </Variable> <Variable Name="DataRecordsConf"> <AID>11</AID> <Value Datatype="SparseArray" Valuetype="BLOB"/> </Variable> </Object> </Object> <Object Name="PROFINET IO-System"> <RID>2296447237</RID> <ClassRID>5</ClassRID> <Variable Name="LADDR"> <AID>10</AID> <Value Datatype="Scalar" Valuetype="UINT16">261</Value> </Variable> <Variable Name="IOsysParamConfig"> <AID>15</AID> <Value Datatype="SparseArray" Valuetype="BLOB"> <Field Key="12352" Length="20">3040001001010000002A000800640258012C0000</Field> </Value> </Variable> <Object Name="SWAQ3_1"> <GSDMLFile>gsdml-v2.31-obara-siv31-40-20190707.xml</GSDMLFile> <ClassRID>6</ClassRID> <Key AID="3">1</Key> <Variable Name="DeactivatedConfig"> <AID>4</AID> <Value Datatype="Scalar" Valuetype="BOOL">false</Value> </Variable> <Variable Name="LADDR"> <AID>10</AID> <Value Datatype="Scalar" Valuetype="UINT16">264</Value> </Variable> <Variable Name="IODevParamConfig"> <AID>13</AID> <Value Datatype="SparseArray" Valuetype="BLOB"> <Field Key="12384" Length="32">3060001C01000000038A003000010FE400000001000010000000000000000000</Field> <Field Key="12545" Length="224">310100DC01000000000100000000000000030074010000000000800100000000800200000004000100000000000100000000000100000001000100000000800000000000000200000000000100000001000100000000800100000000000300000000000100000001000100000000800200000000000300000000000100000001000100000000002C010000010000000000010000000100000001000100000000080000010000000100080001000100000000002C0100000200000000000200000001000000010001000010001100000200000000001100010001000000000000</Field> <Field Key="12544" Length="64">3100003C010100000100000181AF66D6BF346347B1C35DA7EF318E514000001100C8000000000000000000000000000000000000000000000000000000000000</Field> <Field Key="12546" Length="256">310200FC01000000000200780100000100018892000000000002000E80000020000200010000FFFFFFFF000500050000C0000000000000000000000000000000000000000001000000000005000000010000000000008000000100000000800100020000000080020003000000010001000400000000000100020001000D0000000000780100000200028892000000000002001780010020000200010000FFFFFFFF000500050000C0000000000000000000000000000000000000000001000000000001000200010005000000000005000000010000000000008000000100000000800100020000000080020003000000010001000400000000000000000000</Field> <Field Key="12549" Length="58">31050036010000000001002C0024E05000000609002001000000060100180100000000000001C7B057EBE0CB5DAA8B0ACEB18380BFE500000000</Field> <Field Key="12551" Length="28">310700180100000001000001889200000000000000010003C000A000</Field> </Value> </Variable> <Object Name="Network Parameters"> <ClassRID>11</ClassRID> <Variable Name="NetworkParamConfig"> <AID>12</AID> <Value Datatype="SparseArray" Valuetype="BLOB"> <Field Key="4099" Length="24">A201001401000000000C0000737761713378623161353533</Field> <Field Key="4096" Length="20">3000001001000000C0A80202FFFFFF00C0A80202</Field> <Field Key="4103" Length="12">301100080101000000000000</Field> </Value> </Variable> </Object> <Object Name="SWAQ3_1"> <ClassRID>7</ClassRID> <Key AID="1">0</Key> <Object Name="SWAQ3_1"> <ClassRID>8</ClassRID> <Key AID="2">65520</Key> <Variable Name="LADDR"> <AID>10</AID> <Value Datatype="Scalar" Valuetype="UINT16">262</Value> </Variable> <Variable Name="DataRecordsConf"> <AID>11</AID> <Value Datatype="SparseArray" Valuetype="BLOB"/> </Variable> <Variable Name="DataRecordsTransferSequence"> <AID>14</AID> <Value Datatype="Scalar" Valuetype="BLOB" Length="0"/> </Variable> </Object> <Object Name="SWAQ3_1"> <ClassRID>9</ClassRID> <Key AID="2">1</Key> <Variable Name="LADDR"> <AID>10</AID> <Value Datatype="Scalar" Valuetype="UINT16">265</Value> </Variable> <Variable Name="DataRecordsConf"> <AID>11</AID> <Value Datatype="SparseArray" Valuetype="BLOB"/> </Variable> <Variable Name="DataRecordsTransferSequence"> <AID>14</AID> <Value Datatype="Scalar" Valuetype="BLOB" Length="0"/> </Variable> </Object> <Object Name="SWAQ3_1_Interface"> <ClassRID>9</ClassRID> <Key AID="2">32768</Key> <Variable Name="LADDR"> <AID>10</AID> <Value Datatype="Scalar" Valuetype="UINT16">266</Value> </Variable> <Variable Name="DataRecordsConf"> <AID>11</AID> <Value Datatype="SparseArray" Valuetype="BLOB"> <Field Key="32849" Length="28">0213001801000000C3D687FE789E03A1ACDBE5BFCBBC27B600000000</Field> <Field Key="32850" Length="40">0211002401000000C3D687FE789E03A1ACDBE5BFCBBC27B6000000000B6D7270646F6D61696E2D31</Field> <Field Key="32881" Length="12">025000080100000000000001</Field> </Value> </Variable> <Variable Name="DataRecordsTransferSequence"> <AID>14</AID> <Value Datatype="Scalar" Valuetype="BLOB" Length="0"/> </Variable> </Object> <Object Name="Port 1"> <ClassRID>9</ClassRID> <Key AID="2">32769</Key> <Variable Name="LADDR"> <AID>10</AID> <Value Datatype="Scalar" Valuetype="UINT16">267</Value> </Variable> <Variable Name="DataRecordsConf"> <AID>11</AID> <Value Datatype="SparseArray" Valuetype="BLOB"/> </Variable> <Variable Name="DataRecordsTransferSequence"> <AID>14</AID> <Value Datatype="Scalar" Valuetype="BLOB" Length="0"/> </Variable> </Object> <Object Name="Port 2"> <ClassRID>9</ClassRID> <Key AID="2">32770</Key> <Variable Name="LADDR"> <AID>10</AID> <Value Datatype="Scalar" Valuetype="UINT16">268</Value> </Variable> <Variable Name="DataRecordsConf"> <AID>11</AID> <Value Datatype="SparseArray" Valuetype="BLOB"/> </Variable> <Variable Name="DataRecordsTransferSequence"> <AID>14</AID> <Value Datatype="Scalar" Valuetype="BLOB" Length="0"/> </Variable> </Object> </Object> <Object Name="64 Digital Input"> <ClassRID>7</ClassRID> <Key AID="1">1</Key> <Object Name="(Sub)Module"> <ClassRID>10</ClassRID> <Key AID="2">1</Key> <Variable Name="LADDR"> <AID>10</AID> <Value Datatype="Scalar" Valuetype="UINT16">270</Value> </Variable> <Variable Name="DataRecordsConf"> <AID>11</AID> <Value Datatype="SparseArray" Valuetype="BLOB"/> </Variable> <Variable Name="DataRecordsTransferSequence"> <AID>14</AID> <Value Datatype="Scalar" Valuetype="BLOB" Length="0"/> </Variable> <Variable Name="IOmapping"> <AID>5</AID> <Value Datatype="Scalar" Valuetype="STRUCT"> <Element AID="6" Datatype="Scalar" Valuetype="UINT32">0</Element> <Element AID="7" Datatype="Scalar" Valuetype="UINT16">8</Element> <Element AID="8" Datatype="Scalar" Valuetype="UINT32">0</Element> <Element AID="9" Datatype="Scalar" Valuetype="UINT16">0</Element> </Value> </Variable> </Object> </Object> <Object Name="136 Digital Output"> <ClassRID>7</ClassRID> <Key AID="1">2</Key> <Object Name="(Sub)Module"> <ClassRID>10</ClassRID> <Key AID="2">1</Key> <Variable Name="LADDR"> <AID>10</AID> <Value Datatype="Scalar" Valuetype="UINT16">272</Value> </Variable> <Variable Name="DataRecordsConf"> <AID>11</AID> <Value Datatype="SparseArray" Valuetype="BLOB"/> </Variable> <Variable Name="DataRecordsTransferSequence"> <AID>14</AID> <Value Datatype="Scalar" Valuetype="BLOB" Length="0"/> </Variable> <Variable Name="IOmapping"> <AID>5</AID> <Value Datatype="Scalar" Valuetype="STRUCT"> <Element AID="6" Datatype="Scalar" Valuetype="UINT32">0</Element> <Element AID="7" Datatype="Scalar" Valuetype="UINT16">0</Element> <Element AID="8" Datatype="Scalar" Valuetype="UINT32">0</Element> <Element AID="9" Datatype="Scalar" Valuetype="UINT16">17</Element> </Value> </Variable> </Object> </Object> </Object> <Object Name="SWAQ3_2"> <GSDMLFile>gsdml-v2.31-obara-siv31-40-20190707.xml</GSDMLFile> <ClassRID>6</ClassRID> <Key AID="3">2</Key> <Variable Name="DeactivatedConfig"> <AID>4</AID> <Value Datatype="Scalar" Valuetype="BOOL">false</Value> </Variable> <Variable Name="LADDR"> <AID>10</AID> <Value Datatype="Scalar" Valuetype="UINT16">275</Value> </Variable> <Variable Name="IODevParamConfig"> <AID>13</AID> <Value Datatype="SparseArray" Valuetype="BLOB"> <Field Key="12384" Length="32">3060001C01000000038A003000010FE400000001000010000000000000000000</Field> <Field Key="12545" Length="224">310100DC01000000000100000000000000030074010000000000800100000000800200000004000100000000000100000000000100000001000100000000800000000000000200000000000100000001000100000000800100000000000300000000000100000001000100000000800200000000000300000000000100000001000100000000002C010000010000000000010000000100000001000100000000080000010000000100080001000100000000002C0100000200000000000200000001000000010001000010001100000200000000001100010001000000000000</Field> <Field Key="12544" Length="64">3100003C01010000010000018C771B18FE9FB448B169862B00DAE21D4000001100C8000000000000000000000000000000000000000000000000000000000000</Field> <Field Key="12546" Length="256">310200FC01000000000200780100000100018892000000000002000E80020020000200020000FFFFFFFF000500050000C0000000000000000000000000000000000000000001000000000005000000010000000000008000000100000000800100020000000080020003000000010001000400000000000100020001000D0000000000780100000200028892000000000002001780030020000200020000FFFFFFFF000500050000C0000000000000000000000000000000000000000001000000000001000200010005000000000005000000010000000000008000000100000000800100020000000080020003000000010001000400000000000000000000</Field> <Field Key="12549" Length="58">31050036010000000001002C0024E05000000609002001000000060100180100000000000001C7B057EBE0CB5DAA8B0ACEB18380BFE500000000</Field> <Field Key="12551" Length="28">310700180100000001000001889200000000000000010003C000A000</Field> </Value> </Variable> <Object Name="Network Parameters"> <ClassRID>11</ClassRID> <Variable Name="NetworkParamConfig"> <AID>12</AID> <Value Datatype="SparseArray" Valuetype="BLOB"> <Field Key="4099" Length="24">A201001401000000000C0000737761713378623261343133</Field> <Field Key="4096" Length="20">3000001001000000C0A80201FFFFFF00C0A80201</Field> <Field Key="4103" Length="12">301100080101000000000000</Field> </Value> </Variable> </Object> <Object Name="SWAQ3_2"> <ClassRID>7</ClassRID> <Key AID="1">0</Key> <Object Name="SWAQ3_2"> <ClassRID>8</ClassRID> <Key AID="2">65520</Key> <Variable Name="LADDR"> <AID>10</AID> <Value Datatype="Scalar" Valuetype="UINT16">273</Value> </Variable> <Variable Name="DataRecordsConf"> <AID>11</AID> <Value Datatype="SparseArray" Valuetype="BLOB"/> </Variable> <Variable Name="DataRecordsTransferSequence"> <AID>14</AID> <Value Datatype="Scalar" Valuetype="BLOB" Length="0"/> </Variable> </Object> <Object Name="SWAQ3_2"> <ClassRID>9</ClassRID> <Key AID="2">1</Key> <Variable Name="LADDR"> <AID>10</AID> <Value Datatype="Scalar" Valuetype="UINT16">276</Value> </Variable> <Variable Name="DataRecordsConf"> <AID>11</AID> <Value Datatype="SparseArray" Valuetype="BLOB"/> </Variable> <Variable Name="DataRecordsTransferSequence"> <AID>14</AID> <Value Datatype="Scalar" Valuetype="BLOB" Length="0"/> </Variable> </Object> <Object Name="SWAQ3_2_Interface"> <ClassRID>9</ClassRID> <Key AID="2">32768</Key> <Variable Name="LADDR"> <AID>10</AID> <Value Datatype="Scalar" Valuetype="UINT16">277</Value> </Variable> <Variable Name="DataRecordsConf"> <AID>11</AID> <Value Datatype="SparseArray" Valuetype="BLOB"> <Field Key="32849" Length="28">0213001801000000C3D687FE789E03A1ACDBE5BFCBBC27B600000000</Field> <Field Key="32850" Length="40">0211002401000000C3D687FE789E03A1ACDBE5BFCBBC27B6000000000B6D7270646F6D61696E2D31</Field> <Field Key="32881" Length="12">025000080100000000000001</Field> </Value> </Variable> <Variable Name="DataRecordsTransferSequence"> <AID>14</AID> <Value Datatype="Scalar" Valuetype="BLOB" Length="0"/> </Variable> </Object> <Object Name="Port 1"> <ClassRID>9</ClassRID> <Key AID="2">32769</Key> <Variable Name="LADDR"> <AID>10</AID> <Value Datatype="Scalar" Valuetype="UINT16">278</Value> </Variable> <Variable Name="DataRecordsConf"> <AID>11</AID> <Value Datatype="SparseArray" Valuetype="BLOB"/> </Variable> <Variable Name="DataRecordsTransferSequence"> <AID>14</AID> <Value Datatype="Scalar" Valuetype="BLOB" Length="0"/> </Variable> </Object> <Object Name="Port 2"> <ClassRID>9</ClassRID> <Key AID="2">32770</Key> <Variable Name="LADDR"> <AID>10</AID> <Value Datatype="Scalar" Valuetype="UINT16">279</Value> </Variable> <Variable Name="DataRecordsConf"> <AID>11</AID> <Value Datatype="SparseArray" Valuetype="BLOB"/> </Variable> <Variable Name="DataRecordsTransferSequence"> <AID>14</AID> <Value Datatype="Scalar" Valuetype="BLOB" Length="0"/> </Variable> </Object> </Object> <Object Name="64 Digital Input"> <ClassRID>7</ClassRID> <Key AID="1">1</Key> <Object Name="(Sub)Module"> <ClassRID>10</ClassRID> <Key AID="2">1</Key> <Variable Name="LADDR"> <AID>10</AID> <Value Datatype="Scalar" Valuetype="UINT16">281</Value> </Variable> <Variable Name="DataRecordsConf"> <AID>11</AID> <Value Datatype="SparseArray" Valuetype="BLOB"/> </Variable> <Variable Name="DataRecordsTransferSequence"> <AID>14</AID> <Value Datatype="Scalar" Valuetype="BLOB" Length="0"/> </Variable> <Variable Name="IOmapping"> <AID>5</AID> <Value Datatype="Scalar" Valuetype="STRUCT"> <Element AID="6" Datatype="Scalar" Valuetype="UINT32">8</Element> <Element AID="7" Datatype="Scalar" Valuetype="UINT16">8</Element> <Element AID="8" Datatype="Scalar" Valuetype="UINT32">0</Element> <Element AID="9" Datatype="Scalar" Valuetype="UINT16">0</Element> </Value> </Variable> </Object> </Object> <Object Name="136 Digital Output"> <ClassRID>7</ClassRID> <Key AID="1">2</Key> <Object Name="(Sub)Module"> <ClassRID>10</ClassRID> <Key AID="2">1</Key> <Variable Name="LADDR"> <AID>10</AID> <Value Datatype="Scalar" Valuetype="UINT16">283</Value> </Variable> <Variable Name="DataRecordsConf"> <AID>11</AID> <Value Datatype="SparseArray" Valuetype="BLOB"/> </Variable> <Variable Name="DataRecordsTransferSequence"> <AID>14</AID> <Value Datatype="Scalar" Valuetype="BLOB" Length="0"/> </Variable> <Variable Name="IOmapping"> <AID>5</AID> <Value Datatype="Scalar" Valuetype="STRUCT"> <Element AID="6" Datatype="Scalar" Valuetype="UINT32">0</Element> <Element AID="7" Datatype="Scalar" Valuetype="UINT16">0</Element> <Element AID="8" Datatype="Scalar" Valuetype="UINT32">17</Element> <Element AID="9" Datatype="Scalar" Valuetype="UINT16">17</Element> </Value> </Variable> </Object> </Object> </Object> <Object Name="EX245-SPN-Cu_1"> <GSDMLFile>gsdml-v2.34-smc-ex245-spn-20181102.xml</GSDMLFile> <ClassRID>6</ClassRID> <Key AID="3">3</Key> <Variable Name="DeactivatedConfig"> <AID>4</AID> <Value Datatype="Scalar" Valuetype="BOOL">false</Value> </Variable> <Variable Name="LADDR"> <AID>10</AID> <Value Datatype="Scalar" Valuetype="UINT16">286</Value> </Variable> <Variable Name="IODevParamConfig"> <AID>13</AID> <Value Datatype="SparseArray" Valuetype="BLOB"> <Field Key="12384" Length="32">3060001C01000000008300110001200000000001000010000000000000000000</Field> <Field Key="12545" Length="272">3101010C01000000000100000000000000040074010000000000000000020000800200000004000100000000000100000000000100000001000100000000800000000000000200000000000100000001000100000000800100000000000300000000000100000001000100000000800200000000000300000000000100000001000100000000002C010000010000000001000000000100000001000100000000000100010000000100040001000100000000002C010000020000000000110000000100000001000100000000000100020000000000040001000100000000002C010000030000000000100000000100000001000100000000000100010000000100020001000100000000000000000000</Field> <Field Key="12544" Length="64">3100003C0101000001000001B778D841089633469E1A20BB0DCAFFE54000001100C8000000000000000000000000000000000000000000000000000000000000</Field> <Field Key="12546" Length="272">3102010C01000000000200800100000100018892000000000002000D80040020000200010000FFFFFFFF000500050000C00000000000000000000000000000000000000000010000000000060000000100000000000080000001000000008001000200000000800200030000000100010004000000030001000A0000000000010002000100090000000000800100000200028892000000000002000B80050020000200010000FFFFFFFF000500050000C00000000000000000000000000000000000000000010000000000010002000100050000000000060000000100000000000080000001000000008001000200000000800200030000000100010004000000030001000A00000000000000000000</Field> <Field Key="12551" Length="28">310700180100000001000001889200000000000000010003C000A000</Field> </Value> </Variable> <Object Name="Network Parameters"> <ClassRID>11</ClassRID> <Variable Name="NetworkParamConfig"> <AID>12</AID> <Value Datatype="SparseArray" Valuetype="BLOB"> <Field Key="4099" Length="32">A201001C01000000001400006578783234352D73706E2D637578623134343262</Field> <Field Key="4096" Length="20">3000001001000000C0A80203FFFFFF00C0A80203</Field> <Field Key="4103" Length="12">301100080101000000000000</Field> </Value> </Variable> </Object> <Object Name="EX245-SPN-Cu_1"> <ClassRID>7</ClassRID> <Key AID="1">0</Key> <Object Name="EX245-SPN-Cu_1"> <ClassRID>8</ClassRID> <Key AID="2">65520</Key> <Variable Name="LADDR"> <AID>10</AID> <Value Datatype="Scalar" Valuetype="UINT16">284</Value> </Variable> <Variable Name="DataRecordsConf"> <AID>11</AID> <Value Datatype="SparseArray" Valuetype="BLOB"/> </Variable> <Variable Name="DataRecordsTransferSequence"> <AID>14</AID> <Value Datatype="Scalar" Valuetype="BLOB" Length="0"/> </Variable> </Object> <Object Name="EX245-SPN-Cu_1"> <ClassRID>9</ClassRID> <Key AID="2">1</Key> <Variable Name="LADDR"> <AID>10</AID> <Value Datatype="Scalar" Valuetype="UINT16">287</Value> </Variable> <Variable Name="DataRecordsConf"> <AID>11</AID> <Value Datatype="SparseArray" Valuetype="BLOB"/> </Variable> <Variable Name="DataRecordsTransferSequence"> <AID>14</AID> <Value Datatype="Scalar" Valuetype="BLOB" Length="0"/> </Variable> </Object> <Object Name="EX245-SPN-Cu_1_Interface"> <ClassRID>9</ClassRID> <Key AID="2">32768</Key> <Variable Name="LADDR"> <AID>10</AID> <Value Datatype="Scalar" Valuetype="UINT16">288</Value> </Variable> <Variable Name="DataRecordsConf"> <AID>11</AID> <Value Datatype="SparseArray" Valuetype="BLOB"> <Field Key="32849" Length="28">0213001801000000C3D687FE789E03A1ACDBE5BFCBBC27B600000000</Field> <Field Key="32850" Length="40">0211002401000000C3D687FE789E03A1ACDBE5BFCBBC27B6000000000B6D7270646F6D61696E2D31</Field> <Field Key="32881" Length="12">025000080100000000000001</Field> </Value> </Variable> <Variable Name="DataRecordsTransferSequence"> <AID>14</AID> <Value Datatype="Scalar" Valuetype="BLOB" Length="0"/> </Variable> </Object> <Object Name="Port 1"> <ClassRID>9</ClassRID> <Key AID="2">32769</Key> <Variable Name="LADDR"> <AID>10</AID> <Value Datatype="Scalar" Valuetype="UINT16">289</Value> </Variable> <Variable Name="DataRecordsConf"> <AID>11</AID> <Value Datatype="SparseArray" Valuetype="BLOB"> <Field Key="32815" Length="24">020200140100000000008001022600080100000000000000</Field> </Value> </Variable> <Variable Name="DataRecordsTransferSequence"> <AID>14</AID> <Value Datatype="Scalar" Valuetype="BLOB" Length="0"/> </Variable> </Object> <Object Name="Port 2"> <ClassRID>9</ClassRID> <Key AID="2">32770</Key> <Variable Name="LADDR"> <AID>10</AID> <Value Datatype="Scalar" Valuetype="UINT16">290</Value> </Variable> <Variable Name="DataRecordsConf"> <AID>11</AID> <Value Datatype="SparseArray" Valuetype="BLOB"> <Field Key="32815" Length="24">020200140100000000008002022600080100000000000000</Field> </Value> </Variable> <Variable Name="DataRecordsTransferSequence"> <AID>14</AID> <Value Datatype="Scalar" Valuetype="BLOB" Length="0"/> </Variable> </Object> </Object> <Object Name="Diagnostics type 1_1"> <ClassRID>7</ClassRID> <Key AID="1">1</Key> <Object Name="(Sub)Module"> <ClassRID>10</ClassRID> <Key AID="2">1</Key> <Variable Name="LADDR"> <AID>10</AID> <Value Datatype="Scalar" Valuetype="UINT16">292</Value> </Variable> <Variable Name="DataRecordsConf"> <AID>11</AID> <Value Datatype="SparseArray" Valuetype="BLOB"/> </Variable> <Variable Name="DataRecordsTransferSequence"> <AID>14</AID> <Value Datatype="Scalar" Valuetype="BLOB" Length="0"/> </Variable> <Variable Name="IOmapping"> <AID>5</AID> <Value Datatype="Scalar" Valuetype="STRUCT"> <Element AID="6" Datatype="Scalar" Valuetype="UINT32">16</Element> <Element AID="7" Datatype="Scalar" Valuetype="UINT16">4</Element> <Element AID="8" Datatype="Scalar" Valuetype="UINT32">0</Element> <Element AID="9" Datatype="Scalar" Valuetype="UINT16">0</Element> </Value> </Variable> </Object> </Object> <Object Name="32 valves_1"> <ClassRID>7</ClassRID> <Key AID="1">2</Key> <Object Name="(Sub)Module"> <ClassRID>10</ClassRID> <Key AID="2">1</Key> <Variable Name="LADDR"> <AID>10</AID> <Value Datatype="Scalar" Valuetype="UINT16">294</Value> </Variable> <Variable Name="DataRecordsConf"> <AID>11</AID> <Value Datatype="SparseArray" Valuetype="BLOB"> <Field Key="1" Length="1">01</Field> <Field Key="3" Length="8">0000000000000000</Field> </Value> </Variable> <Variable Name="DataRecordsTransferSequence"> <AID>14</AID> <Value Datatype="Scalar" Valuetype="BLOB" Length="0"/> </Variable> <Variable Name="IOmapping"> <AID>5</AID> <Value Datatype="Scalar" Valuetype="STRUCT"> <Element AID="6" Datatype="Scalar" Valuetype="UINT32">0</Element> <Element AID="7" Datatype="Scalar" Valuetype="UINT16">0</Element> <Element AID="8" Datatype="Scalar" Valuetype="UINT32">34</Element> <Element AID="9" Datatype="Scalar" Valuetype="UINT16">4</Element> </Value> </Variable> </Object> </Object> <Object Name="EX245-DX1_1"> <ClassRID>7</ClassRID> <Key AID="1">3</Key> <Object Name="(Sub)Module"> <ClassRID>10</ClassRID> <Key AID="2">1</Key> <Variable Name="LADDR"> <AID>10</AID> <Value Datatype="Scalar" Valuetype="UINT16">296</Value> </Variable> <Variable Name="DataRecordsConf"> <AID>11</AID> <Value Datatype="SparseArray" Valuetype="BLOB"> <Field Key="1" Length="1">01</Field> <Field Key="4" Length="1">01</Field> </Value> </Variable> <Variable Name="DataRecordsTransferSequence"> <AID>14</AID> <Value Datatype="Scalar" Valuetype="BLOB" Length="0"/> </Variable> <Variable Name="IOmapping"> <AID>5</AID> <Value Datatype="Scalar" Valuetype="STRUCT"> <Element AID="6" Datatype="Scalar" Valuetype="UINT32">20</Element> <Element AID="7" Datatype="Scalar" Valuetype="UINT16">2</Element> <Element AID="8" Datatype="Scalar" Valuetype="UINT32">0</Element> <Element AID="9" Datatype="Scalar" Valuetype="UINT16">0</Element> </Value> </Variable> </Object> </Object> </Object> <Object Name="idevice-dap"> <ClassRID>13</ClassRID> <Key AID="3">1500</Key> <Variable Name="DeactivatedConfig"> <AID>4</AID> <Value Datatype="Scalar" Valuetype="BOOL">false</Value> </Variable> <Variable Name="LADDR"> <AID>10</AID> <Value Datatype="Scalar" Valuetype="UINT16">297</Value> </Variable> <Variable Name="IODevParamConfig"> <AID>13</AID> <Value Datatype="SparseArray" Valuetype="BLOB"> <Field Key="12384" Length="32">3060001C01000000002A00080064000000000000000000000000000000000000</Field> <Field Key="12417" Length="144">3081008C010000000001000000000000000100740100000000000000B201000080010000000403E80000100000800081000000010080000100010000000003E900002000008000820000000000800001000100000000800000000000013000C00000000100000001000100000000800100000000013100C0000000010000000100010000000000000000000000000000</Field> </Value> </Variable> <Object Name="VirtualPnModule"> <ClassRID>7</ClassRID> <Key AID="1">0</Key> <Object Name="VirtualPnModule"> <ClassRID>8</ClassRID> <Key AID="2">65520</Key> <Variable Name="LADDR"> <AID>10</AID> <Value Datatype="Scalar" Valuetype="UINT16">298</Value> </Variable> <Variable Name="DataRecordsConf"> <AID>11</AID> <Value Datatype="SparseArray" Valuetype="BLOB"/> </Variable> <Variable Name="DataRecordsTransferSequence"> <AID>14</AID> <Value Datatype="Scalar" Valuetype="BLOB" Length="0"/> </Variable> </Object> <Object Name="InputArea"> <ClassRID>10</ClassRID> <Key AID="2">1000</Key> <Variable Name="LADDR"> <AID>10</AID> <Value Datatype="Scalar" Valuetype="UINT16">299</Value> </Variable> <Variable Name="DataRecordsConf"> <AID>11</AID> <Value Datatype="SparseArray" Valuetype="BLOB"/> </Variable> <Variable Name="DataRecordsTransferSequence"> <AID>14</AID> <Value Datatype="Scalar" Valuetype="BLOB" Length="0"/> </Variable> <Variable Name="IOmapping"> <AID>5</AID> <Value Datatype="Scalar" Valuetype="STRUCT"> <Element AID="6" Datatype="Scalar" Valuetype="UINT32">22</Element> <Element AID="7" Datatype="Scalar" Valuetype="UINT16">128</Element> <Element AID="8" Datatype="Scalar" Valuetype="UINT32">0</Element> <Element AID="9" Datatype="Scalar" Valuetype="UINT16">0</Element> </Value> </Variable> </Object> <Object Name="OutputArea"> <ClassRID>10</ClassRID> <Key AID="2">1001</Key> <Variable Name="LADDR"> <AID>10</AID> <Value Datatype="Scalar" Valuetype="UINT16">300</Value> </Variable> <Variable Name="DataRecordsConf"> <AID>11</AID> <Value Datatype="SparseArray" Valuetype="BLOB"/> </Variable> <Variable Name="DataRecordsTransferSequence"> <AID>14</AID> <Value Datatype="Scalar" Valuetype="BLOB" Length="0"/> </Variable> <Variable Name="IOmapping"> <AID>5</AID> <Value Datatype="Scalar" Valuetype="STRUCT"> <Element AID="6" Datatype="Scalar" Valuetype="UINT32">0</Element> <Element AID="7" Datatype="Scalar" Valuetype="UINT16">0</Element> <Element AID="8" Datatype="Scalar" Valuetype="UINT32">38</Element> <Element AID="9" Datatype="Scalar" Valuetype="UINT16">128</Element> </Value> </Variable> </Object> </Object> </Object> </Object> </Object>
最新发布
06-15
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值