#include <stdio.h>
#include <string.h>
#include "libtcc1.c"
#include "time.h"
#define BUF_LEN 1
#define LINE 15
int p;
int edt1,edt2,edt3;
char execDir[255];
void Trans();
long int filesize( FILE *fp )
{
long int save_pos, size_of_file;
save_pos = ftell( fp );
fseek( fp, 0L, SEEK_END );
size_of_file = ftell( fp );
fseek( fp, save_pos, SEEK_SET );
return( size_of_file );
}
void Upper_chars(char *buffer)
{
unsigned int c;
for (c=0; c <= strlen(buffer)-1; c++)
*(buffer+c)=toupper( *(buffer+c) );
}
void OpenFileClick(void *sender)
{
char s[200];
GetFileName(s,200,"*.*");
if(strlen(s)>0)
SetProperty(edt1,"text",s);
}
void OpenFileClick1(void *sender)
{
char s[200];
GetFileName(s,200,"*.txt|*.txt");
if(strlen(s)>0)
SetProperty(edt2,"text",s);
}
void CloseClick(void *Sender)
{
//ClearOutputWin(); //清除输出窗口内容
//HideVclWin();
//CloseVclWin();
CloseForm(p);//
}
void ViewC()
{
char s[200],s1[200];
GetProperty(edt2,"text",s,200);
sprintf(s1,"notepad.exe %s",s);
WinExec(s1);
}
void CreateGui()
{
CloseCodeWin();
ClearVclControls();
ClearOutputWin();
int GuiMode=0;
if((GuiMode==0)||(GuiMode==1))
p=GetGuiWin(GuiMode);
else
p=CreateComponentEx(0,"form","caption","安控系统辅助工具","Width",570,"height",150,"BorderIcons","[biSystemMenu]","position","poMainFormCenter","formstyle","fsstayontop", "visible",1,NULL);//创建form;borderIcons:[biSystemMenu,biMinimize,biMaximize]
int pnl =p;
int txt2= CreateComponentEx(pnl,"label","caption"," 文件名称:","left",10,"top",40-20,"width",90,NULL);
edt1= CreateComponentEx(pnl,"edit", "text","c:\\boot.ini","left",105,"top",38-20,"width",145,NULL);
int txt3= CreateComponentEx(pnl,"label","caption"," 文件名称:","left",10,"top",68-20,"width",90,NULL);
edt2= CreateComponentEx(pnl,"edit", "text","c:\\tmp.txt","left",105,"top",65-20,"width",145,NULL);
int btn1= CreateComponentEx(pnl,"button","caption","...","left",265,"top",36-20,"width",65,"onclick",OpenFileClick,NULL);
int btn2= CreateComponentEx(pnl,"button","caption","...","left",265,"top",63-20,"width",65,"onclick",OpenFileClick1,NULL);
int btn3= CreateComponentEx(pnl,"button","caption","测 试" ,"left",15,"top",93+28-40,"width",80,"height",160,"onclick",Trans,NULL);
int btn4= CreateComponentEx(pnl,"button","caption","查看文件","left",105,"top",93+28-40,"width",80,"height",160,"onclick",ViewC,NULL);
int btn5= CreateComponentEx(pnl,"button","caption","退 出" ,"left",195,"top",93+28-40,"width",80,"height",160,"onclick",CloseClick,NULL);
}
void main()
{
CreateGui();
ShowOutputWin(-1);
AutoSetVclWinSize();
}
int devQDZY=0; //{占用}
int devQDCTZY=9;//{车头占用
int devQDSB=2;// {锁闭,故障锁闭}
int devQDKX = 1; // {区段空闲}
int devDCDW = 1; //道岔定位}
int devDCFW = 2; //道岔反位}
int devDCJC = 0; //挤岔}
int devDCBX = 5; //状态标志:道岔不显}
int devDCDSDW = 6; //单锁定位:1+5}
int devDCDSFW = 7; //单锁反位:2+5}
int devDCDWSB = 11; //道岔定位锁闭:1+10}
int devDCFWSB = 12; //反位锁闭:2+10}
int devDCDWZY = 13; //道岔定位站用:1+12}
int devDCFWZY = 14; //反位站用:2+12}
int devDCDS = 21; //控单锁}
int devDCQXDS = 22; //取消单锁}
int devDCStop = 25;
double LDLength[500];
//路段
int ld_count = 0;
typedef struct
{
int id;
int strx, stry;
int endx, endy;
int qdh;
char ntype;
int nbh;
int state;
int speedlimit;
double ldlength;
} LD;
LD _ld[500];
static int dc_count = 50;
typedef struct
{
//int lbldraw; //0:不绘制标签 1:绘制标签
int xgy, ygy;
int xdw, ydw;
int xfw, yfw;
int lblX, lblY; //标签坐标
int qdh;
int gyld,dwld,fwld;
int state;
double dclength;
} DC;
static DC _dc[100];
static int qd_count = 100;
#define MAXDCINQD 5 //每个区段中最多的道岔数+1 //bhj
#define MAXFIXEDLENNUM 17 //每个区段中道岔组合情况,=2的(MAXDCINQD-1)次方+1 //bhj
typedef struct
{
int state; //0:红灯 1:路灯 2:灰灯
char yc;
int firstLd;
int fwdch;
int fwFirstLd;
int x0,y0,x1,y1;
int direction;
double qdlenth;
double fixedLen[MAXFIXEDLENNUM];//bhj
int dcList[MAXDCINQD]; //bhj
} QD;
QD _qd[200];
//信号机
static float PI = 3.1415926;
static int xhj_count = 0;
typedef struct
{
int state; //0:红灯 1:路灯 2:灰灯
int lbldraw; //0:不绘制标签 1:绘制标签
int x0, y0;
int x1, y1;
int x2, y2;
int lblX, lblY; //标签坐标
char lbl[100]; //标签
char is3x;
int xhjlinkqd;
char direction;
} XHJ;
static XHJ _xhj[200];
int GetQdDcCount(int qdh)
{
int idx=0;
while(_qd[qdh].dcList[idx]!=-1) idx++;
return idx;
}
//加载站场数据文件
static void LoadStationData()
{
int i,j;
int tmpint;
FILE *fp;
int speedlimit;
int temp1;
int temp2;
FILE *ldfp;
int ldflag;
//图形文件名
char filename[255];// = "/infoplat/akdata.dat";
sprintf(filename,"%s\\Dat\\akdata.dat",execDir);
printf("%s",filename);
char filename1[255];// = "/infoplat/akdata.dat";
sprintf(filename1,"%s\\Dat\\ldrecord.dat",execDir);
printf("%s",filename1);
if ( -1 == access(filename1,0))
{
ldflag = 0;
}
else
{
ldflag = 1;
ldfp = fopen(filename1,"r");
}
/**/
if (fp = fopen(filename, "rb"))
{
//开始读取文件
fread(&ld_count,sizeof(ld_count),1,fp);
printf("ld_count:%d",ld_count);
for (i=0; i<ld_count; i++)
{
_ld[i].id=i; //路段id
fread(&_ld[i].qdh,sizeof(_ld[i].qdh),1,fp);
_ld[i].qdh--;
fread(&_ld[i].strx,sizeof(_ld[i].strx),1,fp);
fread(&_ld[i].stry,sizeof(_ld[i].stry),1,fp);
fread(&_ld[i].endx,sizeof(_ld[i].endx),1,fp);
fread(&_ld[i].endy,sizeof(_ld[i].endy),1,fp);
fread(&_ld[i].ntype,sizeof(_ld[i].ntype),1,fp);
fread(&_ld[i].nbh,sizeof(_ld[i].nbh),1,fp);
_ld[i].nbh--;
fread(&temp1,sizeof(int),1,fp);
fread(&temp2,sizeof(int),1,fp);
_ld[i].ldlength = temp1+(double)temp2/100;
// fread(&_ld[i].ldlength,sizeof(_ld[i].ldlength),1,fp);
if ( _ld[i].ldlength < 0.1)
{
_ld[i].ldlength = 200;
}
_ld[i].state = devQDKX;
// //路段的设置
// if (ldflag == 0)
// {
// LDLength[i] = _ld[i].ldlength;
//
// }
// else
// {
//
// fread(&_ld[i].ldlength,sizeof(_ld[i].ldlength),1,ldfp);
//
// LDLength[i] = _ld[i].ldlength;
//
// }
}
// for(i=0;i<285;i++) //模拟路段限速值
// {
//
// _ld[i].speedlimit=50;
// _ld[++i].speedlimit=60;
// _ld[++i].speedlimit=70;
//
//
// }
//开始读取文件
fread(&xhj_count,sizeof(xhj_count),1,fp);
for (i=0; i<xhj_count; i++)
{
fread(&_xhj[i].x0,sizeof(_xhj[i].x0),1,fp);
fread(&_xhj[i].y0,sizeof(_xhj[i].y0),1,fp);
fread(&_xhj[i].x1,sizeof(_xhj[i].x1),1,fp);
fread(&_xhj[i].y1,sizeof(_xhj[i].y1),1,fp);
- 1
- 2
前往页