C語言實現兩台電腦通過串口通訊

來源:互聯網
上載者:User

用C語言實現在發送端控制台輸入字串並在接收端接收顯示的功能。

  1. /*********************server.c****************/  
  2. #include<stdio.h>  
  3. #include<sys/types.h>  
  4. #include<sys/stat.h>  
  5. #include<fcntl.h>  
  6. #include<termios.h>  
  7. #define BAUDRATE B38400  
  8. #define MODEMDEVICE "/dev/ttyS0"  
  9. #define STOP '@'  
  10. int main(){  
  11.    int fd,c=0,res;  
  12.    struct termios oldtio,newtio;  
  13.    char ch,s1[20];  
  14.    printf("start...\n");  
  15.    fd=open(MODEMDEVICE,O_RDWR | O_NOCTTY);  
  16.    if(fd<0)  
  17.    {  
  18.       perror(MODEMDEVICE);  
  19.       exit(1);  
  20.    }  
  21.    printf("open...\n");  
  22.    tcgetattr(fd,&oldtio);  
  23.    bzero(&newtio,sizeof(newtio));  
  24.    newtio.c_cflag=BAUDRATE|CS8|CLOCAL|CREAD;  
  25.    newtio.c_iflag=IGNPAR;  
  26.    newtio.c_oflag=0;  
  27.    newtio.c_lflag=ICANON;  
  28.    tcflush(fd,TCIFLUSH);  
  29.    tcsetattr(fd,TCSANOW,&newtio);  
  30.    printf("writing...\n");  
  31.    while(1)  
  32.    {  
  33.       while((ch=getchar())!='@')  
  34.         {  
  35.            s1[0]=ch;  
  36.            res=write(fd,s1,1);  
  37.         }  
  38.         s1[0]=ch;  
  39.         s1[1]='\n';  
  40.         res=write(fd,s1,2);  
  41.         break;  
  42.    }  
  43.    printf("close...\n");  
  44.    close(fd);  
  45.    tcsetattr(fd,TCSANOW,&oldtio);  
  46.    return 0;  

  1. /**************client.c***************/  
  2. #include<stdio.h>  
  3. #include<sys/types.h>  
  4. #include<fcntl.h>  
  5. #include<termios.h>  
  6. #define BAUDRATE B38400  
  7. #define MODEMDEVICE "/dev/ttyS0"  
  8. int main()  
  9. {  
  10.     int fd,c=0,res;  
  11.     struct termios oldtio,newtio;  
  12.     char buf[256];  
  13.     printf("start ...\n");  
  14.     fd=open(MODEMDEVICE,O_RDWR | O_NOCTTY);  
  15.     if(fd<0)  
  16.     {  
  17.       perror(MODEMDEVICE);  
  18.       exit(1);  
  19.     }  
  20.     printf("open...\n");  
  21.     tcgetattr(fd,&oldtio);  
  22.     bzero(&newtio,sizeof(newtio));  
  23.     newtio.c_cflag=BAUDRATE | CS8 | CLOCAL | CREAD;  
  24.     newtio.c_iflag=IGNPAR;  
  25.     newtio.c_oflag=0;  
  26.     newtio.c_lflag=ICANON;  
  27.     tcflush(fd,TCIFLUSH);  
  28.     tcsetattr(fd,TCSANOW,&newtio);  
  29.     printf("reading...\n");  
  30.     while(1)  
  31.     {  
  32.        res=read(fd,buf,255);  
  33.        buf[res]=0;  
  34.        printf("res=%d vuf=%s\n",res,buf);  
  35.        if(buf[0]=='a') break;  
  36.     }  
  37.        printf("close...\n");  
  38.        close(fd);  
  39.        tcsetattr(fd,TCSANOW,&oldtio);  
  40.        return 0;  
  41. }  

發送端:

接受端:

(-----------that's all-----------)

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.