如何在 POS for .NET 中使用 DirectIO() 发送查询命令?
How to send an enquiry command with DirectIO() in POS for .NET?
我目前正在开展一个项目,使用 C#、POS for .NET 和 Honeywell 的 POS4NET Suite 来控制 Honeywell Genesis 7580G 扫描仪。我想获得当前的串行读取超时,所以我通过以下方式从 POS4NET 调用了 DirectIO() 方法:
string command = "TRGSTO?.";
DirectIOData response = scanner.DirectIO(18, 1024, Encoding.ASCII.GetBytes(command));
byte[] buffer = (byte[])response.Object;
Console.WriteLine("$: Response: " + Encoding.ASCII.GetString(buffer));
此代码打印:
“$:响应:TRGSTO20”
缺少三个零(时间单位为毫秒)和[ACK]字符。
我期待这个...
"$:响应:TRGSTO20000[ACK]"
但是,如果我更改命令以获得不同的设置...
string command = "BEPPWR?.";
DirectIOData response = scanner.DirectIO(18, 1024, Encoding.ASCII.GetBytes(command));
byte[] buffer = (byte[])response.Object;
Console.WriteLine("$: Response: " + Encoding.ASCII.GetString(buffer));
代码按预期工作,并打印
"$:响应:BEPPWR1[ACK]"
使用 DirectIO() 发送查询命令的正确方法是什么?
有没有可能响应数据已经正确到达,并被转换为字符串,从而被认为以零结尾?
请使用BitConverter.ToString()
而不是Encoding.ASCII.GetString()
检查字节数组数据的内容。
我通常将 POS for .NET 与财务打印机 POS 一起使用。当我需要发送 DirectIO 时,我使用这种类型的代码来发送和接收响应:我希望它有用
string[] strObj = new string[1];
DirectIOData dirIO;
int iData;
strObj[0] = "01";
dirIO = posCommonFP.DirectIO(0, 1138, strObj);
iData = dirIO.Data;
strObj = (string[])dirIO.Object;
我目前正在开展一个项目,使用 C#、POS for .NET 和 Honeywell 的 POS4NET Suite 来控制 Honeywell Genesis 7580G 扫描仪。我想获得当前的串行读取超时,所以我通过以下方式从 POS4NET 调用了 DirectIO() 方法:
string command = "TRGSTO?.";
DirectIOData response = scanner.DirectIO(18, 1024, Encoding.ASCII.GetBytes(command));
byte[] buffer = (byte[])response.Object;
Console.WriteLine("$: Response: " + Encoding.ASCII.GetString(buffer));
此代码打印:
“$:响应:TRGSTO20”
缺少三个零(时间单位为毫秒)和[ACK]字符。 我期待这个...
"$:响应:TRGSTO20000[ACK]"
但是,如果我更改命令以获得不同的设置...
string command = "BEPPWR?.";
DirectIOData response = scanner.DirectIO(18, 1024, Encoding.ASCII.GetBytes(command));
byte[] buffer = (byte[])response.Object;
Console.WriteLine("$: Response: " + Encoding.ASCII.GetString(buffer));
代码按预期工作,并打印
"$:响应:BEPPWR1[ACK]"
使用 DirectIO() 发送查询命令的正确方法是什么?
有没有可能响应数据已经正确到达,并被转换为字符串,从而被认为以零结尾?
请使用BitConverter.ToString()
而不是Encoding.ASCII.GetString()
检查字节数组数据的内容。
我通常将 POS for .NET 与财务打印机 POS 一起使用。当我需要发送 DirectIO 时,我使用这种类型的代码来发送和接收响应:我希望它有用
string[] strObj = new string[1];
DirectIOData dirIO;
int iData;
strObj[0] = "01";
dirIO = posCommonFP.DirectIO(0, 1138, strObj);
iData = dirIO.Data;
strObj = (string[])dirIO.Object;