Я использую модуль Perl Win32::SerialPort
.В этом патентованном модуле я отправил данные, используя команду ввода.Данные, которые я отправлял во встроенную систему, были скалярными данными (числами) с использованием функции transmit_char
(если бы это было C, это были бы целые числа, но, поскольку это язык сценариев, я не уверен, какой внутренний формат в perl.Я предполагаю, что Perl всегда хранит все числа как 32-битные числа с плавающей запятой, которые корректируются модулем при передаче).
Затем после отправки данных я получаю данные с помощью команды ввода.Данные, которые я получаю, вероятно, в двоичном виде, но Perl не знает, как их интерпретировать.Я использую функцию unpack
следующим образом:
my $binData = $PortObj->input;
my $hexData = unpack("H*",$binData);
Предположим, я передаю 0x4294
по последовательному кабелю, который является командой во встроенной системе, с которой я обмениваюсь информацией, и я ожидаю ответ 0x5245
.Теперь проблема с порядком байтов: когда я распаковываю, я получаю 0x4552
, что неправильно.Есть ли способ исправить это путем корректировки двоичных данных.Я также попробовал h*
, что дает мне 0x5425
, что тоже не правильно.
Примечание: данные, которые я получаю, отправляются по байту за раз, а младший бит отправляется первым