VC++ 6.0 C8051F340 USB PC侧通信 Demo

// HelloWorld.cpp : Defines the entry point for the console application.
//

/***************************************************************************
 *                   VC++ 6.0 C8051F340 USB 通信 Demo
 * 声明:
 *     1. 本程序另外需要C8051F340单片机程序配合;
 *     2. 本程序是在拥有SiUSBXp.h、SiUSBXp.lib、SiUSBXp.dll的基础上做的,
 *         本人目前还并不知道这是从何而来,同事遗留。
 *
 *                                2015-7-11 晴 深圳 南山平山村 增剑锋
 **************************************************************************/

#include "stdafx.h"
#include <windows.h>
#include <time.h>
#include "SiUSBXp.h"
#include <string.h>

int main(int argc, char* argv[])
{
    printf("Hello World!\n");

    HANDLE m_hUSBDevice  = INVALID_HANDLE_VALUE;
    DWORD  dwNumDevices  = 0;

    // 获取系统当前有多少可用设备
    SI_GetNumDevices(&dwNumDevices);
    printf("zengjf debug: dwNumDevices = %d.\n", dwNumDevices);

    // 如果设备数为零,则没必要继续运行
    if(dwNumDevices ==0)
        return -1;

    // 打开第0个可用的设备
    if ( SI_Open(0, &m_hUSBDevice) == SI_SUCCESS)
        printf("zengjf debug: SI_Open USBDevice success.\n");
    else {
        printf("zengjf debug: SI_Open USBDevice fails.\n");
        return -1;
    }

    // 初始化一些要传输的数据和一些将需要的数据
    char    testData[17]  = "zengjf";
    DWORD   hasWritten    = 0;
    DWORD   hasRead       = 0;

    // 将数据写入C8051F340单片机
    if ( SI_Write( m_hUSBDevice, testData, strlen(testData), &hasWritten) == SI_SUCCESS )
        printf("zengjf debug: SI_Write USBDevice success, hasWritten length = %d.\n", hasWritten);
    else {
        printf("zengjf debug: SI_Write USBDevice fails.\n");
        return -1;
    }

    // 睡眠1s,等待数据返回,这里是因为已经在C8051F340单片机内部已经设置了,会返回一串字符
    Sleep(1000);

    // 重新清理掉testData中的数据,为接收数据做准备
    memset(testData, 0, sizeof(testData));

    // 读取单片机内部C8051F340单片机发送回来的数据,单片机只发了16个字符,hasRead中保留真事读取字符个数
    if ( SI_Read( m_hUSBDevice, testData, 20, &hasRead) == SI_SUCCESS ) {
        printf("zengjf debug: SI_Read USBDevice success, hasRead length = %d.\n", hasRead);
        printf("zengjf debug: get data from C8051F340 -- testData[ %s ].\n", testData);
    } else {
        printf("zengjf debug: SI_Read USBDevice fails.\n");
        return -1;
    }

    // 关闭通信连接
    if ( SI_Close(m_hUSBDevice) == SI_SUCCESS )
        printf("zengjf debug: SI_Close USBDevice success.\n");
    else {
        printf("zengjf debug: SI_Close USBDevice fails.\n");
        return -1;
    }

    return 0;
}
时间: 2024-10-27 19:10:37

VC++ 6.0 C8051F340 USB PC侧通信 Demo的相关文章

VC++ 6.0 C8051F340 USB 通信 CAN 数据解析

// HelloWorld.cpp : Defines the entry point for the console application. // /***************************************************************************** * VC++ 6.0 C8051F340 USB 通信 CAN 数据解析 * 声明: * 1. 这是在<VC++ 6.0 C8051F340 USB PC侧通信 Demo>的基础上的代码:

[转]Microsoft Platform SDK 选择及在vc++6.0中的配置

Windows Platform SDK Download Sites: Windows Server 2003 PSDK February 2003 Edition,可以和VC6一起使用.并支持各种目标OS的最后一个版本的SDK. This edition of the SDK supports development for the following platforms: Windows Server 2003 Windows Advanced Server, Limited Editio

Windows平台VC++ 6.0 下的网络编程学习 - 简单的测试winsock.h头文件

最近学习数据结构和算法学得有点累了(貌似也没那么累...)...找了本网络编程翻了翻当做打一个小基础吧,打算一边继续学习数据结构一边也看看网络编程相关的... 简单的第一次尝试,就大致梳理一下看书+自己理解的东西. 1.首先是对Winsock的一点介绍:Winsock是一种标准的API(应用程序编程接口),主要用于网络中的数据通信,它允许两个应用程序在同一台机器上或通过网络相互通信.需要注意的是Winsock和协议无关,使用Winsock编程接口,应用程序可通过普通网络协议如:TCP/IP(网络

PC蓝牙通信C#代码实现

PC蓝牙通信C#代码实现 这篇文章主要为大家详细介绍了PC蓝牙通信C#代码实现,具有一定的参考价值,感兴趣的小伙伴们可以参考一下 本文实例为大家分享了C#实现PC蓝牙通信代码,供大家参考,具体内容如下 添加引用InTheHand.Net.Personal.dll 首先创建一个蓝牙类 class LanYa { public string blueName { get; set; } //l蓝牙名字 public BluetoothAddress blueAddress { get; set; }

VC++6.0同时打开多个窗口

背景: 最近使用VC++6.0做一个界面,供测试CAN通信使用.由于客户希望我们提供简单方便的函数接口让其最快速使用CAN,DLL(动态链接库)是不二之择.做DLL需要两个VC窗口进行测试才方便.可是VC++6.0默认只打开一个窗口,本文即介绍如何同时打开多个窗口. 正文: Xp: 控制面板 ---> 文件夹选项 ---> 文件类型 ---> 找到“DSW” ---> 高级 ---> 编辑 ---> 取消使用DDE即可. Win7: 点击键盘上的"Win&qu

PC-Lint的安装详细配置过程(以VC++6.0环境为例)

本文主要介绍了PC-Lint安装后针对VC++6.0开发环境进行配置的详细过程,总共分为三部分,下面依次对这三部分进行说明. 一.   首先下载PC-Lint,然后开始安装,一路"下一步"直到安装完成.此时会弹出一个对话框,询问你是否进行配置,点击确定,然后进入第二步的配置过程.注意,笔者这里默认将安装路径放在C盘下.读者修改安装路径后需注意这个路径和后续的配置有很大的关系. 二.   接下来就是配置PC-Lint的过程,如图1至图20所示. 图1   PC-Lint配置过程 图2  

VC++使用socket进行TCP、UDP通信实例总结

1.        两台计算机通信需要协议,通信的两台计算机IP必须唯一 2.        同一个计算机可以进行多个应用程序与其他计算机通信,IP地址唯一,而端口号是区别同一计算机(同一IP)的唯一标示. 3.        实际上就类似于一个办公室的总机号码(IP)和分机号码(端口号) 4.        协议:为了进行网络中的数据交换(通信)而建立的规则.标准或约定 5.        协议=语义+语法+规则 6.        不同层具有各自不同的协议 7.        上层使用下层提

vc++6.0快捷键

Ctrl+m+Crtr+o折叠所有大纲 Ctrl+M+Crtr+P: 停止大纲显示 Ctrl+K+Crtr+C: 注释选定内容 Ctrl+K+Crtr+U: 取消选定注释内容 Ctrl+J : 列出成员 智能感知Shift+Alt+Enter: 切换全屏编辑 Ctrl+B,T / Ctrl+K,K: 切换书签开关 Ctrl+B,N / Ctrl+K,N: 移动到下一书签 Ctrl+B,P: 移动到上一书签 Ctrl+B,C: 清除全部标签 Ctrl+I: 渐进式搜索 Ctrl+Shift+I: 

【VC++6.0】成功制作并使用lib库,转载

微软有许多头文件,这些头文件里面定义了许多函数,但是在头文件中你却找不到函数内容的身影,因为函数主体被保存在了lib库中.保存在库中有一个好处,那就是源代码不容易被发现,也就是说其中的一些技术别人不容易学到.废话少说,我们现在就开始制作lib库. 首先,第一步,打开VC++6.0,按Ctrl+N,选择工程选项卡,选中“Win32 Static Library”选项,输入工程名称,我们这里用“Lib库”,大家可以自己选择,至于路径,随便选一个吧,反正这次只是lib的实验. 然后点击“确定”,我们两