embox
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
8static void parse_com(char *com) {9const char *sep = " \t\n\r";10char *save;11char cmd;12int arg, frac;13
14com = strtok_r(com, sep, &save);15while (com) {16cmd = *com;17if (!('A' <= cmd && cmd <= 'Z')) {18printf("Expected G-CODE command, but get '%c' (0x%hhu)\n",19isprint(cmd) ? cmd : ' ', cmd);20break;21}22if (2 > sscanf(com + 1, "%d.%d", &arg, &frac)) {23frac = 0;24}25printf("cmd='%c', arg='%d', frac='%d'\n", cmd, arg, frac);26com = strtok_r(NULL, sep, &save);27}28printf("newline\n");29}
30
31int main(int argc, char *argv[]) {32char line_buff[50];33FILE *pf;34
35if (argc < 2) {36return -EINVAL;37}38
39pf = fopen(argv[1], "r");40while (fgets(line_buff, sizeof(line_buff), pf)) {41parse_com(line_buff);42sleep(1);43}44
45return 0;46}
47