⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 subcmd.c

📁 日立单片机H8S2144例程.包括AD,DA等程序(用于光源)但对于H8S2144使用者来说有很大的帮助.
💻 C
📖 第 1 页 / 共 2 页
字号:
		rs_returnNG();
		return NG;
	}

	for (i = 0; i < 4; i++)
	{
		g_RsSend_Bf[i] = g_RsRecv_Bf[i];
	}

	data = g_Duty[ch-1][pixel-1];

	cnv_bta5(data, &datstr[0]);
	g_RsSend_Bf[4]  = ' ';				
	for (i = 0; i < 4; i++)
	{
		g_RsSend_Bf[5 + i]  = datstr[i];	
	}

	g_RsSend_Bf[9]  = 0x0d;				
	g_RsSend_CT = 10;

	return OK;
}
short get_ab()
{
	unsigned short ch, pixel, range;
	short ret, ifdata, ifdatb;
	short i;
	char datstr[10];

	if (g_RsRecv_CT != 10) {
		rs_returnNG();
		return NG;
	}

	ret = check_CH(0, &ch, &pixel, &range);
	if (ret != OK) {
		rs_returnNG();
		return NG;
	}

	for (i = 0; i < 4; i++)
	{
		g_RsSend_Bf[i] = g_RsRecv_Bf[i];
	}

	switch(range) {
	case 1:
		ifdata = g_CalIfaR1[ch-1][pixel-1];
		ifdatb = g_CalIfbR1[ch-1][pixel-1];
		break;
	case 2:
		ifdata = g_CalIfaR2[ch-1][pixel-1];
		ifdatb = g_CalIfbR2[ch-1][pixel-1];
		break;
	case 3:
		ifdata = g_CalIfaR3[ch-1][pixel-1];
		ifdatb = g_CalIfbR3[ch-1][pixel-1];
		break;
	}

	cnv_bta5(ifdata, &datstr[0]);
	g_RsSend_Bf[4]  = ' ';				
	for (i = 0; i < 4; i++)
	{
		g_RsSend_Bf[5 + i]  = datstr[i];	
	}

	cnv_bta5(ifdatb, &datstr[0]);
	g_RsSend_Bf[9]  = ' ';				
	for (i = 0; i < 4; i++)
	{
		g_RsSend_Bf[10 + i]  = datstr[i];	
	}
	g_RsSend_Bf[14]  = 0x0d;				
	g_RsSend_CT = 15;
	return OK;
}

short get_cwpls()
{
	unsigned short ch, pixel, range;
	short ret ;
	short i;

	if (g_RsRecv_CT != 8) {
		rs_returnNG();
		return NG;
	}

	ret = check_CH(1, &ch, &pixel, &range);
	if (ret != OK) {
		rs_returnNG();
		return NG;
	}

	for (i = 0; i < 4; i++)
	{
		g_RsSend_Bf[i] = g_RsRecv_Bf[i];
	}

	g_RsSend_Bf[4]  = '0';	
	if (g_CwPulse[ch-1][pixel-1] == 1) {
		g_RsSend_Bf[5]  = '1';	
	}
	else {
		g_RsSend_Bf[5]  = '0';	
	}
	g_RsSend_Bf[6]  = 0x0d;				
	g_RsSend_CT = 7;
	return OK;
}
short get_pole()
{
	unsigned short ch, pixel, range;
	short ret ;
	short i;

	if (g_RsRecv_CT != 6) {
		rs_returnNG();
		return NG;
	}

	ret = check_CH(2, &ch, &pixel, &range);
	if (ret != OK) {
		rs_returnNG();
		return NG;
	}

	for (i = 0; i < 4; i++)
	{
		g_RsSend_Bf[i] = g_RsRecv_Bf[i];
	}

	g_RsSend_Bf[4]  = '0';	
	if (g_DrivePole[ch-1] == 1) {
		g_RsSend_Bf[5]  = '1';	
	}
	else {
		g_RsSend_Bf[5]  = '0';	
	}
	g_RsSend_Bf[6]  = 0x0d;				
	g_RsSend_CT = 7;
	return OK;
}
short get_range()
{
	unsigned short ch, pixel, range;
	short ret ;
	short i;

	if (g_RsRecv_CT != 8) {
		rs_returnNG();
		return NG;
	}

	ret = check_CH(0, &ch, &pixel, &range);
	if (ret != OK) {
		rs_returnNG();
		return NG;
	}

	for (i = 0; i < 4; i++)
	{
		g_RsSend_Bf[i] = g_RsRecv_Bf[i];
	}

	g_RsSend_Bf[4]  = '0';	
	if (g_Range[ch-1] == 1) {
		g_RsSend_Bf[5]  = '1';	
	}
	else {
		g_RsSend_Bf[5]  = '0';	
	}
	g_RsSend_Bf[6]  = 0x0d;				
	g_RsSend_CT = 7;
	return OK;
}
short check_onoff()
{
	unsigned short ch, pixel, range;
	short ret ;
	short i;

	if (g_RsRecv_CT != 8) {
		rs_returnNG();
		return NG;
	}

	ret = check_CH(1, &ch, &pixel, &range);
	if (ret != OK) {
		rs_returnNG();
		return NG;
	}

	for (i = 0; i < 4; i++)
	{
		g_RsSend_Bf[i] = g_RsRecv_Bf[i];
	}

	g_RsSend_Bf[4]  = '0';	
	if (g_OnOff[ch-1][pixel-1] == 1) {
		g_RsSend_Bf[5]  = '1';	
	}
	else {
		g_RsSend_Bf[5]  = '0';	
	}
	g_RsSend_Bf[6]  = 0x0d;				
	g_RsSend_CT = 7;
	return OK;
}
short check_cover()
{
	short i;
	unsigned short data;
	unsigned char chrh;
	unsigned char chrl;
	char datstr[10];


	if (g_RsRecv_CT != 4) {
		rs_returnNG();
		return NG;
	}

	for (i = 0; i < 4; i++)
	{
		g_RsSend_Bf[i] = g_RsRecv_Bf[i];
	}

	chrh = DRV_STATUS9 ;
	chrl = DRV_STATUS1 ;

	data = chrh;
	data = (data << 8) || chrl;

	cnv_bta5(data, &datstr[0]);

	for (i = 0; i < 4; i++)
	{
		g_RsSend_Bf[4 + i]  = datstr[i];	
	}

	g_RsSend_Bf[8]  = 0x0d;				
	g_RsSend_CT = 9;
	return OK;
}





unsigned short change_cmd2no()
{
	unsigned short ret;
	unsigned short siz;

	ret = -1 ;
	siz = 2;

	ret = strcopm(&g_RsRecv_Bf[2], (unsigned char *)SET_IF_STR, siz) ;
	if (ret == 1) {
		ret = SET_IF ;
		return ret ;
	}
	ret = strcopm(&g_RsRecv_Bf[2], (unsigned char *)SET_DUTY_STR, siz) ;
	if (ret == 1) {
		ret = SET_DUTY ;
		return ret ;
	}
	ret = strcopm(&g_RsRecv_Bf[2], (unsigned char *)SET_IFAB_STR, siz) ;
	if (ret == 1) {
		ret = SET_IFAB ;
		return ret ;
	}
	ret = strcopm(&g_RsRecv_Bf[2], (unsigned char *)SET_CWP_STR, siz) ;
	if (ret == 1) {
		ret = SET_CWP ;
		return ret ;
	}
	ret = strcopm(&g_RsRecv_Bf[2], (unsigned char *)SET_ONOFF_STR, siz) ;
	if (ret == 1) {
		ret = SET_ONOFF ;
		return ret ;
	}
	ret = strcopm(&g_RsRecv_Bf[2], (unsigned char *)SET_POLE_STR, siz) ;
	if (ret == 1) {
		ret = SET_POLE ;
		return ret ;
	}
	ret = strcopm(&g_RsRecv_Bf[2], (unsigned char *)SET_MON_STR, siz) ;
	if (ret == 1) {
		ret = SET_MON ;
		return ret ;
	}
	ret = strcopm(&g_RsRecv_Bf[2], (unsigned char *)SET_E2P_STR, siz) ;
	if (ret == 1) {
		ret = SET_E2P ;
		return ret ;
	}
	ret = strcopm(&g_RsRecv_Bf[2], (unsigned char *)SET_CLEAR_STR, siz) ;
	if (ret == 1) {
		ret = SET_CLEAR ;
		return ret ;
	}
	ret = strcopm(&g_RsRecv_Bf[2], (unsigned char *)GET_IF_STR, siz) ;
	if (ret == 1) {
		ret = GET_IF ;
		return ret ;
	}
	ret = strcopm(&g_RsRecv_Bf[2], (unsigned char *)GET_DUTY_STR, siz) ;
	if (ret == 1) {
		ret = GET_DUTY ;
		return ret ;
	}
	ret = strcopm(&g_RsRecv_Bf[2], (unsigned char *)GET_IFAB_STR, siz) ;
	if (ret == 1) {
		ret = GET_IFAB ;
		return ret ;
	}
	ret = strcopm(&g_RsRecv_Bf[2], (unsigned char *)GET_CWP_STR, siz) ;
	if (ret == 1) {
		ret = GET_CWP ;
		return ret ;
	}
	ret = strcopm(&g_RsRecv_Bf[2], (unsigned char *)GET_POLE_STR, siz) ;
	if (ret == 1) {
		ret = GET_POLE ;
		return ret ;
	}
	ret = strcopm(&g_RsRecv_Bf[2], (unsigned char *)CHK_ONOFF_STR, siz) ;
	if (ret == 1) {
		ret = CHK_ONOFF ;
		return ret ;
	}
	ret = strcopm(&g_RsRecv_Bf[2], (unsigned char *)CHK_COVER_STR, siz) ;
	if (ret == 1) {
		ret = CHK_COVER ;
		return ret ;
	}

	return (ret);
}


unsigned short strcopm(unsigned char *str1, unsigned char *str2, unsigned short size)
{
	unsigned short i, ret;
	unsigned short slen;
	unsigned char ch1, ch2;
	
	if (size < 2) {
		ret = 0;
		return ret;
	}
	
	ret = 1;
		
	slen = size ;
	for (i = 0 ; i < slen; i++)
	{
		ch1 = *(str1 + i);
		ch2 = *(str2 + i);		
		if (ch1 !=  ch2) {
			ret = 0;
			break;
		}			
	}
	return ret ;
}



void bitohex(unsigned short data, char *bi_data)		/* binary to hex  (2 byte data) */
{ 
	unsigned short i,j,k;
	char  ich;
	char *ipt;
	ipt = bi_data;
	j = 0;
	k = 0xf000;
	for(i=0 ; i < 2 ; i++){
  		if (( 1 - i ) != 0) {							/* 僔僼僩夞悢楇埲奜  */
			 j = (data   >> ((1-i) * 4)) ;
		} 
		else { 
			j = data;
		}
  		j &= 0x000f;
		ich = (char)j;
		if (ich > 9 ) { 
			ich += 0x37;
		}   						/*	塸戝暥帤    */
		else  {
			ich |= 0x30;
		}							/* 	悢帤俙俽俠  */
		k >>= 4;

		*ipt = ich;
		ipt++;
	}
}
void hextobi(char  *data_adr, short  size, short *bi_data)		/* hex to binary */
{ 
	unsigned short i,j;
	unsigned char  ich;
	char  *ipt;
	ipt = data_adr;
	if (size != 2) {
		*bi_data = 0 ;
		return ;
	}

	j = 0;
	ich = ipt[0];
	if ((ich >= '0') && (ich <= '9')) {
		i = (short)ich - 0x30 ;
	}
	else {
		i = (short)ich - 0x37 ;
	}
	j = i * 10;

	ich = ipt[1];
	if ((ich >= '0') && (ich <= '9')) {
		i = (short)ich - 0x30 ;
	}
	else {
		i = (short)ich - 0x37 ;
	}
	j += i * 1;

    *bi_data = j;								/* 僶僀僫儕乕僨乕僞僙僢僩	*/
}	


void rs_returnOK()
{
	short i;
	for (i = 0; i < 4; i++)
	{
		g_RsSend_Bf[i] = g_RsRecv_Bf[i];
	}
	g_RsSend_Bf[4]  = 'O';				
	g_RsSend_Bf[5]  = 'K';				
	g_RsSend_Bf[6]  = 0x0d;				
	g_RsSend_CT = 7;
}

void rs_returnNG()
{
	short i;
	for (i = 0; i < 4; i++)
	{
		g_RsSend_Bf[i] = g_RsRecv_Bf[i];
	}
	g_RsSend_Bf[4]  = 'N';				
	g_RsSend_Bf[5]  = 'G';				
	g_RsSend_Bf[6]  = 0x0d;				
	g_RsSend_CT = 7;
}


short check_driverAddr()
{
	unsigned short	data, addr;

	//hextobi(&g_RsRecv_Bf[0], 2, &data);
	//if (data == ALL_CLEAR) {
		//return OK;
	//}

	addr = P7DR & 0xff;  //0x3f!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
	//if (data == addr) {
		//return OK;
	//}
	return addr;       //return NG
}


void hextobi5(char  *data_adr, short  size, short *bi_data)		/* hex to binary */
 { 
	unsigned short i,j;
	unsigned char  ich;
	char  *ipt;
	ipt = data_adr;
	if (size != 4) {
		*bi_data = 0 ;
		return ;
	}

	j = 0;
	ich = ipt[0];
	if ((ich >= '0') && (ich <= '9')) {
		i = (short)ich - 0x30 ;
		j = i * 1000;
	}
	ich = ipt[1];
	if ((ich >= '0') && (ich <= '9')) {
		i = (short)ich - 0x30 ;
		j += i * 100;
	}
	ich = ipt[2];
	if ((ich >= '0') && (ich <= '9')) {
		i = (short)ich - 0x30 ;
		j += i * 10;
	}
	ich = ipt[3];
	if ((ich >= '0') && (ich <= '9')) {
		i = (short)ich - 0x30 ;
		j += i ;
	}
    *bi_data = j;								/* 僶僀僫儕乕僨乕僞僙僢僩	*/
}	

void bitohex5(unsigned short  data,char   *bi_data)		/* binary to hex  (4 byte data) */
 { 
	unsigned short i,j,k;
	char  ich;
	char *ipt;
	ipt = bi_data;
	j = 0;
	k = 0xf000;
	for(i=0 ; i<4 ; i++){
  		if (( 3 - i ) != 0){							/* 僔僼僩夞悢楇埲奜  */
			 j = (data   >> ((3-i) * 4)) ;
		} else { j = data;}
  		j &= 0x000f;
		ich = (char)j;
		if (ich > 9 ) { ich += 0x37;}   				/*	塸戝暥帤    */
		else  {ich |= 0x30;}							/* 	悢帤俙俽俠  */
		k >>= 4;

		*ipt = ich;
		ipt++;
	}
}


void cnv_bta5(unsigned short dt, unsigned char *adrs)  //   5 digit binary to ascii
{ 
  unsigned short i,j,k,n,m;
  	char ichr;
  	i = dt;
  	j = 0;     // leading zero suppress flag
  	n = 1000;
	for( k=0; k<4; k++ ) {
		m = i / n;
		if ((m != 0) || (j != 0)) {
			ichr = (m | 0x30);
			*adrs = ichr;
			adrs++;
			j++;
		}
		else {
			*adrs = '0';
			adrs++;
		}
		i -= (n * m);
		n /= 10;
	}
	ichr = (i | 0x30);
	*adrs = ichr;
	adrs++;
	j ++;
 
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -