view harelet.c @ 5:3879c1178448

Automated Vimcurial commmit
author VilyaemKenyaz
date Fri, 08 Sep 2023 08:40:34 -0400
parents 0ed615367b10
children ec82c868b8b0
line wrap: on
line source

/*********************************************
 * Description - Harelet is a CAD and compiler program for CNC milling machines
 * Author - William King
 * Date - Sep 08 2023
 * *******************************************/

#include <stdio.h> 
#include <stdlib.h>
#include <string.h>
#include "basedfilelib.h"
#include "minibasediolib.h"

#define DEEPNESS 5
#define MAXPOINT 4096
#define UNITS	"G20"
#define SPEED	20

typedef struct{
	unsigned int X = 0;
	unsigned int Y = 0;;
	unsigned int down = 0;
}point;

point points[MAXPOINT];

unsigned int X = 0;
unsigned int  Y = 0;
unsigned int step = 0;
unsigned int down = 0;
unsigned int numpoints = 0;
char action;

/*********************************************
 * Description - Renders the screen
 * Author - William King
 * Date - Sep 08 2023
 * *******************************************/
void Render(){

	//Render points
	for(int i = 0;i != MAXPOINT;i++){
		puts("\x1b[0;0f]");

		//Move X
		for(int j = 0;j != points[i].X;j++){

			printf("");

		}

		//Move Y
		for(int k = 0;k != points[i].Y;k++){

			puts("");


		}
		if(points[i].down == 0){
			puts("X");
		}
		else{
			puts("*");
		}

	}

	//Render cursor
	DocTop();
	for(int i = 0;i != X;i++){
		printf("");

	}
	for(int i = 0;i != Y;i++){
		puts("");
	}
	puts("&");



}

/*********************************************
 * Description - This function compiles instructions for CNC machines.
 * Author - William King
 * Date - Sep 08 2023
 * *******************************************/
void Compile(){
	char * filename;
	char * file;
	int choice;

	puts("Select your format\n1. RAW GCODE\n2. Superhare INO");
	scanf("%d",&choice);


	puts("Enter the filename");
	scanf("%s",filename);

	if(choice == 1){
		//Set the miller
		strcat(file,UNITS);

		//Meat of instructions
		for(int i = 0;i != numpoints;i++){
			//Compose
			char * instruction;
			strcat(instruction,"G0 X");
			strcat(instruction,sprintf("%d",points[i].X));
			strcat(instruction," Y");
			strcat(instruction,sprintf("%d",points[i].Y));
			strcat(instruction," Z");
			strcat(instruction,sprintf("%d",DEEPNESS));
			//Write to string
			strcat(file,instruction);
		}
		//Finish
		strcat(file,"G0, X0, Y0, Z0");
		WriteFile(filename,file);
	}
	else{
		puts("Superhare implementation not done");
		exit(1);
		//Set the miller


		//Meat of instructions


		//Finish

	}

	puts("Finished Compiling");

}


/*********************************************
 * Description - Main function
 * Author - William King
 * Date - Sep 08 2023
 * *******************************************/
void main(int argc, char* argv[]){
	while(1){
	Render();
	scanf("%c",&action);
	switch(action){
		case 'a':		points[numpoints].X = X;
					points[numpoints].Y = Y;
					points[numpoints].down = down;
					numpoints++;
					break;
		case 'h': 
					X+=step;
					break;
		case 'j': 
					Y+=step;
					break;
		case 'k': 
					Y-=step;
					break;
		case 'l': 
					X-=step;
					break;

		case 's':		
					puts("Enter new step:");
					scanf("%d",&step);
					break;

		case 'c':		Compile();
					break;
		default:
					break;
	}
	}

	exit(0);
}