在VB中如何从USB口读取数据 在VB中如何从USB口读取数据,谢谢!我是想再把读取上来的数据再进行处理的 。 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 当外设连到主机USB接口时,主机会检测到新硬件,这时需要安装一个可从FTDI公司的网站上免费下载的虚拟串口(VCP)驱动程序,该驱动程序适用于WINDOWS98/2000/ME/XP等不同操作系统。设计者需要完成的是,编写一个针对虚拟串口通信的应用程序,把虚拟串口(VCP)当作一个标准的串口去访问。设计的软件部分可使用VB或VC语言中提供的串口通信MSComm控件进行应用程序编写,下面我们以VC语言为例介绍如何编写应用程序,主要介绍MSComm控件的设置及串口消息事件MSComm.CommEvent响应函数的编写。1)MSComm控件设置:编程时通常把虚拟串口设置为COM3,即将MSComm.SetCommPort置为3, MSComm.SetSettings置为"9600,n,8,1"(该速率为默认设置,实际上VCP驱动程序总是使数据以最快速率传输);通过MSComm.SetPortOpen设置COM3的开关状态;通过MSComm.SetInput和MSComm.SetOutput读入或输出数据。在读取数据时,设置MSComm.Rthreshold的值为1。2)有数据传到PC机时,就立即触发串口消息事件MSComm.CommEvent,自动读取COM3的数据。下面是本文作者编写的应用程序,处理这个串口消息事件的OnComm函数,其完成的是从串口接收数据并显示在一个编辑框中。发送数据则可自动发送或者手动发送,这由用户根据具体情况自己设定。void CAaDlg::OnComm() { VARIANT variant_inp;COleSafeArray safearray_inp;LONG len,k;BYTE rxdata[2048]; //设置BYTE数组 An 8-bit integerthat is not signed.CString strtemp;if(MSComm.GetCommEvent()==2); //事件值为2表示接收缓冲区内有字符{ / /以下可以根据通信协议加入处理代码variant_inp= MSComm.GetInput(); //读缓冲区safearray_inp=variant_inp; //VARIANT型变量转换为ColeSafeArray型变量len=safearray_inp.GetOneDimSize(); //得到有效数据长度for(k=0;k<len;k++)safearray_inp.GetElement(&k,rxdata+k);//转换为BYTE型数组for(k=0;k<len;k++) //将数组转换为Cstring型变量{BYTE bt=*(char*)(rxdata+k); //字符型strtemp.Format("%c",bt); //将字符送入临时变量strtemp存放m_redit+=strtemp; //加入接收编辑框对应字符串 }}UpdateData(FALSE); //更新编辑框内容}试试这个控件能不能读到你所要的数据 呵呵,关键在于USB转串口,明白了 FTDI公司的网站上免费下载的虚拟串口(VCP)驱动程序我已经安装了,但还是不行,能不能用vb的例子具体说说! VB写一个号码组合 VB6.0 中连接加密的Access数据库 类不支持自动化或不支持期望的接口?INTERMER 我在VB中用这些脚本为何无法向Excel中写数据? 换工作,散分 谁能解释一下 在webbrowser中访问有表单的网页怎样选择各种表单的选项 急人的问题 ,datacombo控件的问题?? 简单的问题,参与者都有分 ByVal与ByRef具体如何使用 又来送分 关于recordset中取出乱码出错的问题。急。。
{
VARIANT variant_inp;
COleSafeArray safearray_inp;
LONG len,k;
BYTE rxdata[2048]; //设置BYTE数组 An 8-bit integerthat is not signed.
CString strtemp;
if(MSComm.GetCommEvent()==2); //事件值为2表示接收缓冲区内有字符
{ / /以下可以根据通信协议加入处理代码
variant_inp= MSComm.GetInput(); //读缓冲区
safearray_inp=variant_inp; //VARIANT型变量转换为ColeSafeArray型变量
len=safearray_inp.GetOneDimSize(); //得到有效数据长度
for(k=0;k<len;k++)
safearray_inp.GetElement(&k,rxdata+k);//转换为BYTE型数组
for(k=0;k<len;k++) //将数组转换为Cstring型变量
{
BYTE bt=*(char*)(rxdata+k); //字符型
strtemp.Format("%c",bt); //将字符送入临时变量strtemp存放
m_redit+=strtemp; //加入接收编辑框对应字符串 }
}
UpdateData(FALSE); //更新编辑框内容
}试试这个控件能不能读到你所要的数据
能不能用vb的例子具体说说!