2013-12-05 3 views
0

Как можно в Windows отправлять строку в C на последовательном компьютере?Отправьте строку на последовательный порт c программированием

FILE *port; 
    int int_out; 
    char buffer[1024]; 

    if((port=fopen("COM3","w+b"))==NULL){ 
     printf("Not opened\n"); 
     } 
    else printf("Opened\n"); 
    char string [] = "test"; 
    puts(string); 
    gets(string); 
    printf("Return: %d", string); 

Мой код ничего не отправляет ... Почему?

+2

Вы не пишете ничего, чтобы «порт» после его открытия. – simonc

+2

Обратите внимание, что вызов 'gets' здесь очень опасен! Подумайте, что произойдет, если вы прочтете более четырех символов. Есть причина, что 'get' устарели на протяжении многих лет и даже удалены из последнего стандарта C. –

+0

У кого-то есть решение? – user3069530

ответ

0

Этот код:

puts(string); 
gets(string); 
printf("Return: %d", string); 

не имеет никакого смысла whatsover.

Вы бессмысленно печатаете строку на стандартный вывод, а затем используете опасную функцию для получения новой строки, что приведет к неопределенному поведению, если оно длиннее 4 символов. Затем новая строка печатается как int, что также является полным бонкером.

Вы должны просто сделать fprintf(port, "%s", string);, чтобы отправить строку только что открытому FILE *, представляющему собой последовательный порт.

Обратите внимание, что вам часто приходится настраивать последовательные порты, например, скорость передачи в бодах, бит начала/остановки/четности и т. Д.

Смежные вопросы