?? zlg85c30init.c
字號:
#include "vxWorks.h"
#include "tyLib.h"
#include "logLib.h"
#include "Zlg85C30.h"
#include "stdio.h"
LOCAL void UsrPortParamsInit(void);
extern int ComIntInit(int iPortNo,int dataport,unsigned long lBautrate,unsigned char intLevel);
struct PortSetTable portconfig[ComMaxUnit];
LOCAL int testPortMaxUnit=ComMaxUnit;
LOCAL int UsrPortTestRun=0;
LOCAL int RecvTaskId;
int UsrPortTestMode=0;
//struct SysCmdFormat_T usrPortParams[ComMaxUnit];
void UsrPortConfigInitDefault(void)
{
/*
char portName[10];
int unit;
int commandport;
int dataport;
int sync_async; *==0:async; 1:sync ==*
int baudRate;
int clockType; *==0:DPLL; 1:Iclock; 2:Oclock ==*
int stopBit;
int dataBit;
int checktype; *==0:None; 1:ODD; 2:EVEN ==*
int intLevel;
int intNum;
int RevByteNum;
int SendByteNum;
*/
int ifor1=0;
//usrPortParams=(unsigned char *)malloc(sizeof(struct SysCmdFormat_T)*ComMaxUnit);
for(ifor1=0;ifor1<ComMaxUnit;ifor1++)
{
if((ifor1+1)<10)
sprintf(portconfig[ifor1].portName,"com0%d",ifor1+1);
else
sprintf(portconfig[ifor1].portName,"com%d",ifor1+1);
portconfig[ifor1].unit=ifor1;
portconfig[ifor1].open=0;
portconfig[ifor1].sync_async=-1;
portconfig[ifor1].baudRate=9600;
portconfig[ifor1].clockType=1;
portconfig[ifor1].stopBit=1;
portconfig[ifor1].dataBit=8;
portconfig[ifor1].checktype=0;
portconfig[ifor1].flag=(Flag_Send_Enable | Flag_Rcev_Enable);
portconfig[ifor1].intNum=0;
portconfig[ifor1].RevByteNum=0;
portconfig[ifor1].SendByteNum=0;
portconfig[ifor1].RevFrameNum=0;
portconfig[ifor1].SendFrameNum=0;
portconfig[ifor1].RevFrameErrorNum=0;
// portconfig[ifor1].pintVectorStatic=0;
}
portconfig[0].commandport=com1_commandport;
portconfig[1].commandport=com2_commandport;
portconfig[2].commandport=com3_commandport;
portconfig[3].commandport=com4_commandport;
portconfig[4].commandport=com5_commandport;
portconfig[5].commandport=com6_commandport;
portconfig[6].commandport=com7_commandport;
portconfig[7].commandport=com8_commandport;
portconfig[8].commandport=com9_commandport;
portconfig[9].commandport=com10_commandport;
portconfig[10].commandport=com11_commandport;
portconfig[11].commandport=com12_commandport;
portconfig[0].dataport=com1_dataport;
portconfig[1].dataport=com2_dataport;
portconfig[2].dataport=com3_dataport;
portconfig[3].dataport=com4_dataport;
portconfig[4].dataport=com5_dataport;
portconfig[5].dataport=com6_dataport;
portconfig[6].dataport=com7_dataport;
portconfig[7].dataport=com8_dataport;
portconfig[8].dataport=com9_dataport;
portconfig[9].dataport=com10_dataport;
portconfig[10].dataport=com11_dataport;
portconfig[11].dataport=com12_dataport;
portconfig[12].dataport=com13_dataport;
portconfig[13].dataport=com14_dataport;
portconfig[0].intLevel=5;
portconfig[1].intLevel=5;
portconfig[2].intLevel=7;
portconfig[3].intLevel=7;
portconfig[4].intLevel=9;
portconfig[5].intLevel=9;
portconfig[6].intLevel=10;
portconfig[7].intLevel=10;
portconfig[8].intLevel=11;
portconfig[9].intLevel=11;
portconfig[10].intLevel=6;
portconfig[11].intLevel=6;
portconfig[12].intLevel=4;
portconfig[13].intLevel=3;
}
/*void ComChanInit(void)
{
int iPortNo=0;
for(iPortNo=0;iPortNo<ComMaxUnit;iPortNo++)
{
dataAddr[iPortNo]=portconfig[iPortNo].dataport;
commandAddr[iPortNo]=portconfig[iPortNo].commandport;
}
}*/
void UsrPortShow(void)
{
int ifor1=0;
char str[][10]={"index", "s/a", "Clk", "bps", "int", /*"intNum", */"RBNum", "SBNum", "F","RFrame","SFrame","CRCErro"};
printf("%s %-3s %-3s %-6s %-3s %-8s %-8s %-2s %-8s %-8s %s\n",str[0],str[1],str[2],str[3],str[4],str[5],str[6],str[7],str[8],str[9],str[10]/*,str[11]*/);
for(ifor1=0;ifor1<ComMaxUnit;ifor1++)
{
printf("%s",portconfig[ifor1].portName);
printf(" %-3d",portconfig[ifor1].sync_async);
printf(" %-3d",portconfig[ifor1].clockType);
printf(" %-6d",portconfig[ifor1].baudRate);
printf(" %-3d",portconfig[ifor1].intLevel);
//printf(" %-6d",portconfig[ifor1].intNum);
printf(" %-8d",portconfig[ifor1].RevByteNum);
printf(" %-8d",portconfig[ifor1].SendByteNum);
printf(" %-2d",portsending[ifor1]);
printf(" %-8d",portconfig[ifor1].RevFrameNum);
printf(" %-8d",portconfig[ifor1].SendFrameNum);
printf(" %-8d\n",portconfig[ifor1].RevFrameErrorNum);
}
}
/*
void UsrPortIntShow(int iPortNo)
{
int ifor1=0;
if(iPortNo>ComMaxUnit)return;
printf("[UsrPort Debug] %dcom Store Intrrupt Vector Static %d:\n",iPortNo,portconfig[iPortNo].pintVectorStatic);
for(ifor1=0;ifor1<portconfig[iPortNo].pintVectorStatic;ifor1++)
printf("%3X",portconfig[iPortNo].intVectorStatic[ifor1]);
printf("\n");
}
void UsrPortIntClear(int iPortNo)
{
if(iPortNo>ComMaxUnit)return;
portconfig[iPortNo].pintVectorStatic=0;
}
void UsrPortIntDebug(int iPortNo)
{
int ifor1=0;
for(ifor1=0;ifor1<3;)
{
if(comwrite(iPortNo,"1234567890",10)==10)ifor1++;
}
taskDelay(10);
UsrPortIntShow(iPortNo);
/ *UsrPortIntClear(iPortNo);* /
}*/
/********************************************
*
*
*
*********************************************/
LOCAL void UsrPortLoadConfigFile(int filestordev)
{
// memset(usrPortParams,0,sizeof(usrPortParams));
if(filestordev>=0)
{
sys_readsysini(filestordev,"portconfig.txt");
}
UsrPortParamsInit();
}
/********************************************
*
struct PortSetTable
{
char portName[10];
int unit;
int commandport;
int dataport;
int sync_async;//0:async; 1:sync
//int dltype;
unsigned long baudRate;
int clockType; //0:DPLL; 1:Iclock; 2:Oclock;
int stopBit;
int dataBit;
int checktype; //0:None; 1:ODD; 2:EVEN
unsigned char intLevel;
unsigned int intNum;
unsigned int RevByteNum;
unsigned int RevFrameNum;
unsigned int SendByteNum;
unsigned int SendFrameNum;
unsigned int RevFrameErrorNum;
int open;
unsigned char intVectorStatic[ComMaxData];
unsigned int pintVectorStatic;
};
*/
LOCAL void UsrPortParamsInit(void)
{
int ifor2=0;
int iPortNo=-1;
struct SysParams_Table *temp;
temp=sysParamsTable;
while (temp!=NULL)
{
if(strlen(temp->cmd.Cmdname)<4) goto Jump;
if(strncmp(temp->cmd.Cmdname,"COM",3)!=0) goto Jump;
iPortNo=atoi(&temp->cmd.Cmdname[3])-1;
if(iPortNo<0) goto Jump;
if(iPortNo>=ComMaxUnit) goto Jump;
for(ifor2=0;ifor2<Max_SysParams_Para_Unit;ifor2++)
{
if(strlen(temp->cmd.Para[ifor2].ParaName)<=0)break;
if(strcmp(temp->cmd.Para[ifor2].ParaName,"mode")==0)
{
if(strcmp(temp->cmd.Para[ifor2].ParaValue,"sync")==0)
portconfig[iPortNo].sync_async=1;
else portconfig[iPortNo].sync_async=0;
}
else if(strcmp(temp->cmd.Para[ifor2].ParaName,"clocktype")==0)
{
if(strcmp(temp->cmd.Para[ifor2].ParaValue,"i")==0)
portconfig[iPortNo].clockType=1;
else if(strcmp(temp->cmd.Para[ifor2].ParaValue,"o")==0)
portconfig[iPortNo].clockType=2;
else
portconfig[iPortNo].clockType=0;
}
else if(strcmp(temp->cmd.Para[ifor2].ParaName,"baudrate")==0)
{
portconfig[iPortNo].baudRate=atoi(temp->cmd.Para[ifor2].ParaValue);
}
/*else if(strcmp(usrPortParams[ifor1].Para[ifor2].ParaName,"protocol")==0)
{}
else if(strcmp(usrPortParams[ifor1].Para[ifor2].ParaName,"adfTB")==0)
{}
else if(strcmp(usrPortParams[ifor1].Para[ifor2].ParaName,"adfSB")==0)
{}*/
}
Jump:
temp=temp->next;
}
}
/*************************************************************
*
*
*
*/
void UsrPortInitial(void)
{
int ifor1;
printf("Zlg85C30 Port Initial :");
UsrPortConfigInitDefault();
/****************************** Add read inifile to set parames */
UsrPortLoadConfigFile(1);
/********* Open Zlg85C30 Serial Port *************/
for(ifor1=0;ifor1<ComMaxUnit-2;ifor1++)
{
if(portconfig[ifor1].sync_async==-1)continue;
if(portconfig[ifor1].open==1)continue;
if(!(ifor1%2))
{
printf("hardreset port=%d %d\n",ifor1,ifor1+1);
sysOutByte(portconfig[ifor1+1].commandport,0x09);
sysOutByte(portconfig[ifor1+1].commandport,0xc0);
}
if(portconfig[ifor1].sync_async==1)
com_syncInitial(ifor1,portconfig[ifor1].commandport,portconfig[ifor1].dataport
,portconfig[ifor1].baudRate,portconfig[ifor1].clockType);
else
com_asyncInitial(ifor1,portconfig[ifor1].commandport,portconfig[ifor1].dataport
,portconfig[ifor1].baudRate);
if(ifor1%2)
{
if(com_intConnect(ifor1,portconfig[ifor1].intLevel)==ERROR)
{
printf("intConnect %d error!!!!!!!!!!!!!!!!!!!\n",portconfig[ifor1].intLevel);
continue;
}
}
portconfig[ifor1].open=1;
}
if(portconfig[ifor1].sync_async!=-1)
{
ComIntInit(ifor1,portconfig[ifor1].dataport,portconfig[ifor1].baudRate,portconfig[ifor1].intLevel);
portconfig[ifor1].open=1;
}
ifor1++;
if(portconfig[ifor1].sync_async!=-1)
{
ComIntInit(ifor1,portconfig[ifor1].dataport,portconfig[ifor1].baudRate,portconfig[ifor1].intLevel);
portconfig[ifor1].open=1;
}
taskDelay(3000);
}
/**********************************************************
*
*
*
***********************************************************/
void UsrPortTestTask(int type)
{
int ifor1=0,ifor2=0;
unsigned char buf[1000];
int buflen=0;
char *sbuf="oooooooooKoooooooooKoooooooooKoooooooooKoooooooooKoooooooooKoooooooooKoooooooooKoooooooooKoooooooK\n";
unsigned int n=0;
FOREVER
{
for(ifor1=0;ifor1<testPortMaxUnit;ifor1++)
{
if(portconfig[ifor1].sync_async==-1)continue;
if(portconfig[ifor1].open==0)continue;
memset(buf,0,sizeof(buf));
buflen=comread(ifor1,buf,1000,NO_WAIT);
//if(ifor1==0)printf("%s",buf);
if(!UsrPortTestRun)continue;
if(type==1)
{
comwrite(ifor1,sbuf,strlen(sbuf));
}
else
{
if(buflen>0)
{
if(comwrite(ifor1,buf,buflen)!=buflen)printf("flow!\n");
}
}
}
if(n%3)
taskDelay(500);
n++;
}
}
STATUS UsrPortTest(int type,int num)
{
if(num==0)num=ComMaxUnit;
if(num>ComMaxUnit||num<1)
{
printf("num need in<1 -- 10>\n");
return ERROR;
}
testPortMaxUnit=num;
UsrPortTestRun=1;
UsrPortTestMode=type;
/*test_port(6);*/
if((RecvTaskId=taskSpawn("portTest",200,0,60000,(FUNCPTR)UsrPortTestTask,UsrPortTestMode,0,0,0,0,0,0,0,0,0))==ERROR)
{
UsrPortTestRun=0;
printf("portTest task cannot be create.");
return ERROR;
}
return OK;
}
void UsrPortStop(void)
{
UsrPortTestRun=0;
}
void UsrPortRun(void)
{
UsrPortTestRun=1;
}
void test_port(unsigned int d)
{
sysOutByte(0x2d0,0xc);
sysOutByte(0x2d0,d);
sysOutByte(0x2d0,0xc);
printf("WR12= %d\n",sysInByte(0x2d0));
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -