📄 subcmd.c
字号:
/************ **********************************/
/* 僐儅儞僪庴怣張棟 */
/* 俼俽俀俁俀俠 *
/* 2003.04.20 */
/*************************************************/
#include "global.h"
#include "H8S2144.h"
#include "Data.h"
#include "Extern.h"
/************ ***********************************/
/* 嫟捠掕悢n 丂丂丂丂丂丂丂丂丂丂 */
/* */
/* */
/* 2003.04.20 */
/*************************************************/
//
#define SEND_NG 0x00 //
#define SEND_OK 0x20 //
#define SEND_RSOK 0x21 //
#define SEND_RSNG 0x22 //
#define SET_IF 1 //
#define SET_DUTY 2 //
#define SET_IFAB 3 //
#define SET_CWP 4 //
#define SET_ONOFF 5 //
#define SET_POLE 6 //
#define SET_MON 7 //
#define SET_E2P 8 //
#define SET_CLEAR 9 //
#define GET_IF 10 //
#define GET_DUTY 11 //
#define GET_IFAB 12 //
#define GET_CWP 13 //
#define GET_POLE 14 //
#define CHK_ONOFF 15 //
#define CHK_COVER 16 //
#define SET_IF_STR "SI" //
#define SET_DUTY_STR "SD" //
#define SET_IFAB_STR "SA" //
#define SET_CWP_STR "SW" //
#define SET_ONOFF_STR "SO" //
#define SET_POLE_STR "SP" //
#define SET_MON_STR "SM" //
#define SET_E2P_STR "EW" //
#define SET_CLEAR_STR "CL" //
#define GET_IF_STR "RI" //
#define GET_DUTY_STR "RD" //
#define GET_IFAB_STR "RA" //
#define GET_CWP_STR "RW" //
#define GET_POLE_STR "RP" //
#define CHK_ONOFF_STR "RO" //
#define CHK_COVER_STR "RS" //
void gpib_command_proc();
void rs_command_proc();
void set_rs4422_data();
void edit_gpib_return(unsigned short cmdno) ;
void hextobi(char *data_adr, short size, short *bi_data); /* hex to binary */
void bitohex(unsigned short data, char *bi_data); /* binary to hex (2 byte data) */
unsigned short change_cmd2no();
unsigned short strcopm(unsigned char *str1, unsigned char *str2, unsigned short size) ;
short check_driverAddr();
void hextobi5(char *data_adr, short size, short *bi_data); /* hex to binary */
void bitohex5(unsigned short data,char *bi_data); /* binary to hex (4 byte data) */
void cnv_bta5(unsigned short dt, unsigned char *adrs) ; // 5 digit binary to ascii
void rs_returnNG();
void rs_returnOK();
short set_if();
short set_duty();
short set_ifab();
short set_cwpls();
short set_onoff();
short set_pole();
short set_monitor();
short set_e2p();
short CH_clear();
short get_if();
short get_duty();
short get_ab();
short get_cwpls();
short get_pole();
short check_onoff();
short check_cover();
void rs_cmdcheck_job()
{
short ret, i ;
unsigned short cmdno;
for (i = 0; i < g_RsRecv_CT; i++)
{
g_RsRecv_Bf[i] = rs_rx_buf[i];
}
if (g_RsRecv_CT < 3) {
goto rs_rcvdata_exit ;
}
ret = check_driverAddr();
if (ret != OK) {
goto rs_rcvdata_exit ;
}
cmdno = change_cmd2no();
switch (cmdno)
{
case SET_IF: //
ret = set_if();
break;
case SET_DUTY: //
ret = set_duty();
break;
case SET_IFAB: //
ret = set_ifab();
break;
case SET_CWP: //
ret = set_cwpls();
break;
case SET_ONOFF: //
ret = set_onoff();
break;
case SET_POLE: //
ret = set_pole();
break;
case SET_MON: //
ret = set_monitor();
break;
case SET_E2P: //
ret = set_e2p();
break;
case SET_CLEAR: //
ret = CH_clear();
break;
case GET_IF: //
ret = get_if();
break;
case GET_DUTY: //
ret = get_duty();
break;
case GET_IFAB: //
ret = get_ab();
break;
case GET_CWP: //
ret = get_cwpls();
break;
case GET_POLE: //
ret = get_pole();
break;
case CHK_ONOFF: //
ret = check_onoff();
break;
case CHK_COVER: //
ret = check_cover();
break;
default:
rs_returnNG();
break;
}
rs_rceving = 2;
rs_rcvdata_exit:
g_RsRecv_CT = 0;
}
short check_CH(short flag, short *cha, short *pix, short *rang)
{
short ch, pixel,range;
short data;
// CH
hextobi(&g_RsRecv_Bf[4], 2, &data);
ch = data;
if (ch < 1 || ch > MAX_CH) {
rs_returnNG();
return NG;
}
*cha = ch;
if (flag <= 1) {
// pexel
hextobi(&g_RsRecv_Bf[6], 2, &data);
pixel = data;
if (pixel < 1 || pixel > MAX_PIXEL) {
rs_returnNG();
return NG;
}
*pix = pixel;
}
if (flag <= 0) {
// range
hextobi(&g_RsRecv_Bf[8], 2, &data);
range = data;
if (range < 1 || range > MAX_RANGE) {
rs_returnNG();
return NG;
}
*rang = range;
}
return OK ;
}
short set_if()
{
unsigned short ch, pixel;
short range, ifdat;
short data;
short ret;
if (g_RsRecv_CT != 15) {
rs_returnNG();
return NG;
}
ret = check_CH(0, &ch, &pixel, &range);
if (ret != OK) {
rs_returnNG();
return NG;
}
// if1
hextobi5(&g_RsRecv_Bf[11], 4, &data);
ifdat = data;
if (g_RsRecv_Bf[10] == '-') {
ifdat = 0 - ifdat;
}
ret = select_ch(ch);
if (ret != OK) {
rs_returnNG();
return NG;
}
g_SetIf[ch-1][pixel-1] = ifdat;
if ( g_Range[ch-1] != range) {
ret = range_out(range, g_DrivePole[ch-1]);
if (ret != OK) {
rs_returnNG();
return NG;
}
g_Range[ch-1] = range;
}
ret = set_daif(pixel, ifdat);
rs_returnOK();
return OK;
}
short set_duty()
{
unsigned short ch, pixel;
short range, dutydat;
short data;
short ret;
if (g_RsRecv_CT != 13) {
rs_returnNG();
return NG;
}
ret = check_CH(1, &ch, &pixel, &range);
if (ret != OK) {
rs_returnNG();
return NG;
}
// if1
hextobi5(&g_RsRecv_Bf[9], 4, &data);
dutydat = data;
ret = select_ch(ch);
if (ret != OK) {
rs_returnNG();
return NG;
}
g_Duty[ch-1][pixel-1] = dutydat;
ret = duty_out(pixel, dutydat);
rs_returnOK();
return OK;
}
short set_ifab()
{
unsigned short ch, pixel;
short range, ifdata, ifdatb;
short data;
short ret;
if (g_RsRecv_CT != 20) {
rs_returnNG();
return NG;
}
ret = check_CH(0, &ch, &pixel, &range);
if (ret != OK) {
rs_returnNG();
return NG;
}
// if1
hextobi5(&g_RsRecv_Bf[11], 4, &data);
ifdata = data;
if (g_RsRecv_Bf[10] == '-') {
ifdata = 0 - ifdata;
}
hextobi5(&g_RsRecv_Bf[16], 4, &data);
ifdatb = data;
if (g_RsRecv_Bf[15] == '-') {
ifdatb = 0 - ifdatb;
}
switch(range) {
case 1:
g_CalIfaR1[ch-1][pixel-1] = ifdata;
g_CalIfbR1[ch-1][pixel-1] = ifdatb;
break;
case 2:
g_CalIfaR2[ch-1][pixel-1] = ifdata;
g_CalIfbR2[ch-1][pixel-1] = ifdatb;
break;
case 3:
g_CalIfaR3[ch-1][pixel-1] = ifdata;
g_CalIfbR3[ch-1][pixel-1] = ifdatb;
break;
}
rs_returnOK();
return OK;
}
short set_cwpls()
{
unsigned short ch, pixel;
short range, dat;
short data;
short ret;
if (g_RsRecv_CT != 10) {
rs_returnNG();
return NG;
}
ret = check_CH(0, &ch, &pixel, &range);
if (ret != OK) {
rs_returnNG();
return NG;
}
// if1
hextobi(&g_RsRecv_Bf[8], 2, &data);
dat = data;
ret = select_ch(ch);
if (ret != OK) {
rs_returnNG();
return NG;
}
g_CwPulse[ch-1][pixel-1] = dat;
ret = onoff_out(pixel, g_OnOff[ch-1][pixel-1], dat);
rs_returnOK();
return OK;
}
short set_onoff()
{
unsigned short ch, pixel;
short range, dat;
short data;
short ret;
if (g_RsRecv_CT != 10) {
rs_returnNG();
return NG;
}
ret = check_CH(1, &ch, &pixel, &range);
if (ret != OK) {
rs_returnNG();
return NG;
}
// if1
hextobi(&g_RsRecv_Bf[8], 2, &data);
dat = data;
ret = select_ch(ch);
if (ret != OK) {
rs_returnNG();
return NG;
}
g_OnOff[ch-1][pixel-1] = dat;
ret = onoff_out(pixel, dat, g_CwPulse[ch-1][pixel-1]);
rs_returnOK();
return OK;
}
short set_pole()
{
unsigned short ch, pixel;
short range, dat;
short data;
short ret;
if (g_RsRecv_CT != 8) {
rs_returnNG();
return NG;
}
ret = check_CH(2, &ch, &pixel, &range);
if (ret != OK) {
rs_returnNG();
return NG;
}
// if1
hextobi(&g_RsRecv_Bf[6], 2, &data);
dat = data;
ret = select_ch(ch);
if (ret != OK) {
rs_returnNG();
return NG;
}
g_DrivePole[ch-1] = dat;
ret = range_out(g_Range[ch-1] , dat);
rs_returnOK();
return OK;
}
short set_monitor()
{
unsigned short ch, pixel, range;
short ret, data, dat;
if (g_RsRecv_CT != 8) {
rs_returnNG();
return NG;
}
ret = check_CH(2, &ch, &pixel, &range);
if (ret != OK) {
rs_returnNG();
return NG;
}
hextobi(&g_RsRecv_Bf[6], 2, &data);
dat = data;
ret = select_ch(ch);
if (ret != OK) {
rs_returnNG();
return NG;
}
ret = mon_select(dat);
rs_returnOK();
return OK;
}
short set_e2p()
{
if (g_RsRecv_CT != 4) {
rs_returnNG();
return NG;
}
e2prom_wt_pro();
rs_returnOK();
return OK;
}
short CH_clear()
{
unsigned char chr;
CH_SELECT = 0x00;
chr = P9DR;
P9DR = chr & 0xfb;
rs_returnOK();
return OK;
}
short get_if()
{
unsigned short ch, pixel, range;
short ret, data;
short i;
char datstr[10];
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];
}
bitohex(g_Range[ch-1], &datstr[0]);
g_RsSend_Bf[4] = datstr[0];
g_RsSend_Bf[5] = datstr[1];
data = g_SetIf[ch-1][pixel-1];
cnv_bta5(data, &datstr[0]);
g_RsSend_Bf[6] = ' ';
for (i = 0; i < 4; i++)
{
g_RsSend_Bf[7 + i] = datstr[i];
}
g_RsSend_Bf[11] = 0x0d;
g_RsSend_CT = 12;
return OK;
}
short get_duty()
{
unsigned short ch, pixel, range;
short ret, data;
short i;
char datstr[10];
if (g_RsRecv_CT != 8) {
rs_returnNG();
return NG;
}
ret = check_CH(1, &ch, &pixel, &range);
if (ret != OK) {
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -