embox

Форк
0
45 строк · 850.0 Байт
1

2
#include <errno.h>
3
#include <stdlib.h>
4
#include <stdio.h>
5
#include <unistd.h>
6
#include <string.h>
7

8
static void parse_com(char *com) {
9
	const char *sep = " \t\n\r";
10
	char *save;
11
	char cmd;
12
	int arg, frac;
13

14
	com = strtok_r(com, sep, &save);
15
	while (com) {
16
		cmd = *com;
17
		if (!('A' <= cmd && cmd <= 'Z')) {
18
			printf("Expected G-CODE command, but get '%c' (0x%hhu)\n",
19
					isprint(cmd) ? cmd : ' ', cmd);
20
			break;
21
		}
22
		if (2 > sscanf(com + 1, "%d.%d", &arg, &frac)) {
23
			frac = 0;
24
		}
25
		printf("cmd='%c', arg='%d', frac='%d'\n", cmd, arg, frac);
26
		com = strtok_r(NULL, sep, &save);
27
	}
28
	printf("newline\n");
29
}
30

31
int main(int argc, char *argv[]) {
32
	char line_buff[50];
33
	FILE *pf;
34

35
	if (argc < 2) {
36
		return -EINVAL;
37
	}
38

39
	pf = fopen(argv[1], "r");
40
	while (fgets(line_buff, sizeof(line_buff), pf)) {
41
		parse_com(line_buff);
42
		sleep(1);
43
	}
44

45
	return 0;
46
}
47

Использование cookies

Мы используем файлы cookie в соответствии с Политикой конфиденциальности и Политикой использования cookies.

Нажимая кнопку «Принимаю», Вы даете АО «СберТех» согласие на обработку Ваших персональных данных в целях совершенствования нашего веб-сайта и Сервиса GitVerse, а также повышения удобства их использования.

Запретить использование cookies Вы можете самостоятельно в настройках Вашего браузера.