精华内容
下载资源
问答
  • C语言通讯簿

    2012-07-03 01:19:52
    C语言实现的简单通讯簿,代码很基础,可供大家在此基础上修改完善。其中包含了密码验证,增删改差,界面颜色切换,等功能。
  • c语言通讯系统 v1.0

    2009-06-25 15:17:36
    这是我自己的课程设计的作品,有很多的资源在我们机房的破机子上不能运行.我的配置是 win 2000 cpu 奔腾4 125M内存 TC 3.0中文版运行.
  • 名称:甲机串口程序说明:甲机向乙机发送控制命令字符,甲机同时接收乙机发送的数字,并显示在数码管上。*/#include#defineucharunsignedchar#defineuintunsignedintsbitLED1=P1^0;sbitLED2=P1^3;...

    名称:甲机串口程序

    说明:甲机向乙机发送控制命令字符,

    甲机同时接收乙机发送的数字,并显示在

    数码管上。

    */

    #include

    #defineucharunsignedchar

    #defineuintunsignedint

    sbitLED1=P1^0;

    sbitLED2=P1^3;

    sbitK1=P1^7;

    ucharOperation_No=0;//操作代码

    //数码管代码

    ucharcodeDSY_CODE[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};

    //延时

    voidDelayMS(uintms)

    {

    uchari;

    while(ms--)for(i=0;i<120;i++);

    }

    //向串口发送字符

    voidPutc_to_SerialPort(ucharc)

    {

    SBUF=c;

    while(TI==0);

    TI=0;

    }

    //主程序

    voidmain()

    {

    LED1=LED2=1;

    P0=0x00;

    SCON=0x50;串口模式1,允许接收

    TMOD=0x20;//T1工作模式2

    PCON=0x00;波特率不倍增

    TH1=0xfd;

    TL1=0xfd;

    TI=RI=0;

    TR1=1;

    IE=0x90;//允许串口中断

    while(1)

    {

    DelayMS(100);

    if(K1==0)//按下K1时选择操作代码0,1,2,3

    {

    while(K1==0);

    Operation_No=(Operation_No+1)%4;

    switch(Operation_No)根据操作代码发送A/B/C或停止发送

    {

    case0:Putc_to_SerialPort('X');

    LED1=LED2=1;

    break;

    case1:Putc_to_SerialPort('A');

    LED1=~LED1;LED2=1;

    break;

    case2:Putc_to_SerialPort('B');

    LED2=~LED2;LED1=1;

    break;

    case3:Putc_to_SerialPort('C');

    LED1=~LED1;LED2=LED1;

    break; }

    }

    }

    }

    //甲机串口接收中断函数

    voidSerial_INT()interrupt4

    {

    if(RI)

    {

    RI=0;

    if(SBUF>=0&&SBUF<=9) P0=DSY_CODE[SBUF];

    elseP0=0x00;

    }

    }

    /*名称:乙机程序接收甲机发送字符并完成相应动作

    说明:乙机接收到甲机发送的信号后,根据相应信号控制LED完成不同闪烁动作。

    */

    #include

    #defineucharunsignedchar

    #defineuintunsignedint

    sbitLED1=P1^0;

    sbitLED2=P1^3;

    sbitK2=P1^7;

    ucharNumX=-1;

    //延时

    voidDelayMS(uintms)

    {

    uchari;

    while(ms--)for(i=0;i<120;i++);

    }

    //主程序

    voidmain()

    {

    LED1=LED2=1;

    SCON=0x50;串口模式1,允许接收

    TMOD=0x20;//T1工作模式2

    TH1=0xfd;

    TL1=0xfd;//波特率9600

    PCON=0x00;波特率不倍增

    RI=TI=0;

    TR1=1;

    IE=0x90;

    while(1)

    {

    DelayMS(100);

    if(K2==0)

    {

    while(K2==0);

    NumX=++NumX%11;//产生0~10范围内的数字,其中10表示关闭

    SBUF=NumX;

    while(TI==0);

    TI=0;

    }

    }

    }

    voidSerial_INT()interrupt4

    {

    if(RI)//如收到则LED则动作

    {

    RI=0;

    switch(SBUF)//根据所收到的不同命令字符完成不同动作

    {

    case'X':LED1=LED2=1;break;//全灭

    case'A':LED1=0;LED2=1;break;//LED1亮

    case'B':LED2=0;LED1=1;break;//LED2亮

    case'C':LED1=LED2=0;//全亮

    }

    }

    }

    0f27961176ccd85b7b86461c12173796.png

    展开全文
  • 即时通讯软件源代码为JAVA语言对于即时通讯软件源代码最好是用C语言编写的,想学一下,感谢您即时通讯软件有什么。includewinscock2、h#includewinscock2、h#includesting。h#includewindows。h#includePROCESS。h#...

    385710749475b6cc1ca0b99a26c146d1.png

    我不知道哪种语言无关紧要。开源,我不知道该用什么。

    即时通讯软件源代码为JAVA语言

    对于即时通讯软件源代码最好是用C语言编写的,想学一下,感谢您即时通讯软件有什么。

    includewinscock2、h#

    includewinscock2、h#

    includesting。h#

    includewindows。h#

    includePROCESS。h#手机上能安装即时通吗。

    void _cdeclget_键盘输入(void*param)sock _输入(void*param)sock=(sock)param;

    while(1)char buf[1024 1024];

    获得(buf)的(buf)的(buf)的(buf)的

    int sByte=发送(发送)的(sock,buf,strlen(buf,0);

    if(sByte==SOCKET_ERROR)printf(“send==SOCKET_ERROR失败:%d\n”,();}网络电话哪个软件好用。

    int main()WSADATA WSADATA;

    int err=WSAStartup(WINSOCK_版本,&WSADATA);国外主要即时通讯软件。

    if(错误!=0)printf(“WSASartup()失败:%d\n”,());

    返回-1;SOCKET sock=SOCKET(AF unet,sock_STREAM,0);网易企业即时通讯软件。

    if(sock==INVALID_SOCKETfailed:%d\n”,());

    WSACleanup();阿里巴巴的通讯软件。

    return-1;serveraddr;中的sockaddr_;。 sin_家庭=AF_INET;

    sin_端口=HTON(27015);即时通讯

    _联合国。 S_addr=inet_addr(“);Err=connect(sock,(sockaddr*)&serveraddr,size of(serveraddr));钉钉是即时通讯软件。

    如果(err==INVALID_SOCKET)printf(“连接()失败:%d\n”,());

    紧身衣(袜子);

    WSACleanup();即时通讯应用软件。

    返回-1;_开始线程(get_keyboard_输入,0,(空*)袜子);即时通讯软件与马上办。

    睡眠(1000);Charrbuf[1024];

    而(1)模因集(rbuf,0,1024);intrByte=rev(Sock,rbuf,1024,0);即时通讯软件排名。

    如果(rByte==SOCKET_closeocket(套接字);wsacleanup();closeocket(套接字);wsacleanup();Return-1;如果(rbyte=0)printf(“连接关闭关闭)。break;print f(“TCP recv数据:S/N,rbuf);sleep(1000);closeocket(socket);wsacleanup();return return0;server server server server server(server);return return0;server server server server server server server server(server);server server server server server:return0;server server server server server server server(WS2_32、lib”)局域网游戏通讯软件。

    #include;

    #include;。包括。h#

    定义MAX_CLIENT_NUM63#

    主要()WSA DATAwsadata;

    IN ERR=WSAS tartup(WINSOCK_VERSION,&wsadata);

    如果(错误! =0)printf(“WSASartup()失败:%d\n”,());

    返回-1;SOCKET袜子=插座(AF_INET,SOCK_STREAM,0);免费即时通讯软件排名。

    如果(袜子==INVALID_SOCKET)printf(“套接字==INVALID_SOCKET==INVALID_SOCKETINVALID_SOCKETfailed:%d\n”,());

    WSACleanup();

    返回-1;sockaddr_in localaddr;sms是即时通讯软件吗。

    sin_family=AF_INET;不用手机注册 即时通讯。

    即时通讯软件源码:易语言写即时通讯软件(类似QQ)~求个源码

    sin_port=HTON(27015);

    _联合国。 S_addr=Htonl(INADDR_ANY);错误。 S_addr=htonlbind(锁,(lockaddr*)和localaddr,大小为(localaddr));2018世界即时通讯app。

    如果(err==INVALID_SOCKET)printf(“绑定==INVALID_SOCKET==INVALID_SOCKETINVALID_SOCKETfailed:%d\n”,());

    紧身衣(袜子);美国即时通讯软件。

    WSACleanup();办公室即时通讯软件。

    返回-1;错误=听(袜子,5);區塊鏈即时通讯软件。

    如果(err==INVALID_SOCKET)printf(“侦听==INVALID_SOCKET==INVALID_SOCKETINVALID_SOCKETfailed:%d\n”,());局域网即时通讯pc软件。

    紧身衣(袜子);

    WSACleanup();

    返回-1;SOCKET客户端[MAX_CLIENT_NUM];。对于(inti=0;iMAX_CLIENT_NUM;i)客户[i]

    FD_ZERO(&allset);

    FD_SET(袜子和集合);#定义MSG_MAX_SIZE1024

    字符buf[MAX_CLIENT_NUM][MSG_MAX_SIZE];while(1)rset=所有;即时通讯软件打不开。

    int ret=选择(0,&rset,null,null);

    如果(RET==SOCKET_ERROR)printf(“选择==SOCKET_ERROR==SOCKET_ERRORSOCKET_ERRORfailed:%ld\n”,());

    中断;如果(重新==0){

    继续;如果(FD_ISSET(袜子,和rset)sockaddr_in clientaddr;

    intlen=size of(clientaddr);

    SOCKET Sockconn=接受(Sockaddr*)&clientaddr,&len;

    如果(Sockconn==INVALID_SOCKET)printf(“接受==INVALID_SOCKET==INVALID_SOCKETINVALID_SOCKETfailed:%d\n”,());即时通讯软件用。

    中断;printf(“客户端的IP:%s\n客户端的端口:%d\n”,inet_ntoa(clientaddr。sin_addr),clientaddr。sin_port);计算机即时通讯软件。

    对于(I=0;iMAX_CLIENT_NUM;i)如果(客户端[i]==INVALID_SOCKET)客户端[i]

    中断;如果(I MAX_CLIENT_NUM)FD_SET(Shockconn,&allset);否则{。打印F(“太多客户“);

    闭包(Sockconn;}

    对于(I=0;iMAX_CLIENT_NUM;I)如果(客户端[I]! =INVALID_SOCKET)和FD_ISSET(客户端[i],&rset)memset(buf[i],0,MSG_MAX_SIZE);

    在Byte=recv(客户[i],buf[i],MSG_MAX_SIZE,0);

    如果(rByte==SOCKET_ERROR)printf(“recv==SOCKET_ERROR==SOCKET_ERRORSOCKET_ERRORfailed:%d\n”,());

    FD_CLR(客户[i],&allset);简单即时通讯软件。

    closesocket(client[i]);

    客户[我]=INVALID_SOCKET;

    继续;如果(rByte==0)printf(“连接关闭。 “);

    FD_CLR(客户[i],&allset);常见即时通讯软件。

    closesocket(client[i]);

    客户[我]=INVALID_SOCKET;

    继续;

    对于(intj=0;视酷AX_CLIENT_NUM;j)如果(客户端[j]! =invalid_socket)

    =发送(客户端[j],buf[i],1024,0);

    如果(S Byte==SOCKET_ERROR)printf(“发送==SOCKET_ERROR==SOCKET_ERRORSOCKET_ERRORfailed:%d\n”,();}

    printf(“TCP recv[%d]DATA:%s\n”,r Byte,buf[i]);}。 紧身衣(袜子);

    WSACleanup();

    返回0;。

    展开全文
  • 主要为大家详细介绍了C语言实现通讯管理系统设计,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
  • c语言 串口通讯

    千次阅读 2018-02-05 22:44:42
    本文主要内容包含: 1.接收串口数据程序的编程逻辑示意图; 2.接收串口数据程序要用到的通用函数模块(可直接引用,无需更改); 3....1.接收串口数据程序的编程逻辑示意图:2.与串口有关的函数模块及数组(可直接...

    本文主要内容包含:

     1.接收串口数据程序的编程逻辑示意图;

     2.接收串口数据程序要用到的通用函数模块(可直接引用,无需更改);

     3.接收串口数据程序的示例。


    1.接收串口数据程序的编程逻辑示意图:

    2.与串口有关的函数模块及数组(可直接引用到自己的程序中):

    1. <span style="font-size:18px;">//设置波特率函数会用到的数组  
    2. int speed_arr[] = { B38400, B19200, B9600, B4800, B2400, B1200, B300,  
    3.         B38400, B19200, B9600, B4800, B2400, B1200, B300, };  
    4. int name_arr[] = {38400,  19200,  9600,  4800,  2400,  1200,  300,  
    5.         38400,  19200,  9600, 4800, 2400, 1200,  300, };  
    6.   
    1. <span style="font-size:18px;">int OpenDev(char *Dev) //打开串口  
    2. {  
    3.     int fd = open(Dev,O_RDWR | O_NOCTTY | O_NONBLOCK);  
    4.     if(-1 == fd)  
    5.     {  
    6.         perror("Can't Open Serial Port");  
    7.         return -1;  
    8.     }  
    9.     else  
    10.     {  
    11.         printf("Open com success!!!!!!!!!!!");  
    12.         return fd;  
    13.     }  
    14. }  
    15.   

    1. <span style="font-size:18px;">void set_speed(int fd, int speed)  //设置波特率  
    2. {  
    3.   int   i;  
    4.   int   status;  
    5.   struct termios   Opt;  
    6.   tcgetattr(fd, &Opt);  
    7.   for ( i= 0;  i < sizeof(speed_arr) / sizeof(int);  i++)  
    8.    {  
    9.     if  (speed == name_arr[i])  
    10.     {  
    11.         tcflush(fd, TCIOFLUSH);  
    12.         cfsetispeed(&Opt, speed_arr[i]);  
    13.         cfsetospeed(&Opt, speed_arr[i]);  
    14.         status = tcsetattr(fd, TCSANOW, &Opt);  
    15.         if  (status != 0)  
    16.             perror("tcsetattr fd1");  
    17.         return;  
    18.         }  
    19.    tcflush(fd,TCIOFLUSH);  
    20.    }  
    21. }  
    22.   

    1. <span style="font-size:18px;">int set_Parity(int fd,int databits,int stopbits,int parity)  //设置数据位、奇偶位、停止位等  
    2. {  
    3.    struct termios options;  
    4.  if  ( tcgetattr( fd,&options)  !=  0)  
    5.   {  
    6.     perror("SetupSerial 1");  
    7.     return(0);  
    8.   }  
    9.   bzero(&options,sizeof(options));  
    10.   options.c_cflag |= CLOCAL | CREAD;  
    11.   options.c_cflag &= ~CSIZE;  
    12.   switch (databits) /*设置数据位*/  
    13.   {  
    14.     case 7:  
    15.         options.c_cflag |= CS7;  
    16.         break;  
    17.     case 8:  
    18.         options.c_cflag |= CS8;  
    19.         break;  
    20.     default:  
    21.         fprintf(stderr,"Unsupported data size\n");  
    22.         return (0);  
    23.     }  
    24.   switch (parity)/*设置校验位*/  
    25.     {  
    26.     case 'n':  
    27.     case 'N':  
    28.         options.c_cflag &= ~PARENB;    
    29.         //options.c_iflag &= ~INPCK;      
    30.         break;  
    31.     case 'o':  
    32.     case 'O':  
    33.         options.c_cflag |= (PARODD | PARENB);    
    34.         options.c_iflag |= (INPCK | ISTRIP);              
    35.         break;  
    36.     case 'e':  
    37.     case 'E':  
    38.         options.c_cflag |= PARENB;      
    39.         options.c_cflag &= ~PARODD;    
    40.         options.c_iflag |= (INPCK | ISTRIP);         
    41.         break;  
    42.     case 'S':  
    43.     case 's':    
    44.         options.c_cflag &= ~PARENB;  
    45.         options.c_cflag &= ~CSTOPB;  
    46.         break;  
    47.     default:  
    48.         fprintf(stderr,"Unsupported parity\n");  
    49.         return (0);  
    50.         }  
    51.   switch (stopbits)/*设置停止位*/  
    52.     {  
    53.     case 1:  
    54.         options.c_cflag &= ~CSTOPB;  
    55.         break;  
    56.     case 2:  
    57.         options.c_cflag |= CSTOPB;  
    58.         break;  
    59.     default:  
    60.         fprintf(stderr,"Unsupported stop bits\n");  
    61.         return (FALSE);  
    62.     }  
    63.   if (parity != 'n')  
    64.     options.c_iflag |= INPCK;  
    65.     options.c_cc[VTIME] = 0;   
    66.     options.c_cc[VMIN] = 0;  
    67.   tcflush(fd,TCIFLUSH);   
    68.   if (tcsetattr(fd,TCSANOW,&options) != 0)  
    69.     {  
    70.         perror("SetupSerial 3");  
    71.         return (0);  
    72.     }  
    73.   return (1);  
    74.  }  
    75.   

    3.示例:
    1. <span style="font-size:18px;">#include   
    2. #include   
    3. #include   
    4. #include   
    5. #include   
    6. #include   
    7. #include   
    8. #include   
    9. #include   
    10.   
    11. #define TRUE 1  
    12. #define FALSE 0  
    13.   
    14. int analysis(char *buff);  
    15. int OpenDev(char *Dev);  
    16. void set_speed(int fd, int speed);  
    17. int set_Parity(int fd,int databits,int stopbits,int parity);  
    18.   
    19. int speed_arr[] = { B38400, B19200, B9600, B4800, B2400, B1200, B300, B38400, B19200, B9600, B4800, B2400, B1200, B300, };  
    20. int name_arr[] = {38400, 19200, 9600, 4800, 2400, 1200, 300, 38400, 19200, 9600, 4800, 2400, 1200, 300, };  
    21. int OpenDev(char *Dev)  
    22. {  
    23.   int fd = open(Dev,O_RDWR | O_NOCTTY | O_NONBLOCK);  
    24.   if(-1 == fd)  
    25.     {  
    26.       perror("Can't Open Serial Port");  
    27.       return -1;  
    28.     }   
    29.   else   
    30.     {  
    31.       printf("Open com success!!!!!!!!!!!");  
    32.       return fd;  
    33.     }  
    34. }   
    35. void set_speed(int fd, int speed)  
    36. {   
    37.   int i;   
    38.   int status;   
    39.   struct termios Opt;  
    40.  tcgetattr(fd, &Opt);   
    41.   for ( i= 0; i < sizeof(speed_arr) / sizeof(int); i++)  
    42.    {   
    43.       if (speed == name_arr[i])   
    44.         {   
    45.           tcflush(fd, TCIOFLUSH);   
    46.           cfsetispeed(&Opt, speed_arr[i]);  
    47.          cfsetospeed(&Opt, speed_arr[i]);  
    48.          status = tcsetattr(fd, TCSANOW, &Opt);   
    49.           if (status != 0) perror("tcsetattr fd1");  
    50.          return;  
    51.        }   
    52.     tcflush(fd,TCIOFLUSH);  
    53.     }  
    54. }  
    55. int set_Parity(int fd,int databits,int stopbits,int parity)   
    56. {   
    57.   struct termios options;   
    58.   if ( tcgetattr( fd,&options) != 0)   
    59.   {  
    60.    perror("SetupSerial 1");  
    61.    return(FALSE);  
    62.  }   
    63.   bzero(&options,sizeof(options));   
    64.   options.c_cflag |= CLOCAL | CREAD;  
    65.  options.c_cflag &= ~CSIZE;   
    66.   switch (databits)   
    67.   {   
    68.     case 7:   
    69.     options.c_cflag |= CS7;  
    70.    break;  
    71.    case 8:  
    72.    options.c_cflag |= CS8;  
    73.    break;   
    74.     default: fprintf(stderr,"Unsupported data size\n");  
    75.    return (FALSE);   
    76.   }   
    77.   switch (parity)   
    78.   {  
    79.    case 'n':   
    80.     case 'N':  
    81.    options.c_cflag &= ~PARENB;  
    82.    options.c_iflag &= ~INPCK;   
    83.     break;   
    84.     case 'o':  
    85.    case 'O':   
    86.     options.c_cflag |= (PARODD | PARENB);  
    87.    options.c_iflag |= (INPCK | ISTRIP);   
    88.     break;   
    89.     case 'e':   
    90.     case 'E':   
    91.     options.c_cflag |= PARENB;  
    92.    options.c_cflag &= ~PARODD;   
    93.     options.c_iflag |= (INPCK | ISTRIP);   
    94.     break;   
    95.     case 'S':   
    96.     case 's':   
    97.     options.c_cflag &= ~PARENB;   
    98.     options.c_cflag &= ~CSTOPB;  
    99.    break;  
    100.    default: fprintf(stderr,"Unsupported parity\n");   
    101.    return (FALSE);   
    102.   }   
    103.   switch (stopbits)  
    104.  {   
    105.     case 1:  
    106.    options.c_cflag &= ~CSTOPB;   
    107.     break;   
    108.     case 2:   
    109.     options.c_cflag |= CSTOPB;  
    110.    break;   
    111.     default: fprintf(stderr,"Unsupported stop bits\n");   
    112.     return (FALSE);   
    113.     }   
    114.     if (parity != 'n')   
    115.     options.c_iflag |= INPCK;   
    116.     options.c_cc[VTIME] = 0;  
    117.    options.c_cc[VMIN] = 0;  
    118.    tcflush(fd,TCIFLUSH);   
    119.     if (tcsetattr(fd,TCSANOW,&options) != 0)  
    120.    {    
    121.         perror("SetupSerial 3");   
    122.         return (FALSE);  
    123.    }   
    124.     return (TRUE);  
    125. }  
    126.   
    127. int analysis (char *buff)  
    128. {  
    129.   int i;  
    130.   char *p;  
    131.   p=buff;  
    132.   for(i=0;i<255,i++)  
    133.     {  
    134.       printf("%s ",p[i]);  
    135.     }  
    136.   return 0;  
    137. }  
    138.   
    139. void main(void)  
    140. {  
    141.   int fd;  
    142.   int nread;  
    143.   char buff[255];  
    144.   char *dev_name = "/dev/ttymxc4";//根据实际情况选择串口  
    145.   while(1)   
    146.     {    
    147.       fd = OpenDev(dev_name); //打开串口   
    148.   
    149.       if(fd>0)   
    150.       set_speed(fd,9600); //设置波特率   
    151.       else   
    152.       {   
    153.          printf("Can't Open Serial Port!\n");   
    154.          sleep(1);  
    155.         continue;   
    156.       }   
    157.   break;  
    158. }  
    159.   
    160. if(set_Parity(fd,8,1,'N')==FALSE) //设置校验位   
    161. {  
    162.   printf("Set Parity Error\n");   
    163.   exit(1);  
    164. }  
    165.   
    166. while(1)   
    167.   {   
    168.     sleep(3);   
    169.     nread = read(fd,buff,sizeof(buff));  
    170.     if((nread>0))  
    171.       {       
    172.     printf("Success!\n");   
    173.        }  
    174.     analysis(buff);  
    175.   }  
    176. }  


    展开全文
  • MODBUS通讯 C语言源代码,使用C语言编写的一个MODBUS通讯协议代码
  • C语言做串口通讯程序

    2008-11-28 11:20:03
    C语言做串口通讯程序 C语言做串口通讯程序
  • C语言 串口通讯

    2009-08-24 14:44:00
    #include "dos.h" #include "stdlib.h" #include "stdio.h" #define PORT 0 void SendFile(char *fname); /* 发送文件*/ void Send(int s); /*发送一个字节*/ void SendFileName(char *fname)...void ReceiveF...

    #include "dos.h"

    #include "stdlib.h"

    #include "stdio.h"

    #define PORT 0

    void SendFile(char *fname); /* 发送文件*/

    void Send(int s); /*发送一个字节*/

    void SendFileName(char *fname); /*发送文件名*/

    void ReceiveFile(); /*接收文件*/

    void GetFileName(char *f); /*接收文件名*/

    void InitPort(int port,unsigned char para); /*初始化端口*/

    void SendPort(int port,char c); /*端口发送*/

    int ReadPort(int port); /*读端口字节*/

    int CheckState(int port); /*检查端口状态*/

    int Receive(int port,int *G); /*接收一个字节*/

    main(int argc,char *argv[])

    {

    if(argc<2){

    printf("Please input R(receive) or S(sent) parametre:");

    exit(1);

    }

    InitPort(PORT,231);

    if(*argv[1]==''''S'''') /*检查选择的有效性*/

    SendFile(argv[2]);

    else if(*argv[1]==''''R'''')

    ReceiveFile();

    else{

    printf("Error parament.Please input again.");

    exit(1);

    }

    }

    void SendFile(char *fname){

    FILE *fp;

    int ch,s;

    if((fp=fopen(fname,"rb"))==NULL)

    {

    printf("Can''''t open the file.\n");

    exit(1);

    }

    SendFileName(fname);

    do{

    ch=(int)getc(fp);

    if(ferror(fp)){

    printf("Error reading file.\n");

    break;

    }

    s=ch%16; /*取文件中一个字节的低4*/

    Send(s);

    s=ch/16; /*取文件中一个字节的高4*/

    Send(s);

    }while(!feof(fp));

    s=46; /*发送文件结束信息*/

    Send(s);

    Send(s);

    fclose(fp);

    }

    void Send(s)

    int s;

    {

    int G;

    SendPort(PORT,s);

    G=ReadPort(PORT); /*等待握手信号*/

    if(s!=G)

    s=s+16;

    do{

    SendPort(PORT,s);

    G=ReadPort(PORT);/*等待握手信号*/

    }while(s!=G);

    }

    void SendFileName(fname)

    char *fname;

    {

    int s,ch;

    printf("Now transmit the file.Please wait...");

    while(*fname){

    ch=(int)fname++;

    s=ch%16; /*取文件名中一个字节的低4*/

    Send(s);

    s=ch/16;

    Send(s); /*取文件名中一个字节的低4*/

    }

    s=32; /*发送文件名结束标志*/

    Send(s);

    Send(s);

    }

    void ReceiveFile(){

    FILE *fp;

    char ch;

    int G1,G2,G3;

    char fname[15];

    GetFileName(fname);

    printf("Receiving file %s.\n",fname);

    remove(fname);

    if((fp=fopen(fname,"wb"))==NULL)

    {

    printf("Can''''t open output file.\n");

    exit(1);

    }

    /*循环为检测每次接受的数据是否为新数据,如果不是,*/

    /*则用此次接收的数据覆盖上次接收的数据*/

    G1=ReadPort(PORT);

    G2=Receive(PORT,&G1);

    do{

    G3=Receive(PORT,&G2);

    ch=(char)(G1%16+G2*16);/*恢复分开的数据,组合高4位和低4*/

    putc(ch,fp);

    if(ferror(fp)){

    printf("\nError writing file.");

    exit(1);

    }

    G2=Receive(PORT,&G3);

    G1=G3;

    }while(G1/16!=48);

    printf("\nTransmit finished.");

    fclose(fp);

    }

    int Receive(port,G)

    int port,*G;

    {

    int GM;

    SendPort(port,*G);

    GM=ReadPort(port);

    if(GM/16==0)

    return GM;

    else if(GM/16==1){

    do{

    *G=GM;

    SendPort(port,GM);

    GM=ReadPort(port);

    }while(GM/16==1);

    }

    return GM;

    }

    void GetFileName(char *f)

    {

    int G1,G2,G3;

    char ch;

    G1=ReadPort(PORT);

    G2=ReadPort(PORT);

    do{

    G3=Receive(PORT,&G3);

    ch=(char)(G1%16+G2/16);

    *f=ch;

    *f++;

    G2=Receive(PORT,&G3);

    G1=G3;

    }while(G1/16!=32);

    printf("File name transmit finished.\n");

    }

    void InitPort(port,para)

    int port;

    unsigned char para;

    {

    union REGS reg;

    reg.x.dx=port;

    reg.h.ah=0;

    reg.h.al=para;

    int86(0x14,?,?);

    }

    void SendPort(port,c)

    int port;

    char c;

    {

    union REGS reg;

    reg.x.dx=port;

    reg.h.al=c;

    reg.h.ah=1;

    int86(0x14,?,?);

    if(reg.h.ah&128){

    printf("\nSend mistakes!");

    exit(1);

    }

    }

    int ReadPort(port)

    int port;

    {

    union REGS reg;

    while(!(CheckState(port)&256)){

    if(kbhit()){/*如端口长期无数据可人为终止等待*/

    printf("Press any key to exit.");

    getch();

    exit(1);

    }

    }

    reg.x.dx=port;

    reg.h.ah=2;

    int86(0x14,?,?);

    if(reg.h.ah&128){

    printf("\nRead mistake!");

    exit(1);

    }

    return reg.h.al;

    }

    int CheckState(port)

    int port;

    {

    union REGS reg;

    reg.x.dx=port;

    reg.h.ah=3;

    int86(0x14,?,?);

    return reg.x.ax;

    }

    转载于:https://www.cnblogs.com/papam/archive/2009/08/24/1552892.html

    展开全文
  • c语言学生通讯系统

    2017-01-21 17:03:36
    printf("\t\t-----------欢迎进入通讯管理界面-----------\n\n"); printf("\t\t\t0. 输入记录\n"); printf("\t\t\t1. 显示记录\n"); printf("\t\t\t2. 按姓名查找\n"); printf("\t\t\t3. 按电话号码查找\n"); ...
  • 树莓派c语言串口通讯程序

    万次阅读 2014-12-08 23:08:40
    在网上搜了很多关于树莓派串口通讯的例子,但是都是用python写的,虽然python很有名,而且最近也在学习这门语言, 但是还是想用c语言实现一下,因为需要用到整套系统里,其他内容都是用c语言写的。但是网上没有找打...
  • 学生通讯管理系统学生通讯管理系统学生通讯管理系统学生通讯管理系统学生通讯管理系统学生通讯管理系统学生通讯管理系统学生通讯管理系统学生通讯管理系统学生通讯管理系统学生通讯管理系统
  • c语言串行通讯源码

    2008-05-24 09:32:41
    在大部分C编译器上能无错误运行
  • socket即时通讯 c语言编写

    热门讨论 2012-06-05 09:03:59
    socket即时通讯 c语言编写
  • CAN通讯C语言程序

    2015-08-25 18:18:30
    CAN通信C语言程序___《免费下载》.
  • C语言编写通讯管理系统

    千次阅读 2018-06-22 15:43:25
     通讯管理系统    \n"); printf("*********************************************************************\n"); printf("  1:信息录入 \n"); printf("  2:信息浏览 \n"); printf(" ...
  • TCP通讯C语言实现

    2020-02-24 16:50:37
    本资源实现用C语言实现TCP的client和server程序,小伙伴可以通过下载编译运行,实现TCP的网络通讯
  • C语言网络通讯的示例

    2018-04-22 23:14:58
    #include<stdio.h> #include<winsock2.h> #include<stdlib.h> #include<string.h> #pragmacomment(lib,"ws2_32.lib") #include<pthread.h> SOCKETsckt;...struct...
  • C语言实现ADS通讯
  • 将通用链表进行修改优化并使用学生信息管理的实例来使用该通用链表。 编译运行平台:Linux(gcc)内有word文档详细描述。
  • c语言串行通讯库全解

    2008-05-24 09:34:29
    Serial Communications Library for C/C++
  • PIC单片机 的RS485通讯 C语言程序
  • 串行通讯,方式0控制流水灯循环点亮,串行通讯收发数据C语言编程
  • C语言实现管道通讯

    2017-10-14 13:56:00
    mkfifo.c文件 1 #include<sys/types.h> 2 #include<sys/stat.h> 3 #include<stdio.h> 4 #include<errno.h> 5 ... 8 //int mkfifo(const char *pathname,...
  • Linux下C语言串口通讯编程示例

    千次阅读 2020-10-20 14:03:42
    Linux下一切皆文件,读写串口,与读写普通文件本质上来讲是一致的。对于串口的数据读写,大致仍遵循着以下几个步骤: (1)打开文件,获取文件描述符 (2)设置串口的波特率,数据位,校验位,停止位以及其它设置...
  • MODBUS通讯+C语言源代码
  • MODBUS通讯+C语言源代码
  • C语言编写的通讯

    2009-12-07 22:52:10
    C语言编写的通讯簿,能实现联系人的添加、删除和浏览等基本功能
  • IPC通讯中共享内存参看代码: Client端代码client.c ( gcc client.c -lm -o client )  shmget函数得到的共享内存的大小有参数确定,参数的单位是Byte! 同样的shmget参数的0666代表的内容是,共享内存空间...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 1,637
精华内容 654
关键字:

c语言通讯

c语言 订阅