in reply to Perl/Tk vs Win32::SerialPort
Thank you, eventually i managed to set up the 'serial' thread and i can share its '@values' with Tk but the problem is that it's still in an infinite while loop.
$mw->repeat(1000,sub{ print "@values"."\n"; });
But is it possible to run a thread when i want it to run not just in a while(1) loop all the time?
I tried to pass another variable to my serial thread which determines the running state
share @values; share $opened_port;
Where $opened_port is set when i click on the Open button
sub opening_port { require Win32::SerialPort; $serial=Win32::SerialPort->new("COM6"); $serial->baudrate(9600) || die "Bad baudrate"; $serial->parity('none') || die "Bad parity"; $serial->databits(8) || die "Bad databits"; $serial->stopbits(1) || die "Bad stopbits"; #$serial->buffers(4096,4096) || die "Buffer error"; $serial->handshake("none") || die "Bad handshake method"; $serial->write_settings; while(1) { print $opened_port; if($opened_port) { my @array; my $string; my $i=0; do { $string=$serial->read(1); #Beolvass egy karakter +et a sorosportról if((ord($string) >= 0x09 && ord($string) <=0x7A) || $string eq '\t' + || $string eq '\n') #megvizsgálja, hogy a beolvasott karakter megfel +el-e az ASCII kritériumoknak { $array[$i]=$string; #elmenti a tömbbe i.-ik helyére az adott karakt +ert $i++; #növeli az index értékét } }while($string ne "\n" ); #addig fut a program amíg nem \n a beolva +sott karakter $i=0; $string = join('' , @array ) ; #ezután egy skalárba összefűz +i a tömb elemeit, egymás után - nincs szeparátor chomp($string); # leszedi a \r és \n karaktereket a string végérő +l @values = split('\t',$string); #majd felbontja a skalárt a tabul +árotok mentén # az 1-es index tartalmazza a a hőmérsékleti adatokat, a 3-as ind +ex az időt } } }
Of course i get an error which says that $opened_port is uninitialized, so i guess that shareing variable is a child to parent thing and it won't work in the other way. But what could be the proper way to read the serial port on button press and close it on another button event?
|
|---|
| Replies are listed 'Best First'. | |
|---|---|
|
Re^2: Perl/Tk vs Win32::SerialPort
by Shaoboy (Initiate) on Dec 10, 2013 at 17:50 UTC | |
by Shaoboy (Initiate) on Dec 10, 2013 at 20:25 UTC | |
by Anonymous Monk on Dec 10, 2013 at 22:40 UTC |