Как отправить запрос команды с DirectIO() в POS для.NET?

В настоящее время я работаю над проектом по управлению сканером Honeywell Genesis 7580G с использованием C#, POS для.NET и POS4NET Suite от Honeywell. Я хотел бы получить текущее время ожидания последовательного чтения, поэтому я вызвал метод DirectIO() из POS4NET следующим образом:

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()?

1 ответ

Решение

Возможно ли, что ответные данные могли быть получены правильно и были преобразованы в символьную строку, так что считается, что они заканчиваются нулем?

Пожалуйста, проверьте содержимое данных байтового массива, используя BitConverter.ToString() вместо Encoding.ASCII.GetString(),

Я обычно использую POS для.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;
Другие вопросы по тегам