#!/usr/bin/perl

use lib 'd:/Perl/sitel/lib';
use lib 'd:/Programs/Perl/lib';
use lib '.';

use strict;

use Win32::SerialPort;
use MyGPIB::RS232C;

#シリアルポートの設定
my $ConfFile = 'serialport.conf';
my $COMPort = 'COM1';
my $UseModule = 0;
my $BaudRate = 9600;
my $Parity   = 'none';
my $DataBits = 8;
my $StopBits = 1;
#フロー制御方法の選択；rts(ハードウェア制御)、xoff(ソフトウェア制御)、
#           dtr(rtsと同じことができるがピンが違う)がある。特に理由がない限りrts。
my $HandShake = 'none';
#読込み＆書込みバッファ
my $WriteBufferSize = 1024 * 20;
my $ReadBufferSize  = 1024 * 4;
#読込み時間間隔の設定
my $ReadInterval = 800;
my $ReadCharTime = 400;
my $ErrorMessage = 1;
my $UserMessage  = 1;

my $com = new RS232C();
if(!$com->Open($ConfFile, $COMPort, $BaudRate, $Parity, $DataBits, $StopBits, $HandShake)) {
	print("Error: Can not open [$COMPort].\n");
	exit;
}
print("COM Port set to [$COMPort].\n");

while(1) {
	print ">>";
	my $command = <>;
	if($command =~ /bye/i) {
		last;
	}
	elsif($command =~ /set\s+(COM\d)/i) {
		$COMPort = $1;
		print("COM Port changed to [$COMPort].\n");
#		$com = new RS232C();
		if(!$com->Open($ConfFile, $COMPort, $BaudRate, $Parity, $DataBits, $StopBits, $HandShake)) {
			print("Error: Can not open [$COMPort].\n");
			exit;
		}
		next;
	}

	$com->print($command);
	my $serial = $com->ReadLine();
	print $serial;
}

exit
