#!/usr/bin/perl use strict; use Pod::Usage; use Getopt::Std; our $ImePrograma; our $Verzija; our $ob; our $PORT; our $BAUD; our $PARITY; our $DATA; our $STOP; my $parameters; my $thread; our $received; our $ERR; our $ERR1; our $ERR2; #our $ERR3; sub TkWindow{ my $Window_Tk=MainWindow->new; $Window_Tk->minsize(qw(100 100)); $Window_Tk->title("$ImePrograma $Verzija"); $Window_Tk->configure(); my $notranji_Tk=$Window_Tk->Frame()->pack(-side=>'top',-padx=>10,-pady=>10); # the serial comm. parameters are written at the top of Tk window my $parameters_Tk=$notranji_Tk->Frame()->pack(-side=>'top',-padx=>1,-pady=>1); my $port_Tk=$parameters_Tk->Frame()->pack(-side=>'left',-padx=>0); my $baud_Tk=$parameters_Tk->Frame()->pack(-side=>'left',-padx=>0); my $parity_Tk=$parameters_Tk->Frame()->pack(-side=>'left',-padx=>0); my $data_Tk=$parameters_Tk->Frame()->pack(-side=>'left',-padx=>0); my $stop_Tk=$parameters_Tk->Frame()->pack(-side=>'left',-padx=>0); if($ERR eq "n"){ my $port_L=$port_Tk->Entry(-relief=>'flat',-text=>"Port = ".$PORT,-justify=>'center',-font=>'Arial 8',-width=>13,-state=>'disabled')->pack(); my $baud_L=$baud_Tk->Entry(-relief=>'flat',-text=>"Baud = ".$BAUD,-justify=>'center',-font=>'Arial 8',-width=>14,-state=>'disabled')->pack(); my $parity_L=$parity_Tk->Entry(-relief=>'flat',-text=>"Parity = ".$PARITY,-justify=>'center',-font=>'Arial 8',-width=>15,-state=>'disabled')->pack(); my $data_L=$data_Tk->Entry(-relief=>'flat',-text=>"Data = ".$DATA,-justify=>'center',-font=>'Arial 8',-width=>10,-state=>'disabled')->pack(); my $stop_L=$stop_Tk->Entry(-relief=>'flat',-text=>"Stop = ".$STOP,-justify=>'center',-font=>'Arial 8',-width=>10,-state=>'disabled')->pack(); } else{ my $port_L=$port_Tk->Entry(-relief=>'flat',-text=>"",-justify=>'center',-font=>'Arial 8',-width=>13,-state=>'disabled')->pack(); my $baud_L=$baud_Tk->Entry(-relief=>'flat',-text=>"",-justify=>'center',-font=>'Arial 8',-width=>14,-state=>'disabled')->pack(); my $parity_L=$parity_Tk->Entry(-relief=>'flat',-text=>"",-justify=>'center',-font=>'Arial 8',-width=>15,-state=>'disabled')->pack(); my $data_L=$data_Tk->Entry(-relief=>'flat',-text=>"",-justify=>'center',-font=>'Arial 8',-width=>10,-state=>'disabled')->pack(); my $stop_L=$stop_Tk->Entry(-relief=>'flat',-text=>"",-justify=>'center',-font=>'Arial 8',-width=>10,-state=>'disabled')->pack(); } # the part of the Tk window where received data are supposed to be written my $receive_Tk=$notranji_Tk->Frame()->pack(-side=>'top',-padx=>1,-pady=>3); my $pane_receive_Tk = $receive_Tk->Scrolled("Pane",Name => 'Receive',-scrollbars => 'e',-sticky => 'n',-gridded => 'y',-width=>400,-height=>400,-background=>'white'); $pane_receive_Tk->Frame; $pane_receive_Tk->pack; # in the begining i wasn't sure if the thread should be defined here or not so i left it commented #$thread = threads->create(&Receive,$PORT,$BAUD,$PARITY,$DATA,$received); #$thread->detach(); my $pane_receive_L=$pane_receive_Tk->Entry(-relief=>'flat',-text=>$ERR1,-font=>'Arial 9',-width=>55,-background=>'white')->pack(-ipadx=>2); $pane_receive_L=$pane_receive_Tk->Entry(-relief=>'flat',-text=>$ERR2,-font=>'Arial 9',-width=>55,-background=>'white')->pack(-ipadx=>2); # this is the part of code which should sent received data to this Tk window # it prints two lines only - without the received data # my approach fails so this is the core of my question my @InboundParameters = @_; print("In the thread\n"); print('Got parameters >', join('<>',@InboundParameters), "\n"); # entry my $send_Tk=$notranji_Tk->Frame()->pack(-side=>'top',-padx=>0,-pady=>0); my $sendE_Tk=$send_Tk->Frame()->pack(-side=>'left',-pady=>1,-padx=>0); my $sendG_Tk=$send_Tk->Frame()->pack(-side=>'left',-pady=>1,-padx=>3); my $send_E=$sendE_Tk->Entry(-font=>'Arial 8',-width=>61)->pack(); my $send_G=$sendG_Tk->Button(-text=>'Send',-font=>'Arial 8',-background=>'grey',-command=>sub{exit;})->pack(-ipadx=>3); &MainLoop(); } 1;