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