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-08-12 12:25:18

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>的基础上的代码:

VC++ 6.0 C8051F340 MFC programming note

/************************************************************************************** * VC++ 6.0 C8051F340 MFC programming note * 声明: * 本文主要在使用VC++ 6.0 MFC的时候,对一些之前不知道的东西进行记录. * * 2015-10-16 晴 深圳 南山平山村 曾剑锋 ******************************************

c8051单片机-c8051f340如何通过usb与电脑通信?

问题描述 c8051f340如何通过usb与电脑通信? 如题.c8051f340自带usb,是不是只要自己做一个usb母头就可以直接连接到pc了?请高手出山详解- 解决方案 C8051F340的USBXpress开发包USB通信设计c8051f交叉开关

pc作为服务端,android端作为客户端,如何通过USB进行socket通信。

问题描述 pc作为服务端,android端作为客户端,如何通过USB进行socket通信. pc作为服务端,android端作为客户端,如何通过USB进行socket通信. 大概思路是什么

linux-Android usb和PC进行通信

问题描述 Android usb和PC进行通信 请问有谁用Linux 写一些代码,来实现Android usb通信,我使用libusb库,参考里面的代码,可一直通信不了,有人做过吗?PC端代码和手机端代码 解决方案 使用socket,先用adb forward把pc端口映射到设备上去.然后设备作为server监听,pc做client请求连接.自定义命令协议,我在windows下写过. 解决方案二: 我认为你是想在android设备和pc之间传递一些文件.一个简单的方法是通过使用adb接口来实现.

mini2440与pc串口通信问题

问题描述 mini2440与pc串口通信问题 下面的代码用来接收pc发送的数据并且打印,大神能看看问题在哪里吗?用的USB转串口线连接的: 代码: /****************** Name:uart.c Author:xiaohu Date:2015/3/7 Descript:communicate by uart ********************/ #include #include #include #include #include #include #include #i

在VC++ 6.0下利用消息实现内部进程通讯

内部进程间通讯和数据交换有多种方式:消息.共享内存.匿名(命名)管道 .邮槽.Windows套接字等多种技术.其中利用消息机制实现IPC虽然同其他方法 相比有交换的数据量小.携带的信息少等缺点,但由于其实现方便.应用灵活而 广泛应用于无须大量.频繁数据交换的内部进程通讯系统之中,尤其是对于在上 层主控软件与底层工作软件之间的命令与响应上更能充分显示其良好的性能.本文就通过编制一个主控软件和一个受其操作的底层工作软件来阐述如何用VC++6.0 通过消息来实现内部进程通信. 一.Windows消息机

用VC 6.0实现串行通信的三种方法

摘要:本文介绍了在Windows平台下串行通信的实现机制,讨论了根据不同的条件用Visual C++ 设计串行通信程序的三种方法,并结合实际,实现对温度数据的接收监控. ---- 在实验室和工业应用中,串口是常用的计算机与外部串行设备之间的数据传输通道,由于串行通信方便易行,所以应用广泛.依据不同的条件实现对串口的灵活编程控制是我们所需要的. ---- 在光学镜片镀膜工艺中,用单片机进行多路温度数据采集控制,采集结果以串行方式进入主机,每隔10S向主机发送一次采样数据,主机向单片机发送相关的控制

《C语言课程设计》一1.1 VC 6.0简介

1.1 VC 6.0简介 Visual C++ 6.0是Microsoft公司推出的开发Win32程序的集成开发环境,可将"高级语言"翻译为"机器语言(低级语言)",并支持面向对象可视化编程.它具有程序框架自动生成.灵活方便的类管理.代码编写和界面设计集成交互操作.可开发多种程序等优点,而且通过简单的设置即可使其生成的程序框架支持数据库接口.OLE和WinSock网络. Visual C++ 6.0, 简称VC 6.0或VC 6,是微软公司于1998年推出的Visu