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

网站怎么做购物车外贸自助建站哪个好

网站怎么做购物车,外贸自助建站哪个好,经验范围 网站建设,凡客tv1 概述 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/216659/

相关文章:

  • 百货店怎么做网站送货做网站的软件 知乎
  • 怎么让网站绑定域名html5手机网站开发环境
  • 数据库网站 模板交互网站图
  • 中国建设银行个人网上银行网站苏州优化外包
  • 江阴做网站优化sgs网站开发公司
  • wordpress神秘礼盒插件恩城seo的网站
  • 为什么建设文化馆网站seo诊断书案例
  • 做二手房网站深圳代理记账公司注册
  • 精品课网站制作乐清新闻
  • 深圳做h5网站制作wordpress中文语言
  • 华为云定制建站服务怎么样网站建设合同付款比例
  • 网站分销系统动漫制作专业电脑推荐
  • 专做脚本的网站网站建设收费标准教程
  • 吕梁营销型网站建设费用山西正规网站建设推广
  • 网站上的付费文章怎么做wordpress js代码编辑器
  • 个人网站备案拍照南京网络建站模板
  • 优化网站速度的要点湖北建站管理系统信息
  • 家教网站如何做怎么建公司邮箱
  • h5制作网站开发宁波做网站多少钱
  • 北京公司建站模板网站备案为什么要关闭
  • 如何建立自己的网站?wordpress 新浪主题
  • 网站开发 实战金昌市建设局网站
  • 换空间网站备案中文企业展示网站模板
  • 网站开发的软件支持邯郸广告公司网站建设
  • 网站流量统计表外贸网站有必要吗
  • dlink nas建设网站郑州做网站 艾特
  • 提供专业网站建设动漫网站的建设策划书
  • 如何查看网站流量手机网站报价单模板
  • 网站设计广州营销策略包括哪些方面
  • 个人网站做电影网站百度指数数据分析平台官网