Сравнение массива с двумерным массивом - азбука Морзе для микроконтроллера - PullRequest
0 голосов
/ 09 апреля 2019

Мне нужно завершить проект с азбукой Морзе, используя микроконтроллер TI MSP430G2553 для прошивки азбуки Морзе. Я пытаюсь заставить программу распечатывать точку и тире для каждой буквы, прежде чем связываться со вспышкой микроконтроллера. Я не уверен, как сравнить массив с 2D-массивом. Я хотел бы для сравнения затем проверить, найдена ли точка, тире или пробел при просмотре соответствующей буквы в массиве. Вот что у меня есть.

Я попытался установить массивы друг к другу, выполнив «if (str [i] == morse_array [j] [k])», но я получил только сообщение о том, что не могу сравнить указатель и целое число , Любое руководство по шагам, чтобы это исправить?

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <time.h>

void time_delay(int sec);


void main(void)
{
unsigned int i = 0;
unsigned int j, k;

char str [] = "Go Knights";
char* morse_array [36][2] = {{".-", "A"}, {"-...", "B"}, {"-.-.", "C"}, {"-..", "D"}, {".", "E"}, \
    {"..-.", "F" }, { "--.", "G"}, {"....", "H"}, {"..", "I"}, {".---", "J"}, {"-.-", "K"}, {".-..", "L"}, \
    {"--", "M"}, {"-.", "N"}, {"---", "O"}, {".--.", "P"}, {"--.-", "Q"}, {".-.", "R"}, {"...", "S"}, \
    {"-", "T"}, {"..-", "U"}, {"...-", "V"}, {".--", "W"}, {"-..-", "X"}, {"-.--", "Y"}, {"--..", "Z"}, \
    {"-----", "0"}, {".----", "1"}, {"..---", "2"}, {"...--", "3"}, {"....-", "4"}, {".....", "5"}, {"-....", "6"}, \
    {"--...", "7"}, {"---..", "8"}, {"----.", "9"}};



    for(i=0; i< strlen(str); i++){
        for (j=0; j <= i; j++) {

            if (strncmp(morse_array[i][j], &str[i], strlen(str)) == 0){
                if(str[i] == '.'){
                    printf("DOT");
                    time_delay(200);
                }
                else if (str[i] == '-'){
                    printf("DASH");
                    time_delay(600);
                }

                else if (str[i] == ' '){
                    printf("SPACE");
                    time_delay(1400);
                }
            }
        }
    time_delay (1400);
    }
    printf("start program again");
    return;
}

void time_delay(int sec) {
// Converting time into milli_seconds
int milliSeconds = 1000 * sec;

clock_t start = clock();

while (clock() < start + milliSeconds)
    ;
}
...