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

网站如何做微信支付宝支付设计师图库网站

网站如何做微信支付宝支付,设计师图库网站,建湖住房和城乡建设局网站,网络工程师工作1 概述 Kermit文件运输协议提供了一条从大型计算机下载文件到微机的途径。它已被用于进行公用数据传输。 其特性如下: Kermit文件运输协议是一个半双工的通信协议。它支持7位ASCII字符。数据以可多达96字节长度的可变长度的分组形式传输。对每个被传送分组需要一个确认。Kerm…

1 概述

Kermit文件运输协议提供了一条从大型计算机下载文件到微机的途径。它已被用于进行公用数据传输。
其特性如下:

  • Kermit文件运输协议是一个半双工的通信协议。
  • 它支持7位ASCII字符。
  • 数据以可多达96字节长度的可变长度的分组形式传输。
  • 对每个被传送分组需要一个确认。
  • Kermit文件运输协议在每次会话中可以传送多个文件。

本文利用C++实现Kermit协议,并利用Qt串口类QSerialPort实现数据读写。

2 概要设计

2.1 类图

类图

类型说明:

  • Kermit 实现了Kermit协议。
  • KermitSendFile 实现Kermit协议发送文件。
  • KermitRecvFile 实现Kermit协议接收文件。
  • KermitFileSender 实现在线程中异步发送文件。
  • KermitFileRecver 实现在线程中异步接收文件。

2.3 模块

整个代码分为5个模块.

2.3.1 Kermit

该模块定义和实现了Kermit类型。
Kermit类型是纯虚类型,其派生类需要实现下面三个虚函数:

  • write 向串口写数据
  • read 从串口读数据
  • getc 从串口读取一个字符

文件列表:

  • kermit.h
  • kermit.cpp

2.3.2 KermitSendFile

该模块定义和实现了KermitSendFile类型。
KermitSendFile从Kermit派生,实现类三个读写接口:

  • write
  • read
  • getc

重新实现如下接口:

  • on_ack
  • on_nack
  • on_error

文件列表:

  • kermitsendfile.h
  • kermitsendfile.cpp

2.3.3 KermitRecvFile

该模块定义和实现了KermitRecvFile类型。
KermitRecvFile从Kermit派生,实现类三个读写接口:

  • write
  • read
  • getc

重新实现如下接口:

  • on_init
  • on_data
  • on_break

文件列表:

  • kermitrecvfile.h
  • kermitrecvfile.cpp

2.3.4 KermitFileSender

该模块定义和实现了KermitFileSender类型。
KermitSendFile发送文件是同步操作,KermitFileSender将发送文件操作放入线程中实现异步调用。

文件列表:

  • kermitfilesender.h
  • kermitfilesender.cpp

2.3.5 KermitFileRecver

该模块定义和实现了KermitFileRecver类型。
KermitRecvFile接收文件是同步操作,KermitFileRecver将接收文件操作放入线程中实现异步调用。

文件列表:

  • kermitfilerecver.h
  • kermitfilerecver.cpp

使用

发送文件

void SerialPortWidget::sendFileByKermit(QString const& fileName)
{QObject::disconnect(serial, SIGNAL(readyRead()), this, SLOT(onData()));FileProgressDialog dialog(this);KermitFileSender sender(serial);connect(&sender, &KermitFileSender::gotFileSize, &dialog, &FileProgressDialog::setFileSize);connect(&sender, &KermitFileSender::progressInfo, &dialog, &FileProgressDialog::setProgressInfo);connect(&sender, &KermitFileSender::finished, &dialog, &FileProgressDialog::finished);connect(&sender, &KermitFileSender::error, &dialog, &FileProgressDialog::error);dialog.setTitle(tr("Kermit Send"));dialog.setProtocol("Kermit");dialog.setFilename(QFileInfo(fileName).fileName());dialog.setModal(true);dialog.setVisible(true);sender.start(fileName);while(!dialog.isFinished()){if(dialog.isCancel()){sender.stop();while(!dialog.isFinished())QApplication::processEvents();sender.cancel();}QApplication::processEvents();}connect(serial, SIGNAL(readyRead()), this, SLOT(onData()));
}

接收文件

void SerialPortWidget::recvFileByKermit(QString const& fileName)
{QObject::disconnect(serial, SIGNAL(readyRead()), this, SLOT(onData()));FileProgressDialog dialog(this);KermitFileRecver recver(serial);connect(&recver, &KermitFileRecver::gotFileSize, &dialog, &FileProgressDialog::setFileSize);connect(&recver, &KermitFileRecver::progressInfo, &dialog, &FileProgressDialog::setProgressInfo);connect(&recver, &KermitFileRecver::finished, &dialog, &FileProgressDialog::finished);connect(&recver, &KermitFileRecver::error, &dialog, &FileProgressDialog::error);dialog.setTitle(tr("Kermit Recv"));dialog.setProtocol("Kermit");dialog.setFilename(QFileInfo(fileName).fileName());dialog.setModal(true);dialog.setVisible(true);recver.start(fileName);while(!dialog.isFinished()){if(dialog.isCancel()){recver.stop();while(!dialog.isFinished())QApplication::processEvents();recver.cancel();}QApplication::processEvents();}connect(serial, SIGNAL(readyRead()), this, SLOT(onData()));
}

Qt实现Kermit协议(二)

http://www.yayakq.cn/news/936511/

相关文章:

  • dedecms怎么制作网站网站开发交互原型标注图
  • html5个人网站模板个人网站建设联系
  • 家装网站建设多少钱校园社交网站开发
  • 服装定制网站源码网站开发实验总结
  • 怎么样在网上建设网站挣钱天津市工商网站查询企业信息
  • 做网站gif代码中小网站 广告费
  • 柳州住房和城乡建设局网站建设自己网站软件下载
  • 手机管理网站模板下载安装下载建设网站软件
  • 网站开发与网页设计文网站建设服务费记入什么科目
  • 哪个网站可以做ppt模板广西南宁网站策划
  • 个人网站备案名字怀化网站定制
  • 公司做网站算什么费用微信推广方案范文
  • 图们市建设局网站建设医院网站ppt模板下载
  • wordpress 网站wordpress实时聊天
  • 线上做汉语教师网站网片式防护围栏
  • 做一个网站赚钱吗php工程师
  • 深圳网站建设联雅八零云自助建站免费建站平台
  • 做网站平台公司鹤壁企业网站建设
  • 要加强县门户网站的建设管理科技期刊网站建设
  • 一级域名网站建设wordpress win8 主题下载
  • 注册完域名之后怎么找到网站wordpress register_taxonomy
  • 网站软件开发招聘太原网站建设质量推荐
  • 怎么制作个人网站淄博机关建设网站
  • 有关网站开发的参考文献广州网站建设推广公司
  • 昆明网站托管企业广东省第二中医院官网进入公众号
  • 小程序源码大全肇庆seo排名外包
  • 城乡建设部网站安全员证书查询做网站怎么qq邮箱验证
  • 中铁建设投资集团有限公司招聘网站线上商城运营的主要工作
  • 做网站必须有框架么产品推广的句子
  • 手车做网课网站多少网络销售的方法和技巧