📄 maindlg1011.cpp
字号:
*/
load_mac_para(FILE *fpe)
{
int ret,order,value,i;
int step,len;
ret = 0;
step = 0;
while (ret == 0){
ret = get_a_line(fpe);
if ((buf[0] == 'I')&&(step == 0)){
get_a_line(fpe);
board_no = atol(&(buf[0]));
step ++;
}
else if ((buf[0] == 'P')&&(step == 1)){
// test_dog();
get_a_line(fpe);
pulse_rate = atol(&(buf[0]));
step ++;
}
else if ((buf[0] == 'U')&&(step == 2)){
get_a_line(fpe);
interval = atol(&(buf[0]));
step ++;
}
else if ((buf[0] == 'X')&&(buf[1] == 'S')&&(step == 3)){
get_a_line(fpe);
xsteps = atol(&(buf[0]));
step ++;
}
else if ((buf[0] == 'Y')&&(buf[1] == 'S')&&(step == 4)){
get_a_line(fpe);
ysteps = atol(&(buf[0]));
step ++;
}
else if ((buf[0] == 'Z')&&(buf[1] == 'S')&&(step == 5)){
get_a_line(fpe);
zsteps = atol(&(buf[0]));
step ++;
}
else if ((buf[0] == 'm')||(buf[0] == 's')&&(step == 6)){
if (buf[0] == 'm')
danwei = MINUTES;
else
danwei = SECONDS;
step ++;
}
else if ((buf[0] == 'X')&&(buf[1] == 'M')&&(step == 7)){
get_a_line(fpe);
xmaxv2 = xmaxv = atol(&(buf[0]));
step ++;
}
else if ((buf[0] == 'Y')&&(buf[1] == 'M')&&(step == 8)){
get_a_line(fpe);
ymaxv2 = ymaxv = atol(&(buf[0]));
step ++;
}
else if ((buf[0] == 'Z')&&(buf[1] == 'M')&&(step == 9)){
get_a_line(fpe);
zmaxv2 = zmaxv = atol(&(buf[0]));
step ++;
}
else if ((buf[0] == 'X')&&(buf[1] == 'M')&&(step == 10)){
get_a_line(fpe);
xmaxa2 = xmaxa = atol(&(buf[0]));
step ++;
}
else if ((buf[0] == 'Y')&&(buf[1] == 'M')&&(step == 11)){
get_a_line(fpe);
ymaxa2 = ymaxa = atol(&(buf[0]));
step ++;
}
else if ((buf[0] == 'Z')&&(buf[1] == 'M')&&(step == 12)){
get_a_line(fpe);
zmaxa2 = zmaxa = atol(&(buf[0]));
step ++;
}
else if ((buf[0] == 'X')&&(step == 13)){
get_a_line(fpe);
xydspeed = atol(&(buf[0]));
step ++;
}
else if ((buf[0] == 'Z')&&(step == 14)){
get_a_line(fpe);
zdspeed = atol(&(buf[0]));
step ++;
}
else if ((buf[0] == 'M')&&(step == 15)){
get_a_line(fpe);
max_accu_arc = atof(&(buf[0]));
}
else if ((buf[0] == 'W')&&(step == 15)){
get_a_line(fpe);
order = atol(&(buf[0]));
get_a_line(fpe);
for (i=0;i<strlen(buf);i++)
if (buf[i] == 'X')
buf[i] = '0';
for (i=0;i<strlen(buf);i++)
buf[i] -= '0';
value = buf[0] * 32 + buf[1] * 16 + buf[2] * 8 + buf[3] * 4 +
buf[4] * 2 + buf[5];
wait[end_wait].order = order;
wait[end_wait++].value = value;
}
else if ((buf[0] == 'S')&&(step == 15)){
get_a_line(fpe);
order = atol(&(buf[0]));
get_a_line(fpe);
for (i=0;i<strlen(buf);i++)
if (buf[i] == 'X')
buf[i] = '0';
len = strlen(buf);
for (i=0;i<len;i++)
buf[i] -= '0';
value = buf[0] * 32 + buf[1] * 16 + buf[2] * 8 + buf[3] * 4 +
buf[4] * 2 + buf[5];
output[end_output].order = order;
output[end_output++].value = value;
}
else if ((buf[0] == 'X')&&(buf[1] == 'H')&&(step == 15)){
get_a_line(fpe);
xhl = atol(&(buf[0]));
step ++;
}
else if ((buf[0] == 'X')&&(buf[1] == 'L')&&(step == 16)){
get_a_line(fpe);
xll = atol(&(buf[0]));
step ++;
}
else if ((buf[0] == 'Y')&&(buf[1] == 'H')&&(step == 17)){
get_a_line(fpe);
yhl = atol(&(buf[0]));
step ++;
}
else if ((buf[0] == 'Y')&&(buf[1] == 'L')&&(step == 18)){
get_a_line(fpe);
yll = atol(&(buf[0]));
step ++;
}
else if ((buf[0] == 'Z')&&(buf[1] == 'H')&&(step == 19)){
get_a_line(fpe);
zhl = atol(&(buf[0]));
step ++;
}
else if ((buf[0] == 'Z')&&(buf[1] == 'L')&&(step == 20)){
get_a_line(fpe);
zll = atol(&(buf[0]));
step ++;
}
else if ((buf[0] == 'G')&&(buf[1] == 'o')&&(step == 21)){
get_a_line(fpe);
strcpy(go_home_str,buf);
step ++;
strcpy(command_str,"");
}
else if ((buf[0] == 'I')&&(buf[1] == 'n')&&(step == 22)){
get_a_line(fpe);
strcat(command_str," ");
strcat(command_str,buf);
}
}
}
trans_g_to_23()
{
FILE *fr_file;
strcpy(filename,"c:\\jgs\\test.g");
if (filename[strlen(filename)-2] != '.')
strcat(filename,".G");
fr_file = fopen(filename,"rb");
if (fr_file == NULL){
return -1;
}
filename[strlen(filename)-2] = 0;
// strcat(filename,".23");
// to_file = fopen(filename,"w");
to_file = fopen("c:\\jgs\\test.23","w");
if (to_file == NULL){
fclose(fr_file);
return -1;
}
put_a_line(to_file,"V1");
put_a_line(to_file,"I768");
put_a_line(to_file,"U20");
put_a_line(to_file,"N2");
strcpy(buf,"=");
strcat(buf,command_str);
put_a_line(to_file,buf);
trans_file(fr_file,to_file);
fclose(fr_file);
fclose(to_file);
return 1;
}
trans_gfile_to_23()
{
FILE *fr_file,*to_file;
FILE *wfpe;
int ch,oc;
if (filename[strlen(filename)-2] != '.')
strcat(filename,".G");
fr_file = fopen(filename,"rb");
if (fr_file == NULL){
return -1;
}
wfpe = fopen("c:\\jgs\\t.tmp","wb");
ch = fgetc(fr_file);
oc = ch;
while (ch != EOF){
if (ch == 'N'){
if ((oc != 10)&&(oc != 13)){
fputc(13,wfpe);
fputc(10,wfpe);
}
}
fputc(ch,wfpe);
oc = ch;
ch = fgetc(fr_file);
}
fclose(fr_file);
fclose(wfpe);
fr_file = fopen(filename,"wb");
wfpe = fopen("c:\\jgs\\t.tmp","rb");
ch = fgetc(wfpe);
while (ch != EOF){
fputc(ch,fr_file);
ch = fgetc(wfpe);
}
fclose(fr_file);
fclose(wfpe);
fr_file = fopen(filename,"rb");
if (fr_file == NULL){
return -1;
}
filename[strlen(filename)-2] = 0;
strcat(filename,".23");
// to_file = fopen(filename,"w");
to_file = fopen("c:\\jgs\\test.23","w");
if (to_file == NULL){
fclose(fr_file);
return -1;
}
put_a_line(to_file,"V1");
put_a_line(to_file,"I768");
put_a_line(to_file,"U20");
put_a_line(to_file,"N2");
strcpy(buf,"=");
strcat(buf,command_str);
put_a_line(to_file,buf);
trans_file(fr_file,to_file);
fclose(fr_file);
fclose(to_file);
return 1;
}
float count_angle(float x0, float y0, float x1, float y1)
{
float a;
if ((x1-x0)*(x1-x0)+(y1-y0)*(y1-y0) < 1e-8)
return 0;
a = acos((x1-x0)/sqrt((x1-x0)*(x1-x0)+(y1-y0)*(y1-y0)));
if (y1 < y0)
a = 2*PI - a;
return a;
}
recover_data()
{
int i;
xmaxv = xmaxv3;
ymaxv = ymaxv3;
// test_dog();
zmaxv = zmaxv3;
xmaxa = xmaxa3;
ymaxa = ymaxa3;
zmaxa = zmaxa3;
xmaxv1 = xmaxv; // Max Speed units(G CODE) per danwei
ymaxv1 = ymaxv;
x_once_max_v_pulses = xmaxv*xsteps*interval/(1000.0);
y_once_max_v_pulses = ymaxv*ysteps*interval/(1000.0);
if (danwei == MINUTES){
x_once_max_v_pulses /= 60.0;
y_once_max_v_pulses /= 60.0;
}
x_times = x_once_max_v_pulses/x_once_max_a_pulses;
if (x_times > 1)
x_once_max_v_pulses = x_once_max_a_pulses*x_times;
x_len_to_acc = 0;
for (i=0;i<x_times;i++){
x_len_to_acc += (i+1)*x_once_max_a_pulses;
}
y_times = y_once_max_v_pulses/y_once_max_a_pulses;
if (y_times > 1)
y_once_max_v_pulses = y_once_max_a_pulses*y_times;
y_len_to_acc = 0;
for (i=0;i<y_times;i++){
y_len_to_acc += (i+1)*y_once_max_a_pulses;
}
}
set_data()
{
int i;
xmaxv3 = xmaxv;
ymaxv3 = ymaxv;
zmaxv3 = zmaxv;
xmaxa3 = xmaxa;
ymaxa3 = ymaxa;
zmaxa3 = zmaxa;
xmaxv = xmaxv2;
ymaxv = ymaxv2;
zmaxv = zmaxv2;
xmaxa = xmaxa2;
ymaxa = ymaxa2;
zmaxa = zmaxa2;
xmaxv1 = xmaxv; // Max Speed units(G CODE) per danwei
ymaxv1 = ymaxv;
x_once_max_v_pulses = xmaxv*xsteps*interval/(1000.0);
y_once_max_v_pulses = ymaxv*ysteps*interval/(1000.0);
if (danwei == MINUTES){
x_once_max_v_pulses /= 60.0;
y_once_max_v_pulses /= 60.0;
}
x_times = x_once_max_v_pulses/x_once_max_a_pulses;
if (x_times > 1)
x_once_max_v_pulses = x_once_max_a_pulses*x_times;
x_len_to_acc = 0;
for (i=0;i<x_times;i++){
x_len_to_acc += (i+1)*x_once_max_a_pulses;
}
y_times = y_once_max_v_pulses/y_once_max_a_pulses;
if (y_times > 1)
y_once_max_v_pulses = y_once_max_a_pulses*y_times;
y_len_to_acc = 0;
for (i=0;i<y_times;i++){
y_len_to_acc += (i+1)*y_once_max_a_pulses;
}
}
void maindlg::OnOK()
{
// TODO: Add extra validation here
CDialog::OnOK();
// flag = 0;
}
get_a_line(FILE *fpe)
{
int i,ch,j;
long l;
ch = fgetc(fpe);
if (ch == EOF)
return -1;
i = 0;
while ((ch == 13)||(ch == 10))
ch = fgetc(fpe);
while ((ch != 13)&&(ch != 10)&&(ch != EOF)){
buf[i++] = ch;
ch = fgetc(fpe);
}
buf[i] = 0;
if (ch == EOF)
return -1;
ch = fgetc(fpe);
if (ch == EOF)
return -1;
strcpy(nbuf,"");
if ((ch == 13)||(ch == 10)){
ch = fgetc(fpe);
if (ch == EOF){
return 0;
}
}
j = 1;
i = 0;
while ((ch != 13)&&(ch != 10)&&(ch != EOF)){
nbuf[i++] = ch;
ch = fgetc(fpe);
j ++;
}
nbuf[i] = 0;
if (ch == EOF){
strcpy(nbuf,"");
j --;
}
l = -j;
fseek(fpe,l,SEEK_CUR);
return 0;
}
put_a_line(FILE *fpe,char *buf)
{
int i,xx,yy;
for (i=0;i<strlen(buf);i++)
fputc(buf[i],fpe);
if (buf[0] == 'P'){
xx = atoi(&(buf[1]));
i = 0;
while (buf[i] != ' ')
i ++;
yy = atoi(&(buf[i]));
x_count1 += xx;
y_count1 += yy;
}
if (fabs(yy) > 100)
i = 0;
fputc('\n',fpe);
}
put_a_line_to_tar_fpe(char *buf)
{
int i,xx,yy;
for (i=0;i<strlen(buf);i++)
fputc(buf[i],tar_fpe);
if (buf[0] == 'P'){
xx = atoi(&(buf[1]));
i = 0;
while (buf[i] != ' ')
i ++;
yy = atoi(&(buf[i]));
x_count1 += xx;
y_count1 += yy;
}
if (fabs(yy) > 100)
i = 0;
fputc('\n',tar_fpe);
}
trans_file(FILE *fr_file,FILE *to_file)
{
int ret,b_pos,b_p,i,flag,order,order1;
char buf1[100],buf2[20],bufl[100];
float ff;
FILE *t_fpe;
int b_flagl,flagl,rr;
long ll;
float bx,by,mx,my,ex,ey,a1,a2;
long countl;
b_flagl = 0;
countl = 0;
sub_flag = add_flag = 1;
t_fpe = fopen("c:\\jgs\\temp.g","w");
ret = 0;
first_flag = 1;
while (ret == 0){
ret = get_a_line(fr_file);
if (ret == -1)
break;
b_pos = 0;
if (buf[0] == 'N'){
i = 1;
while (((buf[i] >= '0')&&(buf[i] <= '9'))||(buf[i] == ' '))
i ++;
b_pos = i;
}
if ((buf[b_pos] == 'G')&&(buf[b_pos+1] == '9')&&(buf[b_pos+2] == '2')){
b_p = b_pos;
while ((buf[b_p] != 'X')&&(buf[b_p] != 'x'))
b_p ++;
o_x = atof(&(buf[b_p+1]));
while ((buf[b_p] != 'Y')&&(buf[b_p] != 'y'))
b_p ++;
o_y = atof(&(buf[b_p+1]));
fprintf(t_fpe,"%s\n",buf);
}
else if (buf[b_pos] == 'G'){
i = b_pos + 1;
while (((buf[i] >= '0')&&(buf[i] <= '9'))||(buf[i] == ' '))
i ++;
b_p = i;
flag = atoi(&(buf[b_pos+1]));
line_flag = flag;
switch (flag){
case 0:
trans_line(b_p,t_fpe);
break;
case 1:
trans_line(b_p,t_fpe);
break;
case 2:
trans_circ(b_p,t_fpe,2);
break;
case 3:
trans_circ(b_p,t_fpe,3);
break;
}
}
else if ((buf[b_pos] == 'X')||(buf[b_pos] == 'Y')){
b_p = b_pos;
switch (flag){
case 0:
trans_line(b_p,t_fpe);
break;
case 1:
trans_line(b_p,t_fpe);
break;
case 2:
trans_circ(b_p,t_fpe,2);
break;
case 3:
trans_circ(b_p,t_fpe,3);
break;
}
}
else
fprintf(t_fpe,"%s\n",buf);
}
fclose(t_fpe);
fclose(fr_file);
tar_fpe = to_file;
fr_file = fopen("c:\\jgs\\temp.g","rb");
ret = 0;
begin_flag = 1;
cur_speed = xydspeed;
order1 = 1;
while (ret == 0){
order1 ++;
ret = get_a_line(fr_file);
if (fabs(x_count1-e_x*100) > 2)
ret = ret;
if (ret == -1)
strcpy(buf,"");
b_pos = 0;
if (buf[0] == 'N'){
i = 1;
while (((buf[i] >= '0')&&(buf[i] <= '9'))||(buf[i] == ' '))
i ++;
b_pos = i;
}
if (buf[b_pos] == 'F'){
cur_speed = atof(&(buf[b_pos+1]));
cur_speed /= 60;
if (cur_speed < xmaxv1){
xmaxv = cur_speed*60;
ymaxv = cur_speed*60;
x_once_max_v_pulses = xmaxv*xsteps*interval/(1000.0);
y_once_max_v_pulses = ymaxv*ysteps*interval/(1000.0);
x_once_max_v_pulses /= 60;
y_once_max_v_pulses /= 60;
x_times = x_once_max_v_pulses/x_once_max_a_pulses;
if (x_times > 0)
x_once_max_v_pulses = x_once_max_a_pulses*x_times;
x_len_to_acc = 0;
for (i=0;i<x_times;i++){
x_len_to_acc += (i+1)*x_once_max_a_pulses;
}
y_times = y_once_max_v_pulses/y_once_max_a_pulses;
if (y_times > 0)
y_once_max_v_pulses = y_once_max_a_pulses*y_times;
y_len_to_acc = 0;
for (i=0;i<y_times;i++){
y_len_to_acc += (i+1)*y_once_max_a_pulses;
}
}
}
else if (buf[b_pos] == 'M'){
order = atoi(&(buf[b_pos+1]));
for (i=0;i<end_output;i++)
if (order == output[i].order){
if (mode == 1){
// put_a_line(to_file,"P0 0");
put_a_line(to_file,"A2");
put_a_line(to_file,"=2Q0 1Q0");
}
strcpy(buf1,"O ");
itoa(output[i].value,buf2,10);
strcat(buf1,buf2);
itoa(63,buf2,10);
strcat(buf1," ");
strcat(buf1,buf2);
put_a_line(to_file,buf1);
begin_flag = 1;
}
// if (order == 2){
// put_a_line(to_file,"A2");
// put_a_line(to_file,"S2");
// put_a_line(to_file,"E");
// }
}
else if ((buf[b_pos] == 'G')&&(buf[b_pos+1] == '9')&&(buf[b_pos+2] == '2')){
b_p = b_pos;
while ((buf[b_p] != 'X')&&(buf[b_p] != 'x'))
b_p ++;
o_x = atof(&(buf[b_p+1]));
while ((buf[b_p] != 'Y')&&(buf[b_p] != 'y'))
b_p ++;
o_y = atof(&(buf[b_p+1]));
}
else if (buf[b_pos] == 'G'){
i = b_pos + 1;
while (((buf[i] >= '0')&&(buf[i] <= '9'))||(buf[i] == ' '))
i ++;
b_p = i;
flag = atoi(&(buf[b_pos+1]));
if ((flag >= 0)&&(flag <= 3)){
if (begin_flag == 1){
strcpy(buf1,"=1Q2 2Q2 1TD");
itoa(interval,buf2,10);
strcat(buf1,buf2);
strcat(buf1," 2TD");
strcat(buf1,buf2);
strcat(buf1," MSL11X MSS");
put_a_line(to_file,buf1);
begin_flag = 0;
mode = 1;
}
}
switch (flag){
break;
case 0:
case 1:
if ((flag == 0)&&(!dk_flag))
set_data();
ll = ftell(fr_file);
if (b_flagl == 1){
flagl = 0;
strcpy(bufl,buf);
while (flagl == 0){
rr = get_a_line(fr_file);
if (rr == -1)
break ;
i = 0;
while ((i < strlen(buf))&&(buf[i] != 'G'))
i ++;
if (buf[i] == 'G'){
if ((buf[i+1] == '1')||((buf[i+1] == '0')&&(buf[i+2] == '1'))){
flagl = 1;
}
if (((buf[i+1] == '0')&&((buf[i+2] < '0')||(buf[i+2] > '9')))||((buf[i+1] == '0')&&(buf[i+2] == '0'))){
flagl = 1;
}
}
}
if (flagl == 1){
bx = x_ps/xsteps;
by = y_ps/ysteps;
i = 0;
while (bufl[i] != 'X')
i ++;
mx = atof(&(bufl[i+1]));
i = 0;
while (bufl[i] != 'Y')
i ++;
my = atof(&(bufl[i+1]));
i = 0;
while (buf[i] != 'X')
i ++;
ex = atof(&(buf[i+1]));
i = 0;
while (buf[i] != 'Y')
i ++;
ey = atof(&(buf[i+1]));
a1 = asin((my-by)/sqrt((mx-bx)*(mx-bx)+(my-by)*(my-by)))*180/3.14159;
a2 = asin((ey-my)/sqrt((ex-mx)*(ex-mx)+(ey-my)*(ey-my)))*180/3.14159;
if (sub_flag == 1)
add_flag = 1;
else
add_flag = 0;
if (fabs(a1-a2) > 2){
countl ++;
sub_flag = 1;
}
else{
sub_flag = 0;
}
}
strcpy(buf,bufl);
}
proc_line(b_p,to_file);
b_flagl = 1;
fseek(fr_file,ll,SEEK_SET);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -