Win32 :: Serial Binary Communication - PullRequest
1 голос
/ 21 июля 2011

Я пытаюсь установить связь с UART во встроенной системе, используя порт Win32 :: Serial (модуль perl). Кажется, что он отлично работает с точки зрения отправки данных, но по какой-либо причине он не может получить данные. Я надеюсь, есть ли другая функция, кроме read (), которая будет показывать прочитанные данные?

# Write Serial Data to Port in Little Endian Form
foreach my $intermValue (@writeData) {
    my $msb = int($intermValue/256);
    my $lsb = ($intermValue - $msb*256);

    # Writing LSB first and MSB after (Little Endian Form)
    print "Writing: LSB: ".$lsb." MSB: ".$msb."\n";
    $class->{"serialPort"}->transmit_char($lsb);
    $class->{"serialPort"}->transmit_char($msb);
}

# Read Data From Serial Port
my ($countIn, $recievedData) = $class->{"serialPort"}->read($expectedBytes);

Спасибо

Ответы [ 2 ]

0 голосов
/ 05 августа 2011

Спасибо за ваш ответ, но оказывается, что в библиотеке есть функция ввода, используя ее и за 1 секунду сна я смог заставить свой модуль работать.

# Write Serial Data to Port in Little Endian Form
foreach my $intermValue (@writeData) {
    my $msb = int($intermValue/256);
    my $lsb = ($intermValue - $msb*256);

    # Writing LSB first and MSB after (Little Endian Form)
    print "Writing: LSB: ".$lsb." MSB: ".$msb."\n";
    $class->{"serialPort"}->transmit_char($lsb);
    $class->{"serialPort"}->transmit_char($msb);
    }
    # Read Data From Serial Port
    sleep(1);
    my  $recievedData = $class->{"serialPort"}->input;
0 голосов
/ 05 августа 2011

Насколько я помню, в Win32 ActivePerl вы можете указать порты в имени файла следующим образом: open (my $ fh, '+> COM1') или die "COM1: $!"binmode ($ fh);

Я успешно использовал это, но никогда не использовал Win32: Serial!Может это поможет?

...