📄 101.cpp
字号:
}
else if(course!=20)
send_no_data(acd);
break;
case 9:
if(ycg>=1)
{
putheado(248);
if(course!=20)pdo(0x80|acd,0);
else pdo(0x80,0);
pdo(dlmyadd,1);//address
pdo(21,1);
pdo(120|0x80,1);
pdo(course,1);//some time it is 29
pdo(dlmyadd,1);//address
pdo(01,1);
pdo(07,1);
for(i=0;i<120;i++)
{
temp1=yc_info.yc_value[i]&0xfff;
if(temp1&0x0800)
{
temp1=0x0fff-temp1;
temp1=~temp1;
temp1+=1;
}
pdo(temp1&0xff,1);
pdo(temp1>>8,1);
}//for(i=0;i<120;i++)
pdo(sum,2);
pdo(0x16,2);
}//if(ycg>=1)
else if(modc>0)
{
putheado(2*modc+8);
if(course!=20)pdo(0x80|acd,0);
else pdo(0x80,0);
pdo(dlmyadd,1);//address
pdo(21,1);
pdo(modc|0x80,1);
pdo(course,1);//29
pdo(dlmyadd,1);//address
pdo(01,1);
pdo(07,1);
for(i=0;i<modc;i++)
{
temp1=yc_info.yc_value[i]&0xfff;
if(temp1&0x0800)
{
temp1=0x0fff-temp1;
temp1=~temp1;
temp1+=1;
}
pdo(temp1&0xff,1);
pdo(temp1>>8,1);
}//for(i=0;i<modxf;i++)
pdo(sum,2);
pdo(0x16,2);
}
else if(course!=20)
send_no_data(acd);
break;
case 10:
if(ycg>=2)
{
putheado(248);
if(course!=20)pdo(0x80|acd,0);
else pdo(0x80,0);
pdo(dlmyadd,1);//address
pdo(21,1);
pdo(120|0x80,1);
pdo(course,1);
pdo(dlmyadd,1);//address
pdo(120+01,1);
pdo(0+07,1);
for(i=120;i<240;i++)
{
temp1=yc_info.yc_value[i]&0xfff;
if(temp1&0x0800)
{
temp1=0x0fff-temp1;
temp1=~temp1;
temp1+=1;
}
pdo(temp1&0xff,1);
pdo(temp1>>8,1);
}//for(i=240;i<480;i++)
pdo(sum,2);
pdo(0x16,2);
}//if(ycg>=1)
else if((ycg==1)&&(modc>0))
{
putheado(2*modc+8);
if(course!=20)pdo(0x80|acd,0);
else pdo(0x80,0);
pdo(dlmyadd,1);//address
pdo(21,1);
pdo(modc|0x80,1);
pdo(course,1);
pdo(dlmyadd,1);//address
pdo(120+01,1);
pdo(0+07,1);
for(i=120;i<120+modc;i++)
{
temp1=yc_info.yc_value[i]&0xfff;
if(temp1&0x0800)
{
temp1=0x0fff-temp1;
temp1=~temp1;
temp1+=1;
}
pdo(temp1&0xff,1);
pdo(temp1>>8,1);
}//for(i=0;i<modxf;i++)
pdo(sum,2);
pdo(0x16,2);
}
else if(course!=20)
send_no_data(acd);
break;
case 11:
if(ycg>=3)
{
putheado(248);
if(course!=20)pdo(0x80|acd,0);
else pdo(0x80,0);
pdo(dlmyadd,1);//address
pdo(21,1);
pdo(120|0x80,1);
pdo(course,1);//30?
pdo(dlmyadd,1);//address
pdo(240+01,1);
pdo(0+07,1);
for(i=240;i<360;i++)
{
temp1=yc_info.yc_value[i]&0xfff;
if(temp1&0x0800)
{
temp1=0x0fff-temp1;
temp1=~temp1;
temp1+=1;
}
pdo(temp1&0xff,1);
pdo(temp1>>8,1);
}//for(i=240;i<480;i++)
pdo(sum,2);
pdo(0x16,2);
}//if(ycg>=1)
else if((ycg==2)&&(modc>0))//ycg==2
{
putheado(2*modc+8);
if(course!=20)pdo(0x80|acd,0);
else pdo(0x80,0);
pdo(dlmyadd,1);//address
pdo(21,1);
pdo(modc|0x80,1);
pdo(course,1);
pdo(dlmyadd,1);//address
pdo(240+01,1);
pdo(0+07,1);
for(i=240;i<240+modc;i++)
{
temp1=yc_info.yc_value[i]&0xfff;
if(temp1&0x0800)
{
temp1=0x0fff-temp1;
temp1=~temp1;
temp1+=1;
}
pdo(temp1&0xff,1);
pdo(temp1>>8,1);
}//for(i=0;i<modxf;i++)
pdo(sum,2);
pdo(0x16,2);
}
else if(course!=20)
send_no_data(acd);
break;
case 12:
if((ycg==3)&&(modc>0))
{
putheado(modc*2+8);
if(course!=20)pdo(0x80|acd,0);
else pdo(0x80,0);
pdo(dlmyadd,1);//address
pdo(21,1);
pdo(modc|0x80,1);
pdo(course,1);
pdo(dlmyadd,1);//address
pdo(0x68+01,1);//0x168=360
pdo(1+07,1);
for(i=360;i<360+modc;i++)
{
temp1=yc_info.yc_value[i]&0xfff;
if(temp1&0x0800)
{
temp1=0x0fff-temp1;
temp1=~temp1;
temp1+=1;
}
pdo(temp1&0xff,1);
pdo(temp1>>8,1);
}//for(i=0;i<modxf;i++)
pdo(sum,2);
pdo(0x16,2);
}
else if(course!=20)
send_no_data(acd);
break;
case 13:
if(datasource.dmuyt_yc==1)
{
putheado(10);
if(course!=20)pdo(0x80|acd,0);
else pdo(0x80,0);
pdo(dlmyadd,1);//address
pdo(5,1);
pdo(1,1);
pdo(course,1);
pdo(dlmyadd,1);//address
pdo(0,1);//0x168=360
pdo(0,1);
pdo((peekb(hardwareset[0].address,0x300)&0xff),1);
pdo(0,1);
pdo(sum,2);
pdo(0x16,2);
}
else if(datasource.dmuyt_yc==2)
{
putheado(12);
if(course!=20)pdo(0x80|acd,0);
else pdo(0x80,0);
pdo(dlmyadd,1);//address
pdo(5,1);
pdo(2,1);
pdo(course,1);
pdo(dlmyadd,1);//address
pdo(0,1);//0x168=360
pdo(0,1);
pdo((peekb(hardwareset[0].address,0x300)&0xff),1);
pdo(0,1);
pdo((peekb(hardwareset[0].address,0x302)&0xff),1);
pdo(0,1);
pdo(sum,2);
pdo(0x16,2);
}
else send_no_data(acd);
break;
case 14:
if(course!=20)
send_no_data(acd);
break;
case 15:
if(course!=20)
send_no_data(acd);
break;
case 16:
if(course!=20)
send_no_data(acd);
break;
default:
send_no_data(acd);
break;
}
}
void C101::putheado(unsigned int len)
{
save_start=oque.start;
save_count=(len&0xff+6);
pdo(0x68,2);
pdo(len&0xff,2);
pdo(len&0xff,2);
pdo(0x68,2);
}
void C101::res_time()
{
time_t t;
struct tm *gmt, *area;
unsigned int temp;
// putenv(tzstr);
tzset();
t = time(NULL);
gmt = gmtime(&t);
set_timesyn();
putheado(15);
pdo(0x80,0);
pdo(dlmyadd,1);//address
pdo(103,1);//biaozhi
pdo(1,1);//num
pdo(7,1);
pdo(dlmyadd,1);
pdo(0,1);//addl
pdo(0,1);//add h
temp=(*gmt).tm_sec; temp*=1000;
temp+=500;///add for delay;
pdo(temp&0xff,1); temp>>=8;
pdo(temp&0xff,1); //misecond.
pdo((*gmt).tm_min,1); //min
pdo((*gmt).tm_hour,1);
temp=(*gmt).tm_wday+1; temp<<=5;
temp+=(*gmt).tm_mday;
pdo(temp&0xff,1);
pdo((*gmt).tm_mon+1,1);
pdo((*gmt).tm_year-100,1);
pdo(sum,2);
pdo(0x16,2);
}//void::
void C101::putdi(unsigned int data)
{
ique.buf[ique.next++]=data&0xff;
if(ique.next>=ique.size)
ique.next=0;
ique.count++;
if(ique.count>ique.size)
{
ique.count=ique.size;
ique.start++;
if(ique.start>=ique.size)
ique.start=0;
}//if(ique.count>ique.size)
}//void
unsigned int C101::qmod(unsigned int par1,unsigned int par2)
{
if(par1>=par2)return(par1-(par1/par2)*par2);
else return(par1);
}//unsigned int
void C101::re_send()
{
oque.count=save_count;
oque.start=save_start;
}//unsigned int
void C101::res_ym(unsigned int grp)
{
int ymg,modm,i;
unsigned int temp;
unsigned long test;
ymg=datasource.total_ym/32;
modm=datasource.total_ym-ymg*32;
if(soe_ctl[nportno].count!=0)
acd=0x20;
else
acd=0;
switch(grp)
{
case 1:
if(ymg>=1)
{
putheado(230);
pdo(0x80|acd,0);
pdo(dlmyadd,1);//address
pdo(15,1);
pdo(32,1);
pdo(38,1);
pdo(dlmyadd,1);//address
for(i=0;i<32;i++)
{
temp=i+0xc01;
pdo(temp&0xff,1);
pdo(temp>>8,1);
test=ym_info.ym_value[i];
pdo(test&0xff,1);
pdo((test>>8)&0xff,1);
pdo((test>>16)&0xff,1);
pdo((test>>24),1);
pdo(0,1);
}//for(i=0;i<240;i++)
pdo(sum,2);
pdo(0x16,2);
}//if(yxg>=1)
else if(modm>0)
{
putheado(modm+6);
pdo(0x80|acd,0);
pdo(dlmyadd,1);//address
pdo(15,1);
pdo(modm,1);
pdo(38,1);
pdo(dlmyadd,1);//address
for(i=0;i<modm;i++)
{
temp=i+0xc01;
pdo(temp&0xff,1);
pdo(temp>>8,1);
test=ym_info.ym_value[i];
pdo(test&0xff,1);
pdo((test>>8)&0xff,1);
pdo((test>>16)&0xff,1);
pdo((test>>24),1);
pdo(0,1);
}//for(i=0;i<modxf;i++)
pdo(sum,2);
pdo(0x16,2);
}
else send_no_data(acd);
break;
case 2:
if(ymg>=2)
{
putheado(230);
pdo(0x80|acd,0);
pdo(dlmyadd,1);//address
pdo(15,1);
pdo(32,1);
pdo(39,1);
pdo(dlmyadd,1);//address
for(i=32;i<64;i++)
{
temp=i+0xc01;
pdo(temp&0xff,1);
pdo(temp>>8,1);
test=ym_info.ym_value[i];
pdo(test&0xff,1);
pdo((test>>8)&0xff,1);
pdo((test>>16)&0xff,1);
pdo((test>>24),1);
pdo(0,1);
}//for(i=0;i<240;i++)
pdo(sum,2);
pdo(0x16,2);
}//if(yxg>=1)
else if((ymg==1)&&(modm>0))
{
putheado(modm+6);
pdo(0x80|acd,0);
pdo(dlmyadd,1);//address
pdo(15,1);
pdo(modm,1);
pdo(39,1);
pdo(dlmyadd,1);//address
for(i=32;i<32+modm;i++)
{
temp=i+0xc01;
pdo(temp&0xff,1);
pdo(temp>>8,1);
test=ym_info.ym_value[i];
pdo(test&0xff,1);
pdo((test>>8)&0xff,1);
pdo((test>>16)&0xff,1);
pdo((test>>24),1);
pdo(0,1);
}//for(i=0;i<modxf;i++)
pdo(sum,2);
pdo(0x16,2);
}
else send_no_data(acd);
break;
case 3:
if(ymg>=3)
{
putheado(230);
pdo(0x80|acd,0);
pdo(dlmyadd,1);//address
pdo(15,1);
pdo(32,1);
pdo(40,1);
pdo(dlmyadd,1);//address
for(i=64;i<96;i++)
{
temp=i+0xc01;
pdo(temp&0xff,1);
pdo(temp>>8,1);
test=ym_info.ym_value[i];
pdo(test&0xff,1);
pdo((test>>8)&0xff,1);
pdo((test>>16)&0xff,1);
pdo((test>>24),1);
pdo(0,1);
}//for(i=0;i<240;i++)
pdo(sum,2);
pdo(0x16,2);
}//if(yxg>=1)
else if((ymg==2)&&(modm>0))
{
putheado(modm+6);
pdo(0x80|acd,0);
pdo(dlmyadd,1);//address
pdo(15,1);
pdo(modm,1);
pdo(40,1);
pdo(dlmyadd,1);//address
for(i=64;i<64+modm;i++)
{
temp=i+0xc01;
pdo(temp&0xff,1);
pdo(temp>>8,1);
test=ym_info.ym_value[i];
pdo(test&0xff,1);
pdo((test>>8)&0xff,1);
pdo((test>>16)&0xff,1);
pdo((test>>24),1);
pdo(0,1);
}//for(i=0;i<modxf;i++)
pdo(sum,2);
pdo(0x16,2);
}
else send_no_data(acd);
break;
case 4:
if(ymg==4)
{
putheado(230);
pdo(0x80|acd,0);
pdo(dlmyadd,1);//address
pdo(15,1);
pdo(32,1);
pdo(41,1);
pdo(dlmyadd,1);//address
for(i=96;i<128;i++)
{
temp=i+0xc01;
pdo(temp&0xff,1);
pdo(temp>>8,1);
test=ym_info.ym_value[i];
pdo(test&0xff,1);
pdo((test>>8)&0xff,1);
pdo((test>>16)&0xff,1);
pdo((test>>24),1);
pdo(0,1);
}//for(i=0;i<240;i++)
pdo(sum,2);
pdo(0x16,2);
}//if(yxg>=1)
else if((ymg==3)&&(modm>0))
{
putheado(modm+6);
pdo(0x80|acd,0);
pdo(dlmyadd,1);//address
pdo(15,1);
pdo(modm,1);
pdo(41,1);
pdo(dlmyadd,1);//address
for(i=96;i<96+modm;i++)
{
temp=i+0xc01;
pdo(temp&0xff,1);
pdo(temp>>8,1);
test=ym_info.ym_value[i];
pdo(test&0xff,1);
pdo((test>>8)&0xff,1);
pdo((test>>16)&0xff,1);
pdo((test>>24),1);
pdo(0,1);
}//for(i=0;i<modxf;i++)
pdo(sum,2);
pdo(0x16,2);
}
else send_no_data(acd);
break;
default:
send_no_data(acd);
break;
}//switch
}//unsigned int
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -