Require Software for carbon potential controller

V

Thread Starter

vipul patel

We are loking for ASCII base software for run below program in PC with connect the Carbon Potential Controller, it has RS 485 Com..

#include <dos.h>

#define COM1 0x3f8
#define COM2 0x2f8
#define COM3 0x3e8
#define COM4 0x2e8
#define STX 0x02
#define ETX 0x03
#define EOT 0x04
#define ENQ 0x05
#define ACK 0x06
#define NAK 0x15
#define BH 0x30
#define BL 0x30
#define TIME_OUT 100000

void main(void)
{
int port,i, j,k, byte,table;
unsigned char PV_r[20] = {EOT,'0','','P','V',BH,BL,ENQ,0};
unsigned char NP_r[20] = {EOT,'0','0','N','P',BH,BL,ENQ,0};
unsigned char HC_r[20] = {EOT,'0','0','H','C',BH,BL,ENQ,0};
unsigned char TN_r[20] = {EOT,'0','0','T','N',BH,BL,ENQ,0};
unsigned char TM_r[20] = {EOT,'0','0','T','M',BH,BL,ENQ,0};
unsigned char TA_r[20] = {EOT,'0','0','T','A',BH,BL,ENQ,0};
unsigned char OT_r[20] = {EOT,'0','0','O','T',BH,BL,ENQ,0};
unsigned char AV_r[20] = {EOT,'0','0','A','V',BH,BL,ENQ,0};
unsigned char AO_r[20] = {EOT,'0','0','A','O',BH,BL,ENQ,0};
unsigned char ED_r[20] = {EOT,'0','0','E','D',BH,BL,ENQ,0};
unsigned char PH_r[20] = {EOT,'0','0','P','H',BH,BL,ENQ,0};
unsigned char T1_r[20] = {EOT,'0','0','T','1',BH,BL,ENQ,0};
unsigned char PO_r[20] = {EOT,'0','0','P','O',BH,BL,ENQ,0};
unsigned char PT_r[20] = {EOT,'0','0','P','T',BH,BL,ENQ,0};
unsigned char SV_r[20] = {EOT,'0','0','S','V',BH,BL,ENQ,0};
unsigned char CO_r[20] = {EOT,'0','0','C','O',BH,BL,ENQ,0};
unsigned char CC_r[20] = {EOT,'0','0','C','C',BH,BL,ENQ,0};
unsigned char TC_r[20] = {EOT,'0','0','T','C',BH,BL,ENQ,0};
unsigned char MC_r[20] = {EOT,'0','0','M','C',BH,BL,ENQ,0};
unsigned char KP_r[20] = {EOT,'0','0','K','P',BH,BL,ENQ,0};
unsigned char TI_r[20] = {EOT,'0','0','T','I',BH,BL,ENQ,0};
unsigned char TD_r[20] = {EOT,'0','0','T','D',BH,BL,ENQ,0};
unsigned char EV_r[20] = {EOT,'0','0','E','V',BH,BL,ENQ,0};
unsigned char AM_r[20] = {EOT,'0','0','A','M',BH,BL,ENQ,0};
unsigned char CM_r[20] = {EOT,'0','0','C','M',BH,BL,ENQ,0};
unsigned char SR_r[20] = {EOT,'0','0','S','R',BH,BL,ENQ,0};
unsigned char CD_r[20] = {EOT,'0','0','C','D',BH,BL,ENQ,0};

unsigned char SV_w[20] =
{STX,'0','0','S','V','0','5','5','.','0',BH,BL,ETX,0};
unsigned char CO_w[20] =
{STX,'0','0','C','O','3','1','.','1','0',BH,BL,ETX,0};
unsigned char CC_w[20] =
{STX,'0','0','C','C','0','.','0','0','0',BH,BL,ETX,0};
unsigned char TC_w[20] =
{STX,'0','0','T','C','0','0','0','0',BH,BL,ETX,0};
unsigned char HC_w[20] =
{STX,'0','0','H','C','0','0','0','0',BH,BL,ETX,0};
unsigned char TN_w[20] =
{STX,'0','0','T','N','0','4','0','0',BH,BL,ETX,0};
unsigned char TM_w[20] =
{STX,'0','0','T','M','0','4','5','0',BH,BL,ETX,0};
unsigned char TA_w[20] =
{STX,'0','0','T','A','0','4','8','0',BH,BL,ETX,0};
unsigned char AV_w[20] =
{STX,'0','0','A','V','1','.','1','8','0',BH,BL,ETX,0};
unsigned char MC_w[20] =
{STX,'0','0','M','C','0','0','0','0',BH,BL,ETX,0};
unsigned char KP_w[20] =
{STX,'0','0','K','P','0','5','0','0',BH,BL,ETX,0};
unsigned char TI_w[20] =
{STX,'0','0','T','I','0','2','2','2',BH,BL,ETX,0};
unsigned char TD_w[20] =
{STX,'0','0','T','D','0','3','3','3',BH,BL,ETX,0};
unsigned char EV_w[20] =
{STX,'0','0','E','V','0','3','0','.','0',BH,BL,ETX,0};
unsigned char AO_w[20] =
{STX,'0','0','A','O','0','0','4','0',BH,BL,ETX,0};
unsigned char AM_w[20] = {STX,'0','0','A','M','0',BH,BL,ETX,0};
unsigned char CM_w[20] = {STX,'0','0','C','M','1',BH,BL,ETX,0};
unsigned char SR_w[20] = {STX,'0','0','S','R','0',BH,BL,ETX,0};
unsigned char ED_w[20] = {STX,'0','0','E','D','1',BH,BL,ETX,0};

unsigned char receive[20];
port=COM1;

clrscr(); /* First, clear the screen. */
for (i=0; i<7; i++) j=inportb(port+i); /* Read all registers once */
/* in order to clean them. */
outportb(port+3,0x80); /* Begin to initialize port 1. */
/* Set DLAB = 1, so the desired */
/* baud rate can be programmed. */
/*outportb(port+0,0x60); /* Write the divisor to register */
outportb(port+1,0x00);*/ /* hex 0060 = 1200 baud. */
outportb(port+0,0x0c); /* Write the divisor to register */
outportb(port+1,0x00); /* hex 000c = 9600 baud. */
/*outportb(port+3,0x1b);*/ /* Set byte length =8 bits, stop
*/
/* bits =1, even parity, DLAB =0 */
outportb(port+3,0x03); /* Set byte length =8 bits, stop */
/* bits =1, no parity, DLAB =0 */

for(k=0;k<20;k++)
{
receive[k]=0;
}
PV_r[2]='0';
if(transmit(port,PV_r,receive)==0)
{
i=strlen(receive);
receive=0x00;
printf("%s\n",receive);
}
i=inportb(port+5);
}

int send(int n,unsigned char sc[40],int com_adr)
{
int is,m;long js;
outportb(com_adr+7,0x01);
for (is=0;is<n;is++)
{
js=0;
do
{
js++;
if(js>TIME_OUT)
return(1);
}while((inportb(com_adr+5)&32)==0);
m=inportb(com_adr);
outportb(com_adr,sc[is]);
}
return(0);
}

int receiv(int com_adr,unsigned char rc[15])
{
int ir,im;long jr;
outportb(com_adr+7,0x02);
while ((inportb(com_adr+5)&32)==0); /* Wait until the transmitter*/
ir=inportb(com_adr+5); /* buffer is empty. */
for(ir=0;ir<15;ir++)
{
if(ir>13)
return(1);
jr=0;
do
{
jr++;
if(jr>TIME_OUT)
return(1);
}while((inportb(com_adr+5) & 0x01) == 0);
rc[ir]=inportb(com_adr);
if(rc[ir]==ENQ||rc[ir]==ACK||rc[ir]==NAK)
{
break;
}
}
rc[ir+1]=0x00;
return(0);
}
int transmit(int com_adr,unsigned char command[15],unsigned char
replay[15])
{
int it,nt,s_err,r_err;
unsigned char bcc[12],ro2,ro1;

nt=strlen(command);
ro1=eots(nt,command);
ro2=ro1&0x0f;
ro1=ro1>>4;
command[nt-3]=ro1+0x30;
command[nt-2]=ro2+0x30;
s_err=0;r_err=0;
for(it=0;it<3;it++)
{
s_err=0;
if(send(nt,command,com_adr) == 0 )
{
s_err=1;
r_err=0;
if(receiv(com_adr,replay) == 0)
{
r_err=1;
break;
}
}
}
if(r_err==0)
{
printf("receive error\n");
return(1);
}
if(s_err==0)
{
printf("send error\n");
return(1);
}
return(0);
}
int eots(int n, unsigned char ec[])
{
int ie,eo;
eo=ec[1];
for(ie=2;ie<n-3;ie++)
eo^=ec[ie];
return(eo);
}
 
Top