• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号
您的位置:首页 > 程序设计 >嵌入式开发 > 这是一USB20接口与PC机进行双向通信的PC机方面的客户端VC++程序,请各大虾解答~~~

这是一USB20接口与PC机进行双向通信的PC机方面的客户端VC++程序,请各大虾解答~~~

作者:佚名 字体:[增加 减小] 来源:互联网 时间:2017-06-05

佚名通过本文主要向大家介绍了这是一USB20接口与PC机进行双向通信的PC机方面的客户端VC++程序,请各大虾解答~~~等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com
问题: 这是一USB20接口与PC机进行双向通信的PC机方面的客户端VC++程序,请各大虾解答~~~
描述:

这是一USB2.0接口与PC机进行双向通信的PC机方面的客户端VC++程序,,实验板上读出的EEPROM中的数据可以通过USB传输到PC机,并可以在PC机端的友好的界面中显示;PC机端通过键盘输入的数据可以通过USB传输到实验板的EEPROM中。可是我对这个程序还不太懂,我不明白它是怎样实现VC++和USB的通信的。好像没用到AxtiveX,也没用CreatFile()..,请各位大虾帮小女子注解一下。。有“//”都是不懂的地方,,万分感谢!!
这个程序对我的毕业设计来说非常重要~~~
define BUFFER_LEN 64     
class CE2PROM_1581Dlg;
typedef struct _THREADPARAM
{
CE2PROM_1581Dlg* testDlg;
unsigned char buffer[BUFFER_LEN];
unsigned char startaddr;
int length;
}THREADPARAM;
void CE2PROM_1581Dlg::OnButtonClearread() 
{
// TODO: Add your control notification handler code here
UpdateData(true);
m_strReadData="";
UpdateData(false);
}
void CE2PROM_1581Dlg::OnButtonRead() 
{
// TODO: Add your control notification handler code here
OnButtonClearread();
UpdateData(true);
if(m_nEditReadLength+m_nEditReadstartAddr>256)
{
MessageBox("所要读取的数据超过E2PROM地址区间,溢出。","错误",MB_OK|MB_ICONSTOP);
return;
}
m_readparam.length=m_nEditReadLength;          //
m_readparam.startaddr=m_nEditReadstartAddr;     //
UpdateData(false);
m_readparam.testDlg=this;                    //
EnableButton(false,false,false,false);       //
CWinThread * wt = AfxBeginThread(             //
BulkReadPipe, // thread function 
&m_readparam); // argument to thread function 
}
void CE2PROM_1581Dlg::OnButtonClearwrite() 
{
// TODO: Add your control notification handler code here
UpdateData(true);
m_strWriteData="";
UpdateData(false);
}
void CE2PROM_1581Dlg::OnButtonWrite() 
{
// TODO: Add your control notification handler code here
char tmp[200];
int len;
UpdateData(true);
len=m_strWriteData.GetLength();       //
if(len>192)             //why 192?
{
MessageBox("所写入的数据过长,每次最多只能写入64个字节的数据。","警告",MB_OK|MB_ICONWARNING);
return;
}
if(len==0)
{
MessageBox("请输入所要写入的数据。","警告",MB_OK|MB_ICONWARNING);
return;
}
if(len%3==1)
{
MessageBox("您所输入的数据格式不对,请检查是否漏掉了空格或有多余的空格或数据的位数不对。","错误",MB_OK|MB_ICONSTOP);
return;
}
len=len/3+!(!(len%3));               //
strcpy(tmp,(LPCTSTR)m_strWriteData);//
if(strtodata((unsigned char*)tmp,m_writeparam.buffer,len)==1)//
{
MessageBox("您所输入的数据格式不对,其中有可能有些不是16进制数。","错误",MB_OK|MB_ICONSTOP);
return;
}
if(len+m_nEditWritestartAddr>256)
{
MessageBox("所要写入的数据超过E2PROM地址区间,溢出。","错误",MB_OK|MB_ICONSTOP);
return;
}
m_writeparam.length=len;
m_writeparam.startaddr=m_nEditWritestartAddr;
UpdateData(false);
m_writeparam.testDlg=this;
EnableButton(false,false,false,false);   //
CWinThread * wt = AfxBeginThread(           //
BulkWritePipe, // thread function 
&m_writeparam); // argument to thread function 
}
void CE2PROM_1581Dlg::EnableButton(bool clearread, bool read, bool clearwrirte, bool write)
{
GetDlgItem(IDC_BUTTON_CLEARREAD)->EnableWindow(clearread);
GetDlgItem(IDC_BUTTON_READ)->EnableWindow(read);
GetDlgItem(IDC_BUTTON_CLEARWRITE)->EnableWindow(clearwrirte);
GetDlgItem(IDC_BUTTON_WRITE)->EnableWindow(write);
}
BOOL CE2PROM_1581Dlg::OnDeviceChange( UINT nEventType, DWORD dwData )
{
Sleep(200);
CheckBoard();
return 0;
}
int CE2PROM_1581Dlg::CheckBoard()
{
m_ControlIn.testDlg=this;
ControlIn((void*)&m_ControlIn);    //
return 0;
}
//-----------------------------------------------------
//参数:
//str:要转换的字符串
//data:储存转换过来的数据串
//len:数据长度
//函数功能:字符串转换为数据串
//-----------------------------------------------------
int CE2PROM_1581Dlg::strtodata(unsigned char *str, unsigned char *data,int len,int flag)
{
unsigned char cTmp=0;
int i=0;
for(int j=0;j<len;j++)
{
if(chartoint(str[i++],&cTmp))        //
return 1;
data[j]=cTmp;
if(chartoint(str[i++],&cTmp))     //
return 1;
data[j]=(data[j]<<4)+cTmp;       //
if(flag==1)
i++;
}
return 0;
}
//-----------------------------------------------------
//参数:
//chr:要转换的字符
//cint:储存转换过来的数据
//函数功能:字符转换为数据
//-----------------------------------------------------
int CE2PROM_1581Dlg::chartoint(unsigned char chr, unsigned char *cint)
{
unsigned char cTmp;
cTmp=chr-48;
if(cTmp>=0&&cTmp<=9)
{
*cint=cTmp;
return 0;
}
cTmp=chr-65;
if(cTmp>=0&&cTmp<=5)
{
*cint=(cTmp+10);
return 0;
}
cTmp=chr-97;
if(cTmp>=0&&cTmp<=5)
{
*cint=(cTmp+10);
return 0;
}
return 1;
}
void CE2PROM_1581Dlg::OnChangeEditReadlength()   //
{
// TODO: If this is a RICHEDIT control, the control will not
// send this notification unless you override the CDialog::OnInitDialog()
// function and call CRichEditCtrl().SetEventMask()
// with the ENM_CHANGE flag ORed into the mask.
// TODO: Add your control notification handler code here
UpdateData(true);
if(m_nEditReadLength<1)
m_nEditReadLength=1;
else if(m_nEditReadLength>64)
m_nEditReadLength=64;
UpdateData(false);
}
void CE2PROM_1581Dlg::OnChangeEditReadstartaddr() 
{
// TODO: If this is a RICHEDIT control, the control will&nbs

分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

  • 这是一USB20接口与PC机进行双向通信的PC机方面的客户端VC++程序,请各大虾解答~~~

相关文章

  • 2017-06-05 关于QT的问题
  • 2017-06-05 PIC18F46K22串口传输问题
  • 2017-06-05 SDRAM数据线,地址线,分别交差可以吗
  • 2017-06-05 请教各位大神WiFi模块选型的问题
  • 2017-06-05 一般的以太网通信的电路与wifi电路的设计有区别吗?
  • 2017-06-05 modbus寄存器数据进制转换问题
  • 2017-06-05 海思hi3521内核解压失败
  • 2017-06-05 求大神:手持式三维扫描仪结构光防抖动算法
  • 2017-06-05 STM32的DFU是否支持APP和IAP的版本?
  • 2017-06-05 ZTEME37604G嵌入式Linux移植

文章分类

  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号

最近更新的内容

    • LWIP+ENC28J60+组播可以接收组播数据,不能发送组播数据,怎么回事?
    • LDC1000在STM32上的问题
    • lua语言写出来的代码,怎么保存?(保存成lua文件)
    • si4432
    • WEB服务器照书上打的程序,有点问题,大家帮我看看吧
    • arm汇编中MCR中的协处理器操作码是做什么的
    • 100分求教USB的IRP中各成员详解?
    • NRF24l01在D:0x00~0x17发送和接收部分看看对不对
    • KNN定位算法的MATLAB程序
    • 光圈优先快门优先域名解析优先级问题

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有