Próbuję komunikować się z UART na wbudowanym systemie za pomocą portu Win32::Serial (moduł perl). Wydaje się, że działa dobrze, jeśli chodzi o wysyłanie danych, ale z jakiegokolwiek powodu nie jest w stanie odebrać danych. Mam nadzieję, że jest inna funkcja oprócz read(), która pokaże odczytane dane?

# 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);

Dzięki

1
Anonymous 21 lipiec 2011, 00:15

2 odpowiedzi

Najlepsza odpowiedź

Dzięki za odpowiedź, ale okazuje się, że w bibliotece jest funkcja wejściowa, dzięki której i 1 sekundzie snu udało mi się uruchomić mój moduł.

# 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
Ahmed 5 sierpień 2011, 08:10

Jak sobie przypominam, w Win32 ActivePerl możesz określić porty w nazwie pliku w ten sposób: otwórz(mój $fh, '+>COM1') lub umrzyj "COM1: $!"; tryb bin($fh);

Udało mi się to z powodzeniem, ale nigdy z powodzeniem nie używałem Win32: Serial! Może to pomaga?

0
Jimi WIlls 5 sierpień 2011, 02:20