#!/usr/bin/perl -w use strict; use Tkx; use Win32::SerialPort; use Cwd; use File::Copy; my $path = getcwd; my $read_scale; my $main_back_color = "#EAC9E0"; my $backcolor = "#E798FF"; my $active_color = "#D4D0C8"; my $scale; my $maintitle = "Read Sartorius"; my $version = " version 1.000"; Tkx::catch("console hide"); my $mw = Tkx::widget->new("."); $mw->g_wm_resizable(0,0); $mw-> g_wm_title($maintitle); $mw->g_grid_columnconfigure(0, -weight => 1); $mw->g_grid_rowconfigure(0, -weight => 1); Tkx::font_create("headtext_font",-size => 14); Tkx::font_create("scale_font",-size => 10); Tkx::font_create("bold_label_font", -size => 12, -weight=> 'bold'); Tkx::font_create("small_button_font", -size => 6,-weight=> 'normal'); my $menu = $mw->new_menu; $mw->configure(-menu => $menu); my $std_fncts = $menu->new_menu; my $test = $menu->new_menu; $menu->add_cascade(-menu => $test, -label => "Help"); $test->add_command(-label => "no Help yet", -command => sub {fill_help("F");do_help(25,100);}); $menu->add_command(-label => "Exit", -command => sub{\&clean_exit()}); my $frame0 = $mw-> new_frame(-relief=>'raised',-borderwidth=>2,-bd=>1,-background=> "$backcolor"); $frame0->g_grid(-column =>0, -row => 0,-sticky => "ns"); my $buttons = $frame0-> new_frame(-bd=>2,-relief=>'raised',-relief=>'raised'); #,-background =>$check_button_color); $buttons->g_grid(-column =>0,-rowspan => 2, -row => 4,-sticky => "nsew"); my $readbut = $buttons->new_button (-text => "Read", , -width=> 11,-command => sub {read_scale();}, -background => "green", -activebackground => "red", -pady => 5, -padx => 6); $readbut -> g_grid(-column =>0, -row => 0, -sticky => "E"); my $tarebut = $buttons->new_button (-text => "Tare", -width=> 10, -command => sub {tare_scale();}, -background => "red", -pady => 5, -padx => 3); $tarebut -> g_grid(-column =>1, -row => 0, -sticky => "E"); my $lblscale = $buttons->new_label (-text => "Scale"); $lblscale -> g_grid(-column => 0, -row => 1, -sticky => "w"); my $eread_scale = $buttons->new_entry (-width => 15, -textvariable => \$read_scale); $eread_scale -> g_grid(-column => 1, -row => 1, -sticky => "w"); my $PORT = "COM1"; # port to watch my $ob = Win32::SerialPort->new ($PORT) || die "Can't Open $PORT: $!"; $ob->baudrate(1200) || die "failed setting baudrate"; $ob->parity("odd") || die "failed setting parity"; $ob->databits(7) || die "failed setting databits"; $ob->handshake("rts") || die "failed setting handshake"; $ob->stopbits(1) || die "failed setting stop bits";; $ob->write_settings || die "no settings"; sub read_scale{ $ob->transmit_char(0x1b); $ob->transmit_char(0x50); $ob->transmit_char(0x0d); $ob->transmit_char(0x0a); sleep .2; my $result = $ob->input; $read_scale = ($result); print "result = $result\n"; my $got_it = $ob->lookfor; } sub tare_scale{ $ob->transmit_char(0x1b); $ob->transmit_char(0x54); $ob->transmit_char(0x0d); $ob->transmit_char(0x0a); } sub clean_exit{ undef $ob; exit; } Tkx::MainLoop();