//	M080 : COM port signal reading / setting
option unsigned;

define	port, bno = 0;
define	fEnd = 0;
define	fDisEvt = _FALSE;

//------------------------------------------------------------------------------//
//	COM port signal reading / setting											//
//																				//
//	Return	: None																//
//------------------------------------------------------------------------------//
function main()
{
	_Cls();

	_BtnOpen(0, "PortSetting");	//	Button display
	_BtnOpen(1, "DTR-ON");		//	.
	_BtnOpen(2, "DTR-OFF");		//	.
	_BtnOpen(3, "RTS-ON");		//	.
	_BtnOpen(4, "RTS-OFF");		//	.
	_BtnOpen(5, "SignalState");	//	.
	_BtnOpen(6, "End");			//	.

	port  = _ComCreate();						//	COM port generation
	OpenComPort();								//	Port Open

	_Stop();									//	Wait for the 'End' button

	_ComClose (port);							//	Port close
	_ComDelete(port);							//	Port delete
}

//------------------------------------------------------------------------------//
//	COM port open																//
//																				//
//	Argument:	pno - Port number	 											//
//																				//
//	Return	: 	None															//
//------------------------------------------------------------------------------//
function OpenComPort()
{
	define	$text;

	if (_ComIsOpenPossible(port)) {							//	Openable?
		_ComOpen		 (port);							//		Port open
		_ShowText($_StrCat(" ", $_ComGetParam(port), " "));	//		COM port information display
	}
	else {													//	Can not open?
		_ShowText("");										//		COM port information hidden
	}
}
//------------------------------------------------------------------------------//
//	Processing when button is pressed											//
//																				//
//			F	BtnNo - Button ID		 										//
//																				//
//	Return	: 	None															//
//------------------------------------------------------------------------------//
function _OnButton(BtnNo)
{
	define	NewPort;
	define	Sig;

	if		(BtnNo == 0) {								//	0: Port setting button
		if (NewPort = _ComCreateByDialog(port)) {		//		COM port generation by dialog
			port = NewPort;								//			New port number setting
			OpenComPort();								//			Port open
		}
	}
	else if (BtnNo == 1) _ComSetDTR(port, _TRUE );		//	1 : DTR-ON
	else if (BtnNo == 2) _ComSetDTR(port, _FALSE);		//	2 : DTR-OFF
	else if (BtnNo == 3) _ComSetRTS(port, _TRUE );		//	3 : RTS-ON
	else if (BtnNo == 4) _ComSetRTS(port, _FALSE);		//	4 : RTS-OFF
	else if (BtnNo == 5) {								//	5 : Mǂݏo
		Sig = _ComGetSignal(port);
		_PrintF("CTS = %d, DSR = %d\n", (Sig & 0x10) != 0, (Sig & 0x20) != 0);
	}
	else if (BtnNo == 6) _Restart();					//	6 : End
}
