C# 如何使用.NET LLRP库:Org.LLRP.LTK.LLRPV1.LLRPXmlParser.parsexmltolrpmessage
我正在使用LLRP库开发一个应用程序。 网关(计算机)从读卡器(使用本地主机的模拟读卡器)接收到我的消息后,我想使用C# 如何使用.NET LLRP库:Org.LLRP.LTK.LLRPV1.LLRPXmlParser.parsexmltolrpmessage,c#,.net,llrp,C#,.net,Llrp,我正在使用LLRP库开发一个应用程序。 网关(计算机)从读卡器(使用本地主机的模拟读卡器)接收到我的消息后,我想使用 Org.LLRP.LTK.LLRPV1.LLRPXmlParser.ParseXMLToLLRPMessage(_xmlReceived, out msg, out enumType); 但是,我在手表中检查它(VS2013 Ultimate):msg为null,enumType为0 你能给我一些建议吗 我的代码是: public static void ConvertXmlT
Org.LLRP.LTK.LLRPV1.LLRPXmlParser.ParseXMLToLLRPMessage(_xmlReceived, out msg, out enumType);
但是,我在手表中检查它(VS2013 Ultimate):msg为null,enumType为0
你能给我一些建议吗
我的代码是:
public static void ConvertXmlToLLRPMessage()
{
Org.LLRP.LTK.LLRPV1.DataType.Message msg; //Only Message type is accepted.
Org.LLRP.LTK.LLRPV1.ENUM_LLRP_MSG_TYPE enumType; //Only ENUM_LLRP_MSG_TYPE type is accepted.
Org.LLRP.LTK.LLRPV1.LLRPXmlParser.ParseXMLToLLRPMessage(_xmlReceived, out msg, out enumType);
Console.WriteLine();
Console.WriteLine("Print out _xmlReceived, inside ConvertXmlToLLRPMessage.");
Console.WriteLine(_xmlReceived);
Console.WriteLine();
Console.WriteLine("Out msg from ParseXMLToLLRPMessage:\n"); Console.WriteLine(msg); Console.WriteLine();
Console.WriteLine("Out enumType from ParseXMLToLLRPMessage:\n"); Console.WriteLine(enumType); Console.WriteLine();
}
public static void testData_PARAM_ROSpecID()
{
//create and object
PARAM_ROSpecID _rec_PARAM_ROSpecID = new PARAM_ROSpecID();
//assign value to an object
_rec_PARAM_ROSpecID.ROSpecID = 789;
//Convert obj to xml
string _xmlData = ConvertObjectToXml(_rec_PARAM_ROSpecID);
//Convert xml to byte array
byte [] _byteArray = CommServerSend.getSendBuffInByteAry(_xmlData);
//Send out.
CommServerReceive._incomingDataObj.Send(_byteArray);
return;
}
\u xmlReceived
是从127.0.0.1:5084接收的XML转换数据。我必须检查它,它是正确的,这是读者发出的
在阅读器端,我模拟阅读器向网关发送消息。
在读卡器端,代码是:
public static void ConvertXmlToLLRPMessage()
{
Org.LLRP.LTK.LLRPV1.DataType.Message msg; //Only Message type is accepted.
Org.LLRP.LTK.LLRPV1.ENUM_LLRP_MSG_TYPE enumType; //Only ENUM_LLRP_MSG_TYPE type is accepted.
Org.LLRP.LTK.LLRPV1.LLRPXmlParser.ParseXMLToLLRPMessage(_xmlReceived, out msg, out enumType);
Console.WriteLine();
Console.WriteLine("Print out _xmlReceived, inside ConvertXmlToLLRPMessage.");
Console.WriteLine(_xmlReceived);
Console.WriteLine();
Console.WriteLine("Out msg from ParseXMLToLLRPMessage:\n"); Console.WriteLine(msg); Console.WriteLine();
Console.WriteLine("Out enumType from ParseXMLToLLRPMessage:\n"); Console.WriteLine(enumType); Console.WriteLine();
}
public static void testData_PARAM_ROSpecID()
{
//create and object
PARAM_ROSpecID _rec_PARAM_ROSpecID = new PARAM_ROSpecID();
//assign value to an object
_rec_PARAM_ROSpecID.ROSpecID = 789;
//Convert obj to xml
string _xmlData = ConvertObjectToXml(_rec_PARAM_ROSpecID);
//Convert xml to byte array
byte [] _byteArray = CommServerSend.getSendBuffInByteAry(_xmlData);
//Send out.
CommServerReceive._incomingDataObj.Send(_byteArray);
return;
}
将数据读取器打印输出发送到网关:
<?xml version="1.0" encoding="utf-16"?>
<PARAM_ROSpecID xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<ROSpecID>789</ROSpecID>
</PARAM_ROSpecID>
请帮助我并尽快回复。
非常感谢您的努力。null obj变量意味着该方法无法从传入的xml中提取消息。我将更仔细地查看xml,看看是否有什么地方出错 下面是代码应该如何使用ParseXMLToLLRPMessage()查找的示例:
注意,ParseXMLToLLRPMessage用于将xml转换为LLRP消息。读者会发回LLRP信息。非常感谢丹尼尔·科恩。我要试试这个,干杯!
Org.LLRP.LTK.LLRPV1.DataType.Message obj;
ENUM_LLRP_MSG_TYPE msg_type;
// read the XML from a file and validate its an SET_READER_CONFIG
try
{
FileStream fs = new FileStream(@"setReaderConfig.xml", FileMode.Open);
StreamReader sr = new StreamReader(fs);
string s = sr.ReadToEnd();
fs.Close();
LLRPXmlParser.ParseXMLToLLRPMessage(s, out obj, out msg_type);
if (obj == null || msg_type != ENUM_LLRP_MSG_TYPE.SET_READER_CONFIG)
{
Console.WriteLine("Could not extract message from XML");
return;
}
}
catch
{
Console.WriteLine("Unable to convert to valid XML");
return;
}
// Communicate that message to the reader
MSG_SET_READER_CONFIG msg = (MSG_SET_READER_CONFIG)obj;