#!/usr/local/bin/perl -w #perl2exe_include Tk; #perl2exe_include Tk::Photo; #perl2exe_include strict; use Tk; use Tk::Photo; use strict; ########################################### ########################################### ## ## ## This script is a graphical interface ## ## that allows a user to easily convert ## ## IP bandwidth into ATM PCR. ## ## PCR = (Peak Cell rate) ## ## ## ########################################### ########################################### our($choice, $cb, $pcr, $bps, $status, $answer, $cell_size, $cell_size2); my $window = MainWindow->new; $window->title("ip2atm"); my $frame_space = $window->Frame->pack(-side=>'top', -fill=>'x'); my $frame = $window->Frame->pack(-side=>'top', -fill=>'x'); my $frame_space2 = $window->Frame->pack(-side=>'top', -fill=>'x'); my $frame2 = $window->Frame->pack(-side=>'top', -fill=>'x'); my $frame_space3 = $window->Frame->pack(-side=>'top', -fill=>'x'); my $frame3 = $window->Frame->pack(-side=>'top', -fill=>'x'); my $frame4 = $window->Frame->pack(-side=>'top', -fill=>'x'); my $frame_space5 = $window->Frame->pack(-side=>'top', -fill=>'x'); my $frame5 = $window->Frame->pack(-side=>'top', -fill=>'x'); my $frame6 = $window->Frame->pack(-side=>'top', -fill=>'x'); my $frame_space7 = $window->Frame->pack(-side=>'top', -fill=>'x'); my $frame7 = $window->Frame->pack(-side=>'top', -fill=>'x'); my $frame_space8 = $window->Frame->pack(-side=>'top', -fill=>'x'); my $frame8 = $window->Frame->pack(-side=>'top', -fill=>'x'); my $frame9 = $window->Frame->pack(-side=>'top', -fill=>'x'); my $frame10 = $window->Frame->pack(-side=>'top', -fill=>'x'); $frame_space->Label()->pack(-fill=>'x'); $frame->Label(-text=>"Choose Conversion Type")->pack(-side=>'top', -anchor=>'n'); $frame->Label(-text=>" ")->pack(-side=>'left', -anchor=>'w'); $frame->Button(-text=>"Cells to Bits", -command=>\&cb)-> pack(-side=>'left', -anchor=>'w', -fill=>'none'); $frame->Label(-text=>" ")->pack(-side=>'right', -anchor=>'e'); $frame->Button(-text=>"Bits to Cells", -command=>\&bc)-> pack(-side=>'right', -anchor=>'e', -fill=>'none'); $frame_space2->Label()->pack(-fill=>'x'); $frame2->Label(-text=>"Conversion Type Being Used")->pack(-side=>'top', -anchor=>'n'); $frame2->Entry(-textvariable=>\$choice)-> pack(-side=>'bottom', -anchor=>'n', -fill=>'none'); $frame_space3->Label()->pack(-fill=>'x'); $frame3->Label(-text=>" ")->pack(-side=>'left', -anchor=>'w'); $frame3->Label(-text=>"Enter Peak Cell Rate")->pack(-side=>'left', -anchor=>'w'); $frame3->Label(-text=>" ")->pack(-side=>'right', -anchor=>'e'); $frame3->Label(-text=>"Enter Bits Per Second")->pack(-side=>'right', -anchor=>'e'); $frame4->Label(-text=>" ")->pack(-side=>'left', -anchor=>'w'); $frame4->Entry(-textvariable=>\$pcr)-> pack(-side=>'left', -anchor=>'w', -fill=>'none'); $frame4->Label(-text=>" ")->pack(-side=>'left', -anchor=>'w'); $frame4->Label(-text=>" ")->pack(-side=>'right', -anchor=>'e'); $frame4->Entry(-textvariable=>\$bps)-> pack(-side=>'right', -anchor=>'e', -fill=>'none'); $frame_space5->Label()->pack(-fill=>'x'); $frame5->Label(-text=>" ")->pack(-side=>'left', -anchor=>'w'); $frame5->Label(-text=>"Enter Cell Size")->pack(-side=>'left', -anchor=>'w'); $frame5->Label(-text=>" ")->pack(-side=>'right', -anchor=>'e'); $frame5->Label(-text=>"Enter Cell Size")->pack(-side=>'right', -anchor=>'e'); $frame6->Label(-text=>" ")->pack(-side=>'left', -anchor=>'w'); $frame6->Entry(-textvariable=>\$cell_size)-> pack(-side=>'left', -anchor=>'w', -fill=>'none'); $frame6->Label(-text=>" ")->pack(-side=>'left', -anchor=>'w'); $frame6->Label(-text=>" ")->pack(-side=>'right', -anchor=>'e'); $frame6->Entry(-textvariable=>\$cell_size2)-> pack(-side=>'right', -anchor=>'e', -fill=>'none'); $frame_space7->Label()->pack(-fill=>'x'); $frame7->Button(-text=>" Convert ", -command=>\&convert)-> pack(-side=>'top', -anchor=>'n'); $frame_space8->Label()->pack(-fill=>'x'); $frame8->Label(-text=>" Answer ")->pack(-side=>'top', -anchor=>'n'); $frame9->Label(-text=>" ")->pack(-side=>'left', -anchor=>'w'); $frame9->Entry(-textvariable=>\$answer)-> pack(-side=>'top', -anchor=>'n', -fill=>'none'); $frame10->Button(-text=>" Exit ", -command=>sub{exit;})-> pack(-side=>'bottom', -anchor=>'e'); $window->Label(-textvariable=>\$status, -relief=>'ridge')-> pack(-side=>'bottom', -fill=>'x'); if (-e "converter.gif") { $window->Photo('image', -file=>"converter.gif"); $window->Label(-image=>'image')->pack(-side=>'bottom'); } $status = "Written by: Me"; MainLoop; sub cb { $choice = "Cells to Bits"; $bps = "N/A"; $cell_size2 = "N/A"; $pcr = ""; $cell_size = ""; $answer = ""; } sub bc { $choice = "Bits to Cells"; $pcr = "N/A"; $cell_size = "N/A"; $bps = ""; $cell_size2 = ""; $answer = ""; } sub convert { my ($len1, $type); if ($choice eq "Cells to Bits") { if ($pcr && $cell_size) { $answer = $pcr * $cell_size * 8; $len1 = length($answer); print $len1,"\n"; print $answer,"\n"; if (($len1 < 4) || ($len1 > 15)) { $type = "b/s"; }elsif (($len1 >= 4) && ($len1 <= 6)) { $type = "Kb/s"; $answer = substr($answer, 0, 1)." ".$type if $len1 == 4; $answer = substr($answer, 0, 2)." ".$type if $len1 == 5; $answer = substr($answer, 0, 3)." ".$type if $len1 == 6; }elsif (($len1 >= 7) && ($len1 <= 9)) { $type = "Mb/s"; $answer = substr($answer, 0, 1)." ".$type if $len1 == 7; $answer = substr($answer, 0, 2)." ".$type if $len1 == 8; $answer = substr($answer, 0, 3)." ".$type if $len1 == 9; }else{ $type = "Gb/s"; foreach (my $count=1; $count<10; $count++) { chop($answer); } $answer .= " ".$type; } $status = "Conversion Successfull!"; }else{ $status = "Error: required field missing!"; } }elsif ($choice eq "Bits to Cells") { if ($bps && $cell_size2) { $answer = $bps / 8 / $cell_size2; $answer = sprintf("%.0f", $answer) . " cps"; $status = "Conversion Successfull!"; }else{ $status = "Error: required field missing!"; } }else{ $status = "Error: required field missing!"; } } #### 5 41976 6 423576 7 4239576 8 42399576 9 423999576 10 4239999576 11 42399999576 12 423999999576 13 4239999999576 14 42399999999576 15 423999999999576 21 4.23999999999958e+015 21 4.23999999999996e+016 9 4.24e+017