Не могу заставить C писать и читать через последовательный порт

Это моя первая программа на Си. Привет, мир! Я уверен, что в наши дни это не проблема для старшеклассников, но у них не было программирования, когда я учился в старшей школе. :)

Я хочу писать в последовательный порт, пока строка, которую я пишу, не вернется ко мне. Затем займитесь другими делами. Мой код ниже запускается в течение нескольких секунд, а затем утверждает, что видит строку и заканчивается, даже если он не мог фактически увидеть строку. Он ведет себя одинаково, несмотря ни на что, у меня явно что-то не так.

Да, последовательное устройство / 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;
}
6
задан Charles 8 January 2012 в 16:02
поделиться