1
我目前正在使用C#,POS for .NET和霍尼韦尔POS4NET套件来控制霍尼韦尔Genesis 7580G扫描仪。我想获得当前的串行读超时,所以我从POS4NET以下列方式称为DIRECTIO()方法:如何在POS for .NET中使用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()查询命令的正确方法是什么?
我调查了相关规范。 查看“Genesis 7580g用户指南”第162页中的“串行触发模式:读取超时”项目,设置范围为0到300000,因此最多为6位数字,但数字参数部分命令是4位数。 但是,设置相同的值范围“免提超时”(第163页),该命令的数字参数部分为6位数。 对于“串行触发模式:读取超时”,文档/服务对象/固件之一可能不正确。 请与供应商确认哪些信息是正确的。 – kunif