Это моя первая программа на Си.Привет, мир!Я уверен, что это не проблема для программистов старших классов в эти дни, но у них не было программирования, когда я учился в старших классах.:)
Я хочу записывать в последовательный порт, пока строка, которую я пишу, не будет возвращена мне.Тогда делай другие вещи.Мой код, приведенный ниже, выполняется в течение нескольких секунд, а затем утверждает, что видит строку, и завершается, даже если он на самом деле не мог видеть строку.Он ведет себя одинаково, несмотря ни на что, у меня, очевидно, есть что-то очень неправильное.
Да, последовательное устройство / dev / kittens является реальным, и от терминала принимаются bash-эхо-строки в / dev / kittens (эхо) на последовательном порту, когда порт зациклен.
Я был бы очень признателен всем, кто мог бы исправить мои ошибки.
#include <stdio.h>
#include <string.h>
#include <unistd.h>
#include <fcntl.h>
#include <errno.h>
#include <termios.h>
int fd;
char *buff;
int open_port(void)
{
fd = open("/dev/kitens", O_RDWR | O_NOCTTY | O_NDELAY);
if (fd == -1)
{
perror("open_port: Unable to open /dev/kittens ");
}
else
fcntl(fd, F_SETFL, 0);
return (fd);
}
int main()
{
int wr,rd;
open_port();
char msg[]="There are mice in the wire.\r";
do
{
/* Read from the port */
fcntl(fd, F_SETFL, FNDELAY);
rd=read(fd,buff,sizeof(msg));
/* Write to the port */
wr = write(fd, msg, sizeof(msg));
printf("debugging - Wrote to port\n");
usleep(10000);
if (wr < 0) {
fputs("write() to port /dev/kittens failed!\n", stderr);
break;
}
} while (buff != msg);
if (buff=msg)
printf(buff, "String Found! Now do the work.");
/*
system("dostuff.sh);
*/
/* Close the port on exit. */
close(fd);
return 0;
}