下载 >  课程资源 >  软件测试 > CH374DS1usb串口传输

CH374DS1usb串口传输

CH374 是一个USB总线的通用接口芯片,支持USB-HOST主机方式和USB-DEVICE/SLAVE 设备方式, 内置3 端口HUB 根集线器,支持低速和全速的控制传输、批量传输、中断传输以及同步/等时传输。 在本地端,CH374 具有8 位数据总线和读、写、片选控制线以及中断输出,可以方便地挂接到单片机 /DSP/MCU/MPU等控制器的系统总线上。除此之外,CH374还提供了节约I/O引脚的SPI串行通讯方式, 通过3 线或者4 线SPI 串行接口以及中断输出与单片机/DSP/MCU/MPU 等相连接
2011-11-16 上传大小:217KB
想读
分享
收藏 举报
串口发送接收图片文件

实现了串口收发图片文件功能,传送文件时,将图片文件转为字节形式,再分包传输。

立即下载
串口文件传输软件

串口文件发送/接收系统 2.0 当要求隔离的两个网络之间需要经常性传输一些文件时,使用优盘拷贝费时费力;使用网闸,动辄花费数万至数十万元。 而此时使用“串口文件发送/接收系统”不失为很好的解决方案:串口文件自动发送/接收系统使用的是Zmodem 文件传输协议,虽然速度不快,但不使用任何网络协议,比网闸的隔离通用网络协议功能要彻底。 串口文件发送/接收系统由发送端和接收端两部分组成:支持各类文件的发送,简单易操作。 当采用485较远距离发送文件时,可以在发送框输入文本,将消息发送给另一端,达到沟通作用。 基于c# VS2010.net2.0编辑,简单易懂。 2016年3月31日

立即下载
串口收发程序,可在两台电脑之间进行文件传输

串口收发程序,可在两台电脑之间进行文件传输 采用事件线程驱动,产生收发消息 windows API实现

立即下载
串口通信传输的数据格式

简单描述了串口传输文件的两种格式,对初用串口工具的编程者比较有用!

立即下载
串口传输大文件的方法

电力系统中有许多装置,要求产生文件报告。如故障录波装置产生故障录波报告,电力微机保护装置产生动作报告和录波报告等。这些装置产生的报告一般不象事件顺序记录(SOE)那样只几个或几十个字节,而是几百个到几万个字节组成的大文件,这些文件记录故障或动作时的全过程,而非单个模拟量数值或遥信量变位时间。 将这些文件传送到中心站或分析站进行统一数据分析处理,将对故障分析有很大帮助。本文介绍一种基于串口的大文件传输方法,可自动将发送方产生的报告文件自动传送到远程的接收方。

立即下载
串口调试助手 大文件传输

LONG CSCOMMDlg::OnCommunication(WPARAM ch, LPARAM port) { g_ucRecvBuf[g_ulRecvLen++]=UCHAR(ch); if(g_ulRecvLen>=51) { memcpy(&g_ADData,g_ucRecvBuf,51); //return 1; } // return 1; if(g_ulRecvLen<4) return 1; //1表示接收数据长度不够 ULONG ulCheckSum =0; CMDHEADER header; header = *((CMDHEADER *)g_ucRecvBuf); //如果不相等,将Buffer中的每个数据前移动一个位置 if(CMD_SYN_WORD!= header.ulSyncWord) { memmove(g_ucRecvBuf,g_ucRecvBuf+1,3); return 2;//2表示没有接收到同步字 } if(g_ulRecvLen<sizeof(CMDHEADER)) return 3; //3表示没有接收到帧头 CString strTemp; CString strFileName; char szFilePath[MAX_PATH]={0}; switch(header.cmdType) { case CMD_FILEINFO://文件信息(包括名称,大小)命令 if(g_ulRecvLen<header.ulPackLen) return 4; //没有收到完整的文件信息命令 if(g_ulRecvLen==(sizeof(CMDHEADER)+header.ulPackLen)) { FILEINFO fileInfo; fileInfo=*((FILEINFO *)g_ucRecvBuf); ulCheckSum = CheckSum(fileInfo.ucFileName,fileInfo.ulFileNameLen) +fileInfo.lFileLen; if(ulCheckSum!=fileInfo.ulCheckSum) { fileInfo.header.cmdState = CMD_STATE_ERROR; g_lErrorPackNum++; //strTemp.Format("%d",g_lErrorPackNum); } else { fileInfo.header.cmdState = CMD_STATE_OK; //增加接收文件的计时功能 memset(&g_tRecvBegin,0,sizeof(time_t)); time(&g_tRecvBegin); m_bRecvFileIsBegin = TRUE; } m_nCurFileRecvLen=0; m_nFileRecvLen = fileInfo.lFileLen; //文件长度 fileInfo.header.cmdType =CMD_FILEINFO_RESP; m_Port.WriteToPort((char*)&fileInfo.header,sizeof(CMDHEADER)); memcpy(szFilePath,fileInfo.ucFileName,fileInfo.ulFileNameLen); strFileName.Format("%s",szFilePath); m_strCurFilePath= m_strSaveFileDir+strFileName; if(NULL!=g_file.m_hFile) g_file.Close(); g_file.Open(m_strCurFilePath,CFile::modeCreate|CFile::modeReadWrite); TRACE("1,RECV FILEINFO CMD,File Name = %s,g_ulRecvLen = %d\n", fileInfo.ucFileName,g_ulRecvLen); // if(m_nFileRecvLen<1024*1024) // { // strTemp.Format("%0.3fKB",m_nFileRecvLen/1024.0); // } // else if(m_nFileRecvLen>1024*1024) // { // strTemp.Format("%0.3fKB",m_nFileRecvLen/1024.0/1024.0); // } // //显示"传输总耗时" // const ULONG ulFrameBytes = g_nBaud/10 -(sizeof(CMDHEADER)+4); // long lComm_TimeSum = m_nFileRecvLen/ulFrameBytes; // //传输总耗时间,单位:秒 // // WORD wHour =0; // WORD wMinute =0; // WORD wSecond =0; // // wSecond = lComm_TimeSum%60; // wMinute = lComm_TimeSum/60%60; // wHour = lComm_TimeSum/60/60%60; // // if((0==wSecond)&&(0==wMinute)&&(0==wHour)) // wSecond =1; // strTemp.Format("%02d:%02d:%02d",wHour,wMinute,wSecond); g_ulRecvLen =0; } break; case CMD_FILEDATA: //发送文件中数据的命令 if(g_ulRecvLen<header.ulPackLen) return 5;//没有收到完整的文件数据帧命令 if(g_ulRecvLen == (sizeof(CMDHEADER)+header.ulPackLen)) { FILEDATA fileData; fileData = *((FILEDATA *)g_ucRecvBuf); fileData.pucBuf = new UCHAR[fileData.header.ulPackLen-4]; memset(fileData.pucBuf,0,fileData.header.ulPackLen-4); memcpy(fileData.pucBuf,g_ucRecvBuf+sizeof(CMDHEADER)+4,fileData.header.ulPackLen-4); ulCheckSum=CheckSum(fileData.pucBuf, fileData.header.ulPackLen-4); if(ulCheckSum!= fileData.ulCheckSum) { fileData.header.cmdState =CMD_STATE_ERROR; g_lErrorPackNum++; strTemp.Format("%d",g_lErrorPackNum); //m_editErrorFrames } else fileData.header.cmdState =CMD_STATE_OK; fileData.header.cmdType = CMD_FILEDATA_RESP; g_file.Write(fileData.pucBuf,fileData.header.ulPackLen-4); //fileData.header.ulPackLen-4, DELETE_ARRAYOBJS(fileData.pucBuf); g_ulRecvLen=0; m_Port.WriteToPort((char*)&fileData.header,sizeof(CMDHEADER)); m_nCurFileRecvLen+=fileData.header.ulPackLen-4; strTemp.Format("%0.2f",(float)m_nCurFileRecvLen/(float)m_nFileRecvLen*100); strTemp+=_T("%"); float step = (float)m_nCurFileRecvLen/(float)m_nFileRecvLen*100; // m_progress.SetPos((int)step); /*if(m_nFileRecvLen<1024*1024) { strTemp.Format("%0.3fKB",m_nFileRecvLen/1024.0); } else if(m_nFileRecvLen>1024*1024) { strTemp.Format("%0.3fKB",m_nFileRecvLen/1024.0/1024.0); }*/ } break; case CMD_FILEEOF://文件发送结束命令 if(g_ulRecvLen<header.ulPackLen) return 6;//没有发到完整的文件发送结束命令 if(g_ulRecvLen == (sizeof(CMDHEADER)+header.ulPackLen)) { FILEEOF fileEOF; fileEOF= *((FILEEOF *)g_ucRecvBuf); fileEOF.pucBuf = new UCHAR[fileEOF.header.ulPackLen-4]; memset(fileEOF.pucBuf,0,fileEOF.header.ulPackLen-4); memcpy(fileEOF.pucBuf,g_ucRecvBuf+sizeof(CMDHEADER)+4,fileEOF.header.ulPackLen-4); ulCheckSum = CheckSum(fileEOF.pucBuf,fileEOF.header.ulPackLen-4); if(ulCheckSum!=fileEOF.ulCheckSum) { fileEOF.header.cmdState=CMD_STATE_ERROR; g_lErrorPackNum++; strTemp.Format("%d",g_lErrorPackNum); } else { fileEOF.header.cmdState =CMD_STATE_OK; m_bRecvFileIsBegin = FALSE;//接收文件完成,停止显示时间 } fileEOF.header.cmdType =CMD_FILEEOF_RESP; g_file.Write(fileEOF.pucBuf,fileEOF.header.ulPackLen-4); g_file.Close(); //解决大文件发送时,第二个文件打开错误原因是没“置0”原因 g_file.m_hFile=NULL; DELETE_ARRAYOBJS(fileEOF.pucBuf); g_ulRecvLen=0; m_Port.WriteToPort((char*)&fileEOF.header,sizeof(CMDHEADER)); m_nCurFileRecvLen += fileEOF.header.ulPackLen-4; if(m_nFileRecvLen<=0) { strTemp=_T("0%"); } else { strTemp.Format("%0.2f", (float)m_nCurFileRecvLen/(float)m_nFileRecvLen*100); strTemp+=_T("%"); } if(m_nFileRecvLen<1024*1024) { strTemp.Format("%0.3fKB",m_nFileRecvLen/1024.0); } else if(m_nFileRecvLen>1024*1024) { strTemp.Format("%0.3fKB",m_nFileRecvLen/1024.0/1024.0); } } break; //=================处理接收端的响应信息 begin 信息头================= case CMD_FILEINFO_RESP://发送文件信息命令后,发到接收端的响应信息 if(CMD_STATE_OK==header.cmdState) { m_bFileInfoIsOK = TRUE; g_ulRecvLen = 0; g_bIsRecvData = TRUE; } else if(CMD_STATE_ERROR==header.cmdState) { m_bFileInfoIsOK = FALSE; g_ulRecvLen=0; SendFileInfo(); } break; //=================处理接收端的响应信息 文件数据================= case CMD_FILEDATA_RESP://发送文件体命令后,发到接收端的响应信息 if(CMD_STATE_OK==header.cmdState) m_bFileDataIsOK = TRUE; else if(CMD_STATE_ERROR==header.cmdState) m_bFileDataIsOK = FALSE; g_ulRecvLen =0; g_bIsRecvData = TRUE; break; //=================处理接收端的响应信息 文件结尾================= case CMD_FILEEOF_RESP://发送文件尾命令后,发到接收端的响应信息 if(CMD_STATE_OK==header.cmdState) { m_bFileEOFIsOK = TRUE; g_bFileSendEnd = TRUE; } else if (CMD_STATE_ERROR == header.cmdState) { m_bFileEOFIsOK = FALSE; m_bSendFileIsBegin = FALSE; } g_ulRecvLen = 0; g_bIsRecvData = TRUE; break; //====================默认处理================= default:break; } //设置信号量 SetEvent(m_hRecvMsgEvent); return 0; //返回0表示正确 }

立即下载
Qt串口传输图片

使用方法详见博客:http://blog.csdn.net/caoshangpa/article/details/50915005

立即下载
串口传输软件 RS232COM

串口传输软件 以前做了一个 只是简单的把DOS中的一个程序移植到WINDOWS中来。但这一个绝非简单的移植!

立即下载
串口调试助手(传送图片和文本文件)

把图片转换成串口能识别的编码,通过串过传输图片,此外此串口调试有一般串口助手的功能开发者多百多度547170882

立即下载
串口发送接受文件工具

当要求隔离的两个网络之间需要经常性传输一些文件时,使用优盘拷贝费时费力;使用网闸,动辄花费数万至数十万元。 而此时使用“串口文件自动发送/接收系统”不失为很好的解决方案:串口文件自动发送/接收系统使用的是Zmodem 文件传输协议,虽然速度不快,但不使用任何网络协议,比网闸的隔离通用网络协议功能要彻底。 串口文件自动发送/接收系统由发送端和接收端两部分组成:发送端可设置需要传输的文件夹和文件类型,支持定时检测, 当发现新增文件或当文件长度、创建时间发生变化时,都会自动地通过串口发送到接收端;接收端处在自动接收状态, 收到文件时会自动存到指定的文件夹中。 ComSend.exe 是发送端软件,ComReceive.exe 是接收端软件,均为绿色软件。 串口文件自动发送/接收系统与超级终端中的Zmodem文件收发功能保持兼容。

立即下载
MFC选择并通过串口传输文件

该代码包含有串口库,弹出一个窗口选择文件,并打开串口传输文件

立即下载
C语言 串口传输文件(ARM板间的传输

本程序经过实际运行,可以实现ARM开发板间的文本文件传输。两个程序:发送端:s.c,接收端r.c两个程序文件。是一个不错的例程,分有所值!

立即下载
华中数控串口通讯软件V1.2.exe

华中数控串口通讯软件,用于华中数控系统串口数据传输,可进行PC与机床间的数据传送

立即下载
C#串口下载烧写bin文件

C#串口下载烧写bin文件

立即下载
串口文件传送工具

>>========================================<< >> 首先你要先打开串口,再选择要保存文件 << >> 的文件路径、文件名和文件扩展名,点击 << >> <<接收文件>>就可以接收对方发过来文件 << >>========================================<<

立即下载
串口UART1主程序

lpc1768串口传输,串口测试

立即下载
LINUX串口文件传输

串口文件传输,数据帧格式:0xAA+0xAA+序号+数据长度+50字节数据+校验和。支持错误重传。 用法: 发: ./test /devttyUSB0 0 a.txt 收: ./test /devttyUSB1 1 b.txt a.txt为要发送的文件,b.txt为保存的文件 test程序名称 0代表发送,1是接收

立即下载
CC2530串口0DMA传输实验

板子:网蜂开发板CC2530, 内容:用DMA通道0来实现DMA串口0的DMA传输功能。 例程解析:http://blog.csdn.net/u012993936/article/details/48210293

立即下载
串口调试-可通过串口发送接收文件

基于MFC利用CSerialPort类自己写的串口小程序,可以发送文件;接收文件的程序是在《Visual C++/Turbo C串口通信编程实践》(第二版-龚建伟)一书中的“串口调试助手”源码的基础上改写的,文件默认保存于D:\RcvData.dat。 协议是:数据包的组成为:包头为一个字节(0xFF),接下来为一个字节的包长(200,可改变),接下来一个字节为包长的补码(256-200=56),接下来为200个字节的有效数据,接下来为两个字节的效验和。发送程序发送完一个数据包后等待接收程序的响应,如接收正确则发送下一个数据包,否则重发。接收程序接收到0xFF认为数据包开始,然后再累加接下来接收到的两个字节如其和为256则认为接收正确,然后累加接收到的200个有效字节,然后将其与接收到的效验和相比较,如相等则接收正确,向发送程序发送接收正确的响应,否则发送接收错误的响应。 感觉“雪莉蓝串口调试助手”中发送的十六进制输入时的输入模式比较好,打算自己效仿,由于没有源码,只能慢慢百度,于是花了一天,过程比较烦,中间也想过放弃算了,但还好最后实现了,happy一下。

立即下载
利用串口通信解决内外网物理隔离的数据交换方案V1.0

内外网物理隔离的情况下,如何“安全”的进行自动化数据交换,除了“网闸”还有一个奇葩的方法就是通过“串口”,小篆本文以供娱乐。

立即下载
关闭
img

spring mvc+mybatis+mysql+maven+bootstrap 整合实现增删查改简单实例.zip

资源所需积分/C币 当前拥有积分 当前拥有C币
5 0 0
点击完成任务获取下载码
输入下载码
为了良好体验,不建议使用迅雷下载
img

CH374DS1usb串口传输

会员到期时间: 剩余下载个数: 剩余C币: 剩余积分:0
为了良好体验,不建议使用迅雷下载
VIP下载
您今日下载次数已达上限(为了良好下载体验及使用,每位用户24小时之内最多可下载20个资源)

积分不足!

资源所需积分/C币 当前拥有积分
您可以选择
开通VIP
4000万
程序员的必选
600万
绿色安全资源
现在开通
立省522元
或者
购买C币兑换积分 C币抽奖
img

资源所需积分/C币 当前拥有积分 当前拥有C币
5 4 45
为了良好体验,不建议使用迅雷下载
确认下载
img

资源所需积分/C币 当前拥有积分 当前拥有C币
5 0 0
为了良好体验,不建议使用迅雷下载
VIP和C币套餐优惠
img

资源所需积分/C币 当前拥有积分 当前拥有C币
5 4 45
您的积分不足,将扣除 10 C币
为了良好体验,不建议使用迅雷下载
确认下载
下载
您还未下载过该资源
无法举报自己的资源

兑换成功

你当前的下载分为234开始下载资源
你还不是VIP会员
开通VIP会员权限,免积分下载
立即开通

你下载资源过于频繁,请输入验证码

您因违反CSDN下载频道规则而被锁定帐户,如有疑问,请联络:webmaster@csdn.net!

举报

若举报审核通过,可返还被扣除的积分

  • 举报人:
  • 被举报人:
  • *类型:
    • *投诉人姓名:
    • *投诉人联系方式:
    • *版权证明:
  • *详细原因: