//	M200 : Ⴝ`ނƂ̐ڑ
define	bno 	= 0;
define	fEnd	= 0;
define	fOpened = _FALSE;

//------------------------------------------------------------------------------//
//	VAMƃCxg̎sTv										//
//																				//
//	߂l	F	Ȃ															//
//------------------------------------------------------------------------------//
function main()
{
	_BtnOpen(0, "I ");				//	{^\

	//	KCh\
	_Cls();
	_Print("^[~i|[gMf[^\܂B\n");
	_Print("@E bsqk{ENbNƑMj[\܂B\n");
	_Print("@EuIv{^ƃ}NeLXg̎sI܂B\n");

	_Stop();							//	sf

	//	ȉ̂RXebv́AɋLqȂĂnji}NIAIɔjj
	_ComClose (_SLOT_PORT);				//	|[gN[Y
	_ComDelete(_SLOT_PORT);				//	|[g
	if (bno != 0) _MemFree(bno);		//	ubN
}
//------------------------------------------------------------------------------//
//	^[~iƂ̐ڑCxg													//
//																				//
//			F	$MySlot  - [Xbg									//
//				$RmtSlot - ^[~i[Xbg							//
//																				//
//	߂l	F	Ȃ															//
//------------------------------------------------------------------------------//
function _OnTermLink($MySlot, $RmtSlot)
{
	_PrintF("^[~iƐڑ܂\n");
	//	ubNm
	bno = _MemAlloc(1024);
	//	^[~iƂ̐ڑp[XbgE|[g
	_ComCreate($MySlot);
	//	MCxg֐ݒ
	_ComSetOnRxText  (_SLOT_PORT, "OnText");
	_ComSetOnRxCtrl  (_SLOT_PORT, "OnCtrl");
	_ComSetOnRxEsc	 (_SLOT_PORT, "OnEsc" );
	_ComSetOnRxPacket(_SLOT_PORT, "OnPacket", bno);
	//	^[~iƂ̐ڑp[XbgE|[gI[v
	_ComOpen($RmtSlot);
	fOpened = _TRUE;
}

//------------------------------------------------------------------------------//
//	^[~iƂ̐ؒfCxg													//
//																				//
//			F	Ȃ															//
//																				//
//	߂l	F	Ȃ															//
//------------------------------------------------------------------------------//
function _OnTermUnlink()
{
	_PrintF("^[~iI܂\n");
}

//------------------------------------------------------------------------------//
//	^[~ĩ|[gI[v Cxg										//
//																				//
//			F	Ȃ															//
//																				//
//	߂l	F	Ȃ															//
//------------------------------------------------------------------------------//
function _OnTermOpened()
{
	_PrintF("^[~ĩ|[gI[v܂B\n");
}

//------------------------------------------------------------------------------//
//	^[~ĩ|[gN[Y Cxg										//
//																				//
//			F	Ȃ															//
//																				//
//	߂l	F	Ȃ															//
//------------------------------------------------------------------------------//
function _OnTermClosed()
{
	_PrintF("^[~ĩ|[gN[Y܂B\n");
}

//------------------------------------------------------------------------------//
//	|[geLXgf[^M̏										//
//																				//
//			F	$Text - MeLXg											//
//																				//
//	߂l	F	Ȃ															//
//------------------------------------------------------------------------------//
function OnText($Text)
{
	_PrintF("RxText = '%s'\n", $Text);					//	MeLXg\
}

//------------------------------------------------------------------------------//
//	|[g琧R[hM̏											//
//																				//
//			F	ctrl - R[h												//
//																				//
//	߂l	F	Ȃ															//
//------------------------------------------------------------------------------//
function OnCtrl(ctrl)
{
	_PrintF("RxCtrl = 0x%02X\n", ctrl);					//	MR[h\
}

//------------------------------------------------------------------------------//
//	|[gdrbV[PXM̏										//
//																				//
//			F	$Esc - drbV[PX 										//
//																				//
//	߂l	F	Ȃ															//
//------------------------------------------------------------------------------//
function OnEsc($Esc)
{
	_PrintF("RxEsc  = \"\\x1B%s\"\n", $_StrPart($Esc, 1, 100));	//	Mdrb\
}

//------------------------------------------------------------------------------//
//	|[gpPbgf[^M̏										//
//																				//
//			F	$Esc - drbV[PX 										//
//																				//
//	߂l	F	Ȃ															//
//------------------------------------------------------------------------------//
function OnPacket(len)
{
	define	b, i;

	_Print("RxPkt  =");									//	MpPbg\
	for (i = 0; i < len; i++) {							//	E
		b = _GetMemBlk(bno, i, 1);						//	E
		_Ph(" 0x"); _Ph(b, 2);							//	E
	}													//	E
	_Print("\n");										//	E
}
//------------------------------------------------------------------------------//
//	ENbN̏															//
//																				//
//			F	x - wʒu			shift - ShiftL[tO					//
//				y - xʒu			ctrl  - Ctrl L[tO					//
//																				//
//	߂l	F	Ȃ															//
//------------------------------------------------------------------------------//
function _OnRClick(x, y, shift, ctrl)
{//						[0] 			[1] 				  [2]				 
	define	$menu[] = {"eLXgM", "oCif[^M", "pPbgf[^M"};
	define	id, bytes;
	define	$txt;

	if (fOpened) {
		id = _PopupMenu($menu[], x, y);					//	|bvAbvj[

		if		(id == 0) {								//	eLXgMH
			$txt = $_Input("MeLXg͂Ă");
			if ($txt != "") {									// ͂H
				_ComSendText(_SLOT_PORT, $txt, "\r\n");			//	 eLXgf[^M
			}
		}
		else if (id == 1) {								//	oCif[^MH
			$txt = $_Input("MoCif[^i16i2j󔒂ŋ؂ē͂Ă");
			if ($txt != "") {									// ͂H
				if (bytes = _HexStrToBinary($txt, bno, 0)) {	//	 16i񁨃oCiϊ
					_ComSendBinary(_SLOT_PORT, bno, 0, bytes);	//	 oCif[^M
				}
			}
		}
		else if (id == 2) {								//	pPbgf[^MH
			$txt = $_Input("MpPbgf[^i16i2j󔒂ŋ؂ē͂Ă");
			if ($txt != "") {									// ͂H
				if (bytes = _HexStrToBinary($txt, bno, 0)) {	//	 16i񁨃oCiϊ
					_ComSendPacket(_SLOT_PORT, bno, 0, bytes);	//	 pPbgf[^M
				}
			}
		}
	}
	else _MsgBox("^[~i}NEChNĂ", $_MyName, _MB_OK);

	return 123;
}
//------------------------------------------------------------------------------//
//	{^̏															//
//																				//
//			F	BtnNo - {^ʂhc	 										//
//																				//
//	߂l	F	Ȃ															//
//------------------------------------------------------------------------------//
function _OnButton(BtnNo)
{
	if (BtnNo == 0) {
		if (_MsgBox("I܂H", $_MyName, _MB_YESNO) == _IDYES) {
			_Restart();
		}
	}
	return 0;
}
