历史上的今天
返回首页

历史上的今天

今天是:2024年12月11日(星期三)

正在发生

2019年12月11日 | ARM USB 通信

2019-12-11 来源:eefocus

采用ZLG的动态链接库,动态装载。


ARM是Context-M3-1343。


在C++ Builder 6 中开发的上位机通信软件。


USB通信代码如下:



//---------------------------------------------------------------------------


#include

#pragma hdrstop


#include "Unit1.h"

//#include "zyUSBDev.h"


//---------------------------------------------------------------------------

#pragma package(smart_init)

#pragma resource "*.dfm"

TForm1 *Form1;

//---------------------------------------------------------------------------

__fastcall TForm1::TForm1(TComponent* Owner)

        : TForm(Owner)

{

}

//---------------------------------------------------------------------------


void __fastcall TForm1::Button1Click(TObject *Sender)

{

    unsigned char sendbuf[1024],recbuf[1024];

    int i;


    unsigned char Inbyte;

    for (i = 0; i < sizeof(sendbuf); i++)

    {

        sendbuf[i] = Inbyte;                     //16进制字节放进发送缓冲区4096字节

        recbuf[i] = 0;                             //清空接收缓冲区

    }


    /*******************  下面开始使用动态库 ***********************/

    int ret;

    AnsiString m_Disp = " china";

    unsigned char cmd[2],ack;

    cmd[0] = sizeof(sendbuf) / 256;                 //需要发送的字节数量的长度的高 8 位

    cmd[1] = sizeof(sendbuf) % 256;                 //                          低 8 位


    HINSTANCE handle;

    FARPROC lpFarProc;

    int __stdcall (*pFun)(int,unsigned char*,int,int);//change


    handle = LoadLibrary("zyUSBDev.dll");

    lpFarProc = GetProcAddress(handle, "zyUSB_ReadData");

    pFun = (int(__stdcall*)(int,unsigned char*,int,int))lpFarProc;  //__cdecl


    //第五步: 用逻辑端点2, 接收来自 USB 设备的大量数据

    ret = pFun(2, recbuf, sizeof(sendbuf), 1000);

    if (ret != sizeof(sendbuf))

    {

        if (ret <= 0)

        {

            m_Disp = "逻辑端点 2 接收数据错误: 未接收到有效数据。";

        }

        else if (ret > 0)

        {

            m_Disp = "逻辑端点 2 接收数据错误: 接收到 部分数据。";

        }


        // MessageBox("逻辑端点 2 接收数据错误");

        return;

    }


    //显示收到的字节

    m_Disp = "";

    int temp = 0;

    temp = recbuf[0] + recbuf[1] * 256;

    m_Disp= IntToStr(temp) + " ";

    for (i = 0; i < sizeof(sendbuf); i++)

        m_Disp = m_Disp + recbuf[i] + " ";


    Memo1->Text = m_Disp;

    FreeLibrary(handle);

}

//---------------------------------------------------------------------------


推荐阅读

史海拾趣

CALMIRCO公司的发展小趣事

CALMIRCO公司自成立以来,一直致力于电子技术的研发与创新。在公司发展初期,CALMIRCO团队便成功研发出一款具有划时代意义的智能芯片,该芯片在性能和稳定性上均达到行业领先水平。这一技术突破不仅为CALMIRCO公司赢得了大量市场份额,更推动了整个电子行业的进步。此后,CALMIRCO公司继续加大研发投入,不断推出创新产品,引领行业变革。

Gespac Inc公司的发展小趣事

随着电子行业的快速发展,市场竞争日益激烈,行业挑战也层出不穷。CALMIRCO公司始终保持敏锐的市场洞察力,积极应对各种挑战。在面对原材料价格波动、国际贸易摩擦等不利因素时,CALMIRCO公司及时调整战略,优化生产流程,降低成本,确保产品的竞争力。同时,公司还不断加大研发投入,推动技术创新和产业升级,以适应不断变化的市场需求。

这五个故事只是CALMIRCO公司在电子行业发展中众多精彩瞬间的缩影。正是这些不懈的努力和持续的创新,使得CALMIRCO公司在激烈的市场竞争中脱颖而出,成为电子行业的佼佼者。

洲光源(Chau Light)公司的发展小趣事

在洲光源公司的发展历程中,创新一直是其前进的动力源泉。公司始终坚持以市场需求为导向,不断进行技术创新和产品升级。通过与高校、科研机构的合作,洲光源成功引进了一批高端人才和先进技术,为公司的发展注入了新的活力。同时,公司还积极参与国家和地方的创新计划项目,不断推动科技创新和产业升级。这些创新举措不仅提升了洲光源公司的市场竞争力,也为公司的持续发展奠定了坚实的基础。

First Sensor公司的发展小趣事

随着技术的不断发展和市场的不断变化,洲光源公司意识到单一的产品线已经无法满足市场的多样化需求。因此,公司开始实施多元化战略,积极拓展新的应用领域和市场。通过与国内外知名企业和研究机构的合作,洲光源成功将红外LED技术应用于汽车电子、医疗电子、生物识别等领域,并取得了显著的成果。这些新的应用领域不仅为洲光源公司带来了更多的商机,也进一步提升了公司的技术实力和品牌影响力。

Anderson Electronics Inc公司的发展小趣事

随着公司规模的扩大和产品线的丰富,Anderson Electronics Inc公司开始积极拓展市场。公司通过与各大电子产品零售商建立合作关系,将产品销往全国各地。同时,公司还加大了品牌宣传力度,通过广告、展会等多种渠道提升品牌知名度和影响力。在市场拓展的过程中,公司始终坚持质量第一的原则,以优质的产品和服务赢得了客户的信赖和支持。

振华(CEC)公司的发展小趣事

为了进一步提升企业的竞争力和市场份额,振华积极实施国际化战略。公司加强与国外企业的合作与交流,积极参与国际市场竞争,通过引进外资、设立海外研发机构等方式,不断拓展海外市场。同时,振华还注重提升产品的国际竞争力,加强与国际标准的对接和认证工作,确保产品能够满足不同国家和地区的市场需求。

问答坊 | AI 解惑

CN3063-专为太阳能供电方案

概述:             CN3063是可以用太阳能电池供电的单节锂电池充电管理芯片.该器件 内部包括功率晶体管,应用时不需要外部的电流检测电阻和阻流二极管.         内 ...…

查看全部问答>

cofdm 无线应急指挥调度系统

cofdm产品   无线应急指挥调度系统…

查看全部问答>

仪表放大器设计指南

本帖最后由 paulhyde 于 2014-9-15 03:59 编辑 仪表放大器设计指南,希望对做仪器仪表的同学有所帮助!  …

查看全部问答>

CAN总线概况与原理

一、概述       对于一般控制,设备间连锁可以通过串行网络完成。因此,BOSCH公司开发了CAN总线(Controller Area Network),并已取得国际标准化组织认证(ISO11898),其总线结构可参照I SO/OSI参考模型。同时,国际上一些大的半导体 ...…

查看全部问答>

网络收音机有人做不?

网络收音机有人做不? 我想玩玩…

查看全部问答>

我在fedora9上的交叉编译

编译embedded flash出现了impossible constraint in `asm\'错误,不知道怎么解决,是修改makefile文件么?…

查看全部问答>

求助t-DMB的音频AAC++负载

本人最近在做T-DMB项目,想问问AAC++方面的!   我现在把SL包解析后获得SL包负载数据是如何组织的?我要对AAC++解码,该如何处理SL包的负载? 有搞过这方面的大侠吗?给点提示,定重谢! 我最想知道到底解析音频SL包后的数据是啥格 ...…

查看全部问答>

Wince 下访问IO端口

项目要通过IO端口通讯数据,本人不会汇编,在网上看到可以嵌入汇编,我的代码如下,每次读上来数据都是0xFF,是哪里有问题吗?第一次用evc通过模拟器显示,也不知如何单步执行,比较痛苦。高手指点。 unsigned char pio_inbyte( WORD addr ) { u ...…

查看全部问答>

求电力 103规约先关的源代码

最近导师要我学习103规约,有谁有做过的实例代码,分享下?先谢谢了。…

查看全部问答>

求助:wince5.0 开发电池充电,并能显示电量充电状态图标?

2440开发板,用电池供电,不能显示电池图标,怎么能显示电池图标,并能显示实时显示电池电量?请各位朋友帮助.万分感激. …

查看全部问答>