Как отправить запрос команды с 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;