|
//---------------------------------------------------------------------------------------//
//函数功能:继电器控制
//参数说明:
// comport ——串口号 ;
// cardID ——板卡号;
// chanelNum ——欲控制的继电器的个数;
// ctrldata ——继电器状态设定。直接写入继电器号1-16,表示继电器选择常开触点;
// 继电器号加16即17-32,表示继电器选择常闭触点;
//使用指导:
// eg.要打开第1个继电器,关闭第2个继电器;串口为1;板卡号1;
// ......
// comport=1;
// cardID=1;
// chanelNum=2;
// strcpy(ctrldata,"\1\x12");
// Relay(comport,cardID,chanelNum,ctrldata);
//版本:V1.0
//日期:2005年12月27日
//-------------------------------------------------------------------
void Relay(int comport,int cardID,int chanelNum,char ctrldata[17])
{
static int num;
short int i=0;
unsigned char senddata[4],senddata1[20],senddata2[20],senddata3[5];
//标示字
senddata[0]=0xaa;
senddata[1]=0x55;
//板卡号
senddata[2]=cardID+32;
OpenComConfig (comport, "",9600,3, 8, 2, 1000, 1000);
FlushOutQ(comport);
ComWrt(comport,senddata,3);
while(1)
{
num=GetOutQLen(comport);
if(num==0)
break;
}
CloseCom(comport);
//通道个数
senddata1[0]=chanelNum;
//控制继电器状态
strcpy(senddata1+1,ctrldata);
senddata1[chanelNum+1]=cardID+chanelNum+32;
OpenComConfig (comport, "",9600,4, 8, 2, 1000, 1000);
FlushOutQ(comport);
ComWrt(comport,senddata1,chanelNum+2);
while(1)
{
num=GetOutQLen(comport);
if(num==0)
break;
}
CloseCom(comport);
} |
|