signal.c

该代码示例展示了一个C程序,它创建一个socket连接到特定IP地址和端口,然后周期性地发送两个特定的信号(rountine_active和daig_msg)。程序使用usleep函数在信号之间插入延迟,并读取服务器的响应。如果发生写入或读取错误,程序将关闭连接并退出。
摘要由CSDN通过智能技术生成

/**
  * Copyright (c) 2018-2022 ThunderSoft
  * All Rights Reserved by Thunder Software Technology Co., Ltd and its affiliates.
  * You may not use, copy, distribute, modify, transmit in any form this file
  * except in compliance with ThunderSoft in writing by applicable law.
  *
  */
 /**
  * @file    signal.c
  * @brief   Send a signal to time.c
  * @details Send ignition and flameout signal
  * @version 1.0
  * @author  zhanglonghuai
  * @date    2022-01-13
  *
  * Edit History
  * ----------------------------------------------------------------------------
  * DATE                     NAME               DESCRIPTION
  * 2022-01-25               zhanglonghuai      Create it.
  *
  */

#include "time.h"
#include "log.h"

int main()
{
  int ret;
  char sign;
    ssize_t ret_read,ret_write;
    struct sockaddr_in serveraddr;
    char buffer[100] = {0x00, };
    char rountine_active[15] = {    0x02,                    
                    0xfd,                    
                    0x00,0x05,                
                    0x00,0x00,0x00,0x07,    
                    0x0e,0x81,                
                    0x00,                    
                    0x00,0x00,0x00,0x00};
    char daig_msg[15] =  {    0x02,                    
                0xfd,
                0x80,0x01,
                0x00,0x00,0x00,0x07,    
                0x0e,0x81,            
                0x10,0x02,
                0x22,0xf1,0x86};
    int sockfd = socket(AF_INET,SOCK_STREAM,0);
    if(sockfd<0)
    {
        perror("socket");
        exit(-1);
    }
    
    bzero(&serveraddr,sizeof(serveraddr));
    serveraddr.sin_family = AF_INET;
    serveraddr.sin_port = htons(13400);
    serveraddr.sin_addr.s_addr = inet_addr("10.208.0.2");
    ret = connect(sockfd,(struct sockaddr*)&serveraddr,sizeof(serveraddr));

    if(ret < 0)
    {
        perror("connect");
        close(sockfd);
        exit(-1);
    }

    while(1)
    {
        bzero(buffer,sizeof(buffer));
        usleep(200000);
        ret_write = write(sockfd,rountine_active,sizeof(rountine_active));
        if(ret_write < 0) {
            perror("write error");
            close(sockfd);
            exit(-1);
        }

        usleep(200000);
        ret_write = write(sockfd,daig_msg,sizeof(daig_msg));
        if(ret_write < 0) {
            perror("write error");
            close(sockfd);
            exit(-1);
        }

        ret_read = read(sockfd,buffer,sizeof(buffer));
        if(ret_read<=0)
        {
            perror("read");
            close(sockfd);
            exit(-1);
        }
        printf("rd: %02X \r\n",buffer);
    }

    return 0;
}
 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值