VC++ 6.0 C8051F340 USB PC侧通信 Demo

简介: // HelloWorld.cpp : Defines the entry point for the console application. // /*************************************************************************** * VC++ 6.
// 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;
}

 

目录
相关文章
|
3月前
|
NoSQL 网络协议 Linux
Redis的实现一:c、c++的网络通信编程技术,先实现server和client的通信
本文介绍了使用C/C++进行网络通信编程的基础知识,包括创建socket、设置套接字选项、绑定地址、监听连接以及循环接受和处理客户端请求的基本步骤。
63 6
|
8月前
|
存储 传感器 安全
【串口通信】使用C++和Qt设计和实现串口协议解析器(二)
【串口通信】使用C++和Qt设计和实现串口协议解析器
639 0
|
8月前
|
存储 开发框架 算法
【串口通信】使用C++和Qt设计和实现串口协议解析器(一)
【串口通信】使用C++和Qt设计和实现串口协议解析器
1795 0
|
8月前
|
数据处理 C# C++
如何使用C#和C++结构体实现Socket通信
如何使用C#和C++结构体实现Socket通信
351 0
|
3月前
|
网络协议 Linux 网络性能优化
Linux C/C++之TCP / UDP通信
这篇文章详细介绍了Linux下C/C++语言实现TCP和UDP通信的方法,包括网络基础、通信模型、编程示例以及TCP和UDP的优缺点比较。
67 0
Linux C/C++之TCP / UDP通信
|
6月前
|
前端开发 编译器 程序员
协程问题之为什么 C++20 的协程代码比其他语言的协程 demo 长很多如何解决
协程问题之为什么 C++20 的协程代码比其他语言的协程 demo 长很多如何解决
|
8月前
|
存储 网络协议 数据可视化
C++实现socket通信
了解如何实现socket通信以及TCP连接的过程中发生了什么
114 1
|
7月前
|
数据采集 自然语言处理 数据挖掘
一文搞懂:【VC++技术杂谈005】如何与程控仪器通过GPIB接口进行通信
一文搞懂:【VC++技术杂谈005】如何与程控仪器通过GPIB接口进行通信
189 0
|
8月前
|
消息中间件 算法 Java
C++实时通信优化技术探究
C++实时通信优化技术探究
82 3
|
8月前
|
消息中间件 并行计算 网络协议
探秘高效Linux C/C++项目架构:让进程、线程和通信方式助力你的代码飞跃
探秘高效Linux C/C++项目架构:让进程、线程和通信方式助力你的代码飞跃
179 0