/ Forside / Teknologi / Udvikling / Perl / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
Perl
#NavnPoint
bjarneA 141
poul_from 50
soccer 30
Nicknack 14
Tmpj 0
Win32::SerialPort - Bad file descriptor
Fra : Jens Thomsen


Dato : 01-09-08 22:21

Hej

Jeg forsøger at snakke med en Sony Ericsson w910i igennem USB.
Jeg anvender tilgår en mobiltelefon som er sluttet til via USB kabel med
Win32::SerialPort på Windows XP.

På min bærbare fungerer det uden problemer.
På min stationære, med samme version af både XP, ActiveState perl og
Win32::SerialPort får jeg en 'Bad file descriptor'.

På den stationære kan jeg uden problemer anvende Hyperterminal eller Putty
til at snakke serielt med telefonen.

Google kender til syv hits på
Win32::SerialPort "bad file descriptor"

De ting der blev nævnt var
- avoid $|
- Use pl2bat
- bug when registering .pl file to the system => use perl script.pl
- cmd.exe <> command.com

Det er testet igennem uden held.


I PATH på begge maskiner er der:
C:\Perl\bin;C:\WINDOWS\system32;C:\WINDOWS;


Scriptet er her:

--------
#!/usr/bin/perl

use Win32::SerialPort;

new Win32::SerialPort ('COM27', 1) or die $!;

#
--------

En anden (for mig) meget underlig ting er at det dør med 'Bad file
descriptor at test.pl line 5.' hvis der er noget som helst i scriptet efter
kaldet, men med 'Died at test.pl line 5' hvis jeg fjerner '#' til sidst ?!?

Nogen der har en god ide?




 
 
Thorbjørn Ravn Ander~ (02-09-2008)
Kommentar
Fra : Thorbjørn Ravn Ander~


Dato : 02-09-08 00:01

Jens Thomsen skrev den 01-09-2008 23:20:

> På min bærbare fungerer det uden problemer.
> På min stationære, med samme version af både XP, ActiveState perl og
> Win32::SerialPort får jeg en 'Bad file descriptor'.

> new Win32::SerialPort ('COM27', 1) or die $!;

Er det også COM27 på den bærbare?
--
Thorbjørn Ravn Andersen "... plus... Tubular Bells!"

Jens Thomsen (02-09-2008)
Kommentar
Fra : Jens Thomsen


Dato : 02-09-08 07:12


"Thorbjørn Ravn Andersen" <thunderaxiom@gmail.com> wrote in message
news:48bc7349$0$90266$14726298@news.sunsite.dk...
> Jens Thomsen skrev den 01-09-2008 23:20:
>
>> På min bærbare fungerer det uden problemer.
>> På min stationære, med samme version af både XP, ActiveState perl og
>> Win32::SerialPort får jeg en 'Bad file descriptor'.
>
>> new Win32::SerialPort ('COM27', 1) or die $!;
>
> Er det også COM27 på den bærbare?

Nej, der er det COM9.

På den stationære er det COM27 og der virker både Putty, Hypertrm og diverse
andre SE telefon kommunikationsprogrammer.

Bare ikke lige modulet her



Peter Makholm (02-09-2008)
Kommentar
Fra : Peter Makholm


Dato : 02-09-08 07:29

"Jens Thomsen" <jt@nej.nej> writes:

> new Win32::SerialPort ('COM27', 1) or die $!;

Har du prøvet at bruge skrive "$^E" ud istedet for "$!"?

Det er det eksemplerne i dokumentationen gør og efter hvad jeg kan
læse af 'perldoc perlvar', så er de to variable forskellige under
Win32.

I øvrigt vil jeg mene at det er dårlig stil at bruge $! andre steder
end umidelbart efter det systemkald man har foretaget. Man kan meget
let komme til at gøre noget der overskriver den.

//Makholm

Jens Thomsen (02-09-2008)
Kommentar
Fra : Jens Thomsen


Dato : 02-09-08 07:48


"Peter Makholm" <peter@makholm.net> wrote in message
news:87bpz7f4dj.fsf@hacking.dk...
> "Jens Thomsen" <jt@nej.nej> writes:
>
>> new Win32::SerialPort ('COM27', 1) or die $!;
>
> Har du prøvet at bruge skrive "$^E" ud istedet for "$!"?

En variant fremkommer så [1]:

W:\gsm\server>perl test.pl
$VAR1 = 0;
$VAR1 = 'The system cannot find the file specified';


Til sammenligning er her en log fra Putty der godt kan tilgå telefonen og
afvikle f.eks. AT&F [2]



> I øvrigt vil jeg mene at det er dårlig stil at bruge $! andre steder
> end umidelbart efter det systemkald man har foretaget. Man kan meget
> let komme til at gøre noget der overskriver den.

Ja, det har du helt ret i!
Point taken.


[1]
#!/usr/bin/perl

use Data::Dumper;
use Win32::SerialPort;

my $modem = new Win32::SerialPort ('COM27', 1);

print Dumper $modem;
print Dumper $^E;



[2]
=~=~=~=~=~=~=~=~=~=~=~= PuTTY log 2008.09.02 08:46:18
=~=~=~=~=~=~=~=~=~=~=~=
Event Log: Writing new session log (SSH raw data mode) to file: putty.log
Event Log: Opening serial device COM27
Event Log: Configuring baud rate 9600
Event Log: Configuring 8 data bits
Event Log: Configuring 1 data bits
Event Log: Configuring no parity
Event Log: Configuring XON/XOFF flow control



Søg
Reklame
Statistik
Spørgsmål : 177577
Tips : 31968
Nyheder : 719565
Indlæg : 6409071
Brugere : 218888

Månedens bedste
Årets bedste
Sidste års bedste