当前位置: 首页 > news >正文

网站都需要续费吗绍兴以往网站招工做

网站都需要续费吗,绍兴以往网站招工做,浙江省国有建设用地使用权建议网站,张家港做网站广告公司基于 C 的 IEC60870-5-104 规约的主从站模拟数据通信。包括了报文的组织和解析,以及主从站之间的通信流程。 1. 报文组织与解析 IEC60870-5-104 规约定义了多种类型的帧,包括 U 帧、S 帧和 I 帧。以下是一些关键的报文组织和解析函数。 1.1 U 帧组织 U 帧…

基于 C++ 的 IEC60870-5-104 规约的主从站模拟数据通信。包括了报文的组织和解析,以及主从站之间的通信流程。

1. 报文组织与解析

IEC60870-5-104 规约定义了多种类型的帧,包括 U 帧、S 帧和 I 帧。以下是一些关键的报文组织和解析函数。

1.1 U 帧组织

U 帧用于控制链路状态,例如启动和停止数据传输。

void buildUFrame(uint8_t* buffer, uint8_t controlByte) {buffer[0] = 0x68; // 启动字节buffer[1] = 0x04; // 长度buffer[2] = controlByte; // 控制字节buffer[3] = 0x00; // 保留字节buffer[4] = 0x00; // 发送序号buffer[5] = 0x00; // 接收序号
}
1.2 S 帧组织

S 帧用于确认接收到的 I 帧。

void buildSFrame(uint8_t* buffer, uint16_t sendSeq, uint16_t recvSeq) {buffer[0] = 0x68; // 启动字节buffer[1] = 0x04; // 长度buffer[2] = 0x01; // 控制字节buffer[3] = 0x00; // 保留字节buffer[4] = sendSeq & 0xFF; // 发送序号buffer[5] = recvSeq & 0xFF; // 接收序号
}
1.3 I 帧组织

I 帧用于传输应用层数据。

void buildIFrame(uint8_t* buffer, uint16_t sendSeq, uint16_t recvSeq, uint8_t* data, uint16_t dataLen) {buffer[0] = 0x68; // 启动字节buffer[1] = dataLen + 6; // 长度buffer[2] = (sendSeq >> 8) & 0xFF; // 发送序号buffer[3] = sendSeq & 0xFF;buffer[4] = (recvSeq >> 8) & 0xFF; // 接收序号buffer[5] = recvSeq & 0xFF;memcpy(buffer + 6, data, dataLen); // 数据
}

2. 主从站通信流程

主站和从站之间的通信流程包括启动链路、数据传输和停止链路。

2.1 主站启动链路

主站发送 STARTDT 帧,从站响应 STARTDT 帧。

void masterStartLink(uint8_t* buffer) {buildUFrame(buffer, 0x07); // STARTDT
}void slaveRespondStartLink(uint8_t* buffer) {buildUFrame(buffer, 0x0B); // STARTDT 确认
}
2.2 主站发送总召唤命令

主站发送总召唤命令,从站响应总召唤命令。

void masterSendTotalCall(uint8_t* buffer) {uint8_t data[] = {0x65, 0x01, 0x06, 0x00, 0x01, 0x00, 0x00, 0x00, 0x45};buildIFrame(buffer, 1, 0, data, sizeof(data));
}void slaveRespondTotalCall(uint8_t* buffer) {uint8_t data[] = {0x65, 0x01, 0x07, 0x00, 0x01, 0x00, 0x00, 0x00, 0x45};buildIFrame(buffer, 1, 1, data, sizeof(data));
}
2.3 主站停止链路

主站发送 STOPDT 帧,从站响应 STOPDT 帧。

void masterStopLink(uint8_t* buffer) {buildUFrame(buffer, 0x13); // STOPDT
}void slaveRespondStopLink(uint8_t* buffer) {buildUFrame(buffer, 0x23); // STOPDT 确认
}

3. 报文解析

解析从站发送的报文,提取数据。

void parseUFrame(uint8_t* buffer) {uint8_t controlByte = buffer[2];if (controlByte == 0x0B) {// 从站确认启动链路} else if (controlByte == 0x23) {// 从站确认停止链路}
}void parseSFrame(uint8_t* buffer) {uint16_t recvSeq = (buffer[4] << 8) | buffer[5];// 处理接收序号
}void parseIFrame(uint8_t* buffer) {uint16_t sendSeq = (buffer[2] << 8) | buffer[3];uint16_t recvSeq = (buffer[4] << 8) | buffer[5];uint16_t dataLen = buffer[1] - 6;uint8_t* data = buffer + 6;// 处理数据
}

4. 主从站模拟

模拟主站和从站之间的通信。

int main() {uint8_t masterBuffer[1024];uint8_t slaveBuffer[1024];// 主站启动链路masterStartLink(masterBuffer);// 从站响应启动链路slaveRespondStartLink(slaveBuffer);// 主站发送总召唤命令masterSendTotalCall(masterBuffer);// 从站响应总召唤命令slaveRespondTotalCall(slaveBuffer);// 主站停止链路masterStopLink(masterBuffer);// 从站响应停止链路slaveRespondStopLink(slaveBuffer);return 0;
}

参考代码 104规约C++实例,主从站模拟数据通信 www.youwenfan/contentcsg/72801.html

通过以上代码,可以实现基于 IEC60870-5-104 规约的主从站模拟数据通信。

http://www.dtcms.com/a/613203.html

相关文章:

  • 做百度网站接到多少客户电话seo蜘蛛屯
  • 山东省住房城乡建设厅查询网站wordpress 执行顺序
  • 建设银行理财产品网站网站开发人员需要什么技能
  • 电子商务网站开发背景及意义什么网站可以兼职做设计
  • 简约 个人网站如何做好产品网络推广
  • 手机软件开发和网站开发成都百度推广效果
  • 中卫网站推广营销广州在线网页制作
  • 大连爱得科技网站建设公司怎么样孩子学编程的利弊
  • 企业网站需要注意什么专业网站建设软件开发
  • 广州网站建设公司万齐网络科技商丘网红排行榜
  • 做食品网站需要什么条件住房城乡与建设厅网站首页
  • 旅行网站建设方案策划书东莞寮步做网站的有吗
  • 网站建设部门宣言php网站开发报告
  • 哈尔滨自助建站系统长春做电商网站的公司
  • 做网站要不要35类商标网站构建免费
  • 校园网站的系统建设wordpress如和安装
  • 建设银行网站用户注册不了江宁区建设工程局网站
  • 站长推荐跳转广州社交软件app开发
  • c 网站开发案例wordpress模板是什么意思
  • 网站资料上传教程游戏广告联盟平台
  • 排名好的网站关键词优化企业网站如何做优化推广
  • 还能电子商务网站建设php网站开发编程软件
  • 网站开发有哪几个阶段百度快速收录3元一条
  • 网站免费网站免费优化优化建站之星模板的使用
  • 关于建设殡葬网站的报告范文wordpress开源吗
  • 网站建设成立领导小组许昌网站制作公司
  • 福建建设职业管理中心网站win7优化极致性能
  • 登录建设厅网站的是企业锁吗wordpress第一篇文章id
  • 网站盈利方式天河建网站的公司
  • 郑州 (网站建设宜昌网站建设设计